From 2fb70e8eec6abc35d52df508238c70598579df8f Mon Sep 17 00:00:00 2001 From: Jan Zerebecki Date: Sat, 31 May 2008 15:23:53 +0200 Subject: [PATCH] push 9fcdc0d7acf404e32ebbdf911b92222c6b0dee73 --- ANNOUNCE | 761 +++++-------- ChangeLog | 677 ++++++++++++ VERSION | 2 +- configure | 81 +- configure.ac | 11 - dlls/Maketest.rules.in | 4 +- dlls/advapi32/service.c | 4 +- dlls/advpack/advpack.c | 10 +- dlls/advpack/tests/advpack.c | 57 + dlls/avifil32/avifile_Cs.rc | 22 +- dlls/avifil32/avifile_Da.rc | 18 +- dlls/avifil32/avifile_De.rc | 22 +- dlls/avifil32/avifile_En.rc | 22 +- dlls/avifil32/avifile_Es.rc | 22 +- dlls/avifil32/avifile_Fr.rc | 22 +- dlls/avifil32/avifile_Hu.rc | 22 +- dlls/avifil32/avifile_It.rc | 22 +- dlls/avifil32/avifile_Ja.rc | 22 +- dlls/avifil32/avifile_Ko.rc | 22 +- dlls/avifil32/avifile_Nl.rc | 22 +- dlls/avifil32/avifile_No.rc | 22 +- dlls/avifil32/avifile_Pl.rc | 22 +- dlls/avifil32/avifile_Pt.rc | 44 +- dlls/avifil32/avifile_Ru.rc | 22 +- dlls/avifil32/avifile_Si.rc | 22 +- dlls/avifil32/avifile_Sv.rc | 22 +- dlls/avifil32/avifile_Tr.rc | 22 +- dlls/comctl32/tests/listview.c | 2 +- dlls/comdlg32/cdlg_Ca.rc | 18 +- dlls/comdlg32/cdlg_El.rc | 1 + dlls/comdlg32/cdlg_En.rc | 6 +- dlls/comdlg32/cdlg_Eo.rc | 2 +- dlls/comdlg32/cdlg_Hu.rc | 20 +- dlls/comdlg32/cdlg_Ja.rc | 5 + dlls/comdlg32/cdlg_Th.rc | 7 +- dlls/comdlg32/cdlg_Uk.rc | 2 +- dlls/comdlg32/cdlg_Wa.rc | 2 +- dlls/crypt32/cert.c | 2 +- dlls/crypt32/encode.c | 15 +- dlls/crypt32/tests/cert.c | 5 + dlls/crypt32/tests/encode.c | 30 + dlls/d3d8/tests/visual.c | 158 ++- dlls/d3d9/tests/device.c | 24 + dlls/d3d9/tests/visual.c | 169 ++- dlls/dbghelp/dwarf.c | 2 +- dlls/dbghelp/module.c | 7 +- dlls/ddraw/ddraw.c | 61 ++ dlls/ddraw/tests/d3d.c | 4 + dlls/ddraw/tests/ddrawmodes.c | 2 +- dlls/ddraw/texture.c | 5 + dlls/dinput/keyboard.c | 6 +- dlls/dinput/tests/keyboard.c | 11 +- dlls/dsound/capture.c | 6 + dlls/dxdiagn/container.c | 11 +- dlls/fusion/assembly.c | 13 +- dlls/fusion/tests/asmcache.c | 3 +- dlls/gdi32/enhmetafile.c | 89 +- dlls/gdi32/enhmfdrv/graphics.c | 8 + dlls/gdi32/metafile.c | 19 +- dlls/gdi32/tests/bitmap.c | 3 +- dlls/gdi32/tests/metafile.c | 51 +- dlls/kernel32/tests/sync.c | 23 +- dlls/kernel32/tests/toolhelp.c | 8 - dlls/msftedit/msftedit_main.c | 6 + dlls/mshtml/Fi.rc | 2 + dlls/mshtml/Hu.rc | 2 + dlls/mshtml/htmldoc.c | 6 +- dlls/mshtml/htmlwindow.c | 2 +- dlls/mshtml/task.c | 25 + dlls/mshtml/tests/htmldoc.c | 46 +- dlls/msi/action.c | 2 +- dlls/msi/automation.c | 2 +- dlls/msi/database.c | 2 +- dlls/msvcrt/console.c | 52 +- dlls/msvcrt/tests/Makefile.in | 3 +- dlls/msvcrt/tests/cpp.c | 10 +- dlls/msvcrt/tests/file.c | 4 +- dlls/msvcrt/tests/printf.c | 11 +- dlls/msvcrt/tests/string.c | 9 +- dlls/msvcrt/wcs.c | 14 +- dlls/msvcrtd/tests/Makefile.in | 3 +- dlls/msxml3/tests/domdoc.c | 6 +- dlls/netapi32/tests/access.c | 11 +- dlls/ole32/tests/compobj.c | 4 +- dlls/oleaut32/tests/olefont.c | 15 +- dlls/oleaut32/tests/vartype.c | 72 +- dlls/oleaut32/vartype.c | 2 +- dlls/opengl32/tests/opengl.c | 37 + dlls/rpcrt4/tests/rpc.c | 4 + dlls/setupapi/tests/devinst.c | 305 +++++- dlls/shell32/classes.c | 2 +- dlls/shell32/shell32_Bg.rc | 18 +- dlls/shell32/shell32_Ca.rc | 8 +- dlls/shell32/shell32_Cn.rc | 12 +- dlls/shell32/shell32_De.rc | 57 +- dlls/shell32/shell32_En.rc | 2 +- dlls/shell32/shell32_Eo.rc | 34 +- dlls/shell32/shell32_Fi.rc | 19 +- dlls/shell32/shell32_Hu.rc | 12 +- dlls/shell32/shell32_Ja.rc | 65 +- dlls/shell32/shell32_Sk.rc | 14 +- dlls/shell32/shell32_Uk.rc | 21 +- dlls/shell32/shell32_Wa.rc | 12 +- dlls/shell32/shell32_Zh.rc | 12 +- dlls/shell32/tests/shelllink.c | 17 +- dlls/user32/menu.c | 5 +- dlls/user32/painting.c | 9 - dlls/user32/resources/user32_Zh.rc | 8 +- dlls/user32/tests/cursoricon.c | 16 +- dlls/user32/tests/msg.c | 4 +- dlls/user32/tests/sysparams.c | 10 +- dlls/user32/tests/win.c | 114 +- dlls/user32/user32.spec | 2 +- dlls/user32/win.c | 43 +- dlls/usp10/tests/usp10.c | 73 +- dlls/wined3d/utils.c | 19 +- dlls/winex11.drv/ime.c | 2 +- dlls/winex11.drv/init.c | 1 + dlls/winex11.drv/opengl.c | 196 ++-- dlls/winex11.drv/window.c | 27 +- dlls/winex11.drv/wintab.c | 6 +- dlls/winex11.drv/x11drv.h | 2 + dlls/winex11.drv/x11drv_main.c | 4 - dlls/wininet/internet.c | 5 +- dlls/winmm/tests/capture.c | 3 +- dlls/ws2_32/socket.c | 42 +- dlls/ws2_32/tests/sock.c | 46 + fonts/tahomabd.sfd | 2098 +++++++++++++++++++++++++++++++++++- fonts/tahomabd.ttf | Bin 62804 -> 75296 bytes include/config.h.in | 3 - include/dbt.h | 6 +- include/docobj.idl | 14 +- include/dxdiag.h | 2 +- include/mapidefs.h | 2 +- include/msiquery.h | 2 +- include/rpcdce.h | 3 + include/setupapi.h | 6 +- include/shlwapi.h | 2 +- include/winbase.h | 3 +- include/wine/exception.h | 6 + include/wine/port.h | 7 - include/wine/test.h | 7 + include/winnt.h | 4 +- include/winsock.h | 2 +- include/winsock2.h | 2 + include/winuser.h | 3 +- libs/port/Makefile.in | 1 - libs/port/sigsetjmp.c | 36 - programs/Makeprog.rules.in | 2 +- programs/cmd/Ja.rc | 8 + programs/notepad/Fi.rc | 2 + programs/notepad/Hu.rc | 3 +- programs/notepad/Makefile.in | 4 +- programs/notepad/Sk.rc | 119 -- programs/notepad/Wa.rc | 2 + programs/notepad/Zh.rc | 1 + programs/notepad/rsrc.rc | 1 - programs/regedit/Bg.rc | 4 + programs/regedit/De.rc | 79 +- programs/regedit/En.rc | 16 +- programs/regedit/Hu.rc | 1 + programs/regedit/Ja.rc | 4 + programs/regedit/Makefile.in | 4 +- programs/start/start.c | 7 +- programs/taskmgr/Makefile.in | 4 +- programs/winecfg/Bg.rc | 10 +- programs/winecfg/Hu.rc | 4 + programs/winecfg/Ja.rc | 6 +- programs/winecfg/Ko.rc | 2 +- programs/winecfg/Zh.rc | 1 - programs/winedbg/debugger.h | 4 +- programs/winedbg/gdbproxy.c | 14 +- programs/winedbg/memory.c | 14 +- programs/winedbg/types.c | 10 +- programs/winetest/Makefile.in | 7 +- programs/winetest/dist.rc | 4 - programs/winetest/main.c | 84 +- programs/winetest/maketest | 25 - programs/winetest/resource.h | 4 - programs/winhlp32/De.rc | 27 +- programs/winhlp32/Sk.rc | 1 + programs/wordpad/En.rc | 30 +- programs/wordpad/Makefile.in | 4 +- programs/wordpad/wordpad.c | 2 +- programs/xcopy/Makefile.in | 4 +- tools/wine.inf.in | 2 + tools/winedump/msc.c | 14 +- 187 files changed, 5474 insertions(+), 1689 deletions(-) rewrite ANNOUNCE (94%) delete mode 100644 libs/port/sigsetjmp.c delete mode 100644 programs/notepad/Sk.rc delete mode 100755 programs/winetest/maketest diff --git a/ANNOUNCE b/ANNOUNCE dissimilarity index 94% index c6c9bf39d59..be788fbb99b 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,465 +1,296 @@ -This is release 1.0-rc2 of Wine, a free implementation of Windows on Unix. - -What's new in this release (see below for details): - - Bug fixes only, we are in code freeze. - -Because of lags created by using mirrors, this message may reach you -before the release is available at the public sites. The sources will -be available from the following locations: - - http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.0-rc2.tar.bz2 - http://prdownloads.sourceforge.net/wine/wine-1.0-rc2.tar.bz2 - -Binary packages for various distributions will be available from: - - http://www.winehq.org/site/download - -You will find documentation on - - http://www.winehq.org/site/documentation - -You can also get the current source directly from the git or CVS -repositories. Check respectively http://www.winehq.org/site/git or -http://www.winehq.org/site/cvs for details. - -If you fix something, please submit a patch; instructions on how to do -this can be found at http://www.winehq.org/site/sending_patches - -Wine is available thanks to the work of many people. See the file -AUTHORS in the distribution for the complete list. - ----------------------------------------------------------------- - -Bugs fixed in 1.0-rc2: - - 2493 Multi-select listview: Shift-arrow up only selects top two items - 3003 Random crash during gameplay in Alien vs Predator Gold - 3270 Problem with minimized top-level windows - 3747 Motorhead fails to start with message: DirectInput CreateDevice joystick failed - 4848 Meetro 0.94 produces a page fault at start time - 4860 Sun Java plugin installation broken, plugin doesn't work properly in Firefox - 4873 Sun's appletviewer can't load applets - 5001 Rhapsody 3.1 quits immediately - 5024 Thief: Deadly Shadows crashes:page fault on read access to 0x0000040c - 5059 Firefox displays background of banner ad in wrong location - 5094 bitmap creation problem - 5115 Editing inline lines in BeyondCompare2 broken again - 5302 Arena Chess GUI (V1.99 Beta 2) freezes solid when menu drops down - 5844 tray minimize - 5901 EU Playonline Viewer Crash - 5926 Wine does not provide an implementation of winhlp32.exe - 5948 Star Trek: Armada does not install - 5968 Richedit crashes when adding a chr(10) or chr(13) - 6046 text display gets a white screen - 6050 Interstate'76 install should play sound but plays loud noise instead - 6797 Quite some apps (like Zuma and Intuit QuickBooks Pro installer) start with a complete white screen (shlwapi/urlmon bug) - 6806 Shareaza 2.3.0.0 crashes when loading - 7050 No shaders in Guild Wars - 7125 Wine reports not enough free memory to apps - 7153 Epson Print CD only prints background picture - 7189 VS.NET 2005 fails to install - 7317 Cannot use high resolutions in Heroes V - 7332 Versacheck Business & Enterprise 2007 autorun crashes on startup - 7370 FalconAF black screen and freezes - 7460 crashes when running Civilization III setup.exe - 7521 err:d3d:IWineD3DImpl_CheckDepthStencilMatch unsupported format pair - 7620 winedbg fails with Unhandled page fault - 8004 Verge3 Does Not Start "vid_bpp(24) not a standard value" - 8205 Microsoft Flight Simulator X Trial fails to Install - 8225 Fireworks 8 trial hangs on splash screen - 8303 Beatware mobile designer 1.0 hangs on startup - 8307 Onimusha 3: Demon Siege Demo: Fails to start - 8326 Text in Blitz3DDemo is garbled - 8417 AssaultTech1: Transparencies don't work - 8479 p4win installer does not terminate - 8491 Library tab in winecfg crashes winecfg - 8636 implement GDI32.GetTextExtentExPointI - 8767 CreateDIBSection driver loading race - 8788 Unrecognized vertex shader version 0 - 8845 Halo screen usage is messed up when in Virtual Desktop mode - 8891 Trackmania United won't start with a joystick plugged in. - 8898 Run Time Error "445": Object doesn't support this action in Europa Knowledgebase - 8909 Half life 2 crashes when loading scenes with a Cmeshdx8 error - 9211 Klipfolio 4 installer fails - 9215 joystick travel error - 9324 Mp3Tag: crash when editing the "Year" field in some cases - 9376 Trendyflash Site Builder displays blank window - 9812 Bad some czech characters in older coursewares - 9910 Interaction delay in menus while navigating (CNC: The First Decade CD games) - 10151 "make test" crashes in riched32/tests/editor.c - 10283 Outcast : game and demo don't start. - 10323 Can not get Hellgate London Demo to install - 10422 Dota-Client: Does not run - 10542 Bug in TEXT_Ellipsify when returning modstr - 10599 dlls/oleaut32/tests/vartest.c fails - 10785 Wine 0.9.51 crash when launching Slingplayer v1.5 - gdiplus.GdipDrawImageRectI not implemented - 10854 Codeblocks - black box in the about window - 10882 sPlan 6.0: Illegal Floating Point Operation - 10969 Strange deadzones with Logitech Cordless Rumblepad - 10977 GG-client: Insides of windows are not drawn - 11103 Launching any application w/ current git tree results in advapi32 Unhandled page fault - 11123 Firefox 1.5 welcome text rendered poorly - 11172 no web cache - 11613 Adobe Premiere Pro 1, 1.5 crash on startup with unimplemented function SHELL32.dll.SHGetFolderPathAndSubDirA - 11742 Small .net 1.1 app (FastMD5 1.3) fails to start up - 11806 regedit creates bogus hex:(1) value instead of empty "" - 11893 GdipBitmapUnLockBit does not accept null rect pointer - 11954 Google Sketchup, Google bug splat never finish sending report. - 12055 Sacrifice Demo: rendering problem - black figures - 12094 mouse side buttons do not work in wine when mapped to gtk/qt standard - 12168 Supreme Commander: Bloom renderer makes screen flicker - 12194 Some DDraw games flicker the screen - 12195 AussaultTech1: Broken fonts/cursor - 12221 Jaman player won't install - 12230 Palringo: Alpha images aren't displayed correctly - 12263 Sketchup Cannot initialize OpenGL - ChoosePixelFormat fails - 12268 Steam update fail at 26% - 12306 Firefox 3 beta shows one-pixel-high black line when rendering some images - 12358 Demo scene application crashes at start up - 12361 Exact Audio Copy 0.99pb4 crashes in winemenubuilder when creating png icon - 12412 Klingon honor guard: fails to start if opengl set as render device - 12568 edit area in PSPad is badly rendrawn when changing tabs by mouse - 12643 Analog sticks don't work well with trackmania - 12674 [shell] Miranda IM tray icon malfunction - 12693 statusbar doubletab problem - 12780 wine iexplore http://winehq.org doesn't work - 12813 XMLSpy 2007 refuses to install - 12884 MessageBox " is not a valid integer value in Visual Trading - 12890 Menu doesn't render in Thief The Dark Project in readtex mode - 12902 IHP Kitchen: Unhandled page fault on read access when starting - 12935 Audiosurf crashes with a page fault on read access to a NULL pointer - 12942 Facewound doesn't run on 64bit - 12967 MS Office 97 will not install since 0.9.60 possibly 0.9.59 - 12968 MS Visual Studio V6 setup error 258 since 0.9.58 - 12979 Trucks&Trains game error in quartz.dll - 12988 Microsoft Office Communicator 2005 Trial installer does nothing when you click 'next' - 13052 Thief II: The Metal Age 1.18 crashes when trying to play back video - 13055 settler 3 x64 error - 13090 winecfg crashes if you click the "Test Sound" button while using the ALSA driver - 13093 cepstral speach stops working when reading a second time - 13109 Error during install after compile from source - 13113 wineprefixcreate has multiplied messages in new WINEPREFIX - 13121 Sipru Installation Error - 13144 enabling 3d acceleration in-game crashes Jedi Knight: Dark Forces II - 13166 system tray icons show up twice - 13168 Update the README before the 1.0 release - 13170 Wine freezes on audio test (in winecfg) - 13176 Fails to compile - 13192 AutoCAD 2008 Trial fails to install - 13228 Blockland crashes when returning focus - 13240 Running "explorer" should open an "explorer" window - 13246 Emperor - Rise of the middle kingdom shows name for each network adapter - 13250 majesty exits due to page fault - 13264 Warblade Demo: crashes on startup, maybe regression - 13269 ntdll/tests/exception crashes - 13311 winetest always fails on shell32:shelllink, but "make test" doesn't - 13337 Legacy 5 Crash doing backup - 13343 Microsoft Office 2003 won't install - ----------------------------------------------------------------- - -Changes since 1.0-rc1: - -Alam Arias (1): - include: Modify UNREFERENCED macros to cast to void. - -Alexander Dorofeyev (4): - wined3d: glFlush when updating front buffer. - wined3d: Activate context for the right target in surface_blt_to_drawable. - ddraw: Fix some code unprotected by ddraw lock. - wined3d: Only copy front buffer to screen in gdi RealizePalette. - -Alexander Nicolaysen Sørnes (4): - regedit: Add Export option to context menu. - regedit: Improve dialog layout. - regedit: Allow modifying values of root keys. - regedit: Set selected key name as default favourite name. - -Alexandre Julliard (44): - winedos: Don't disable long filename functions on NT versions. - server: When moving/resizing a window crop the update region against the new rectangle of the parents. - server: Also crop the update region of children when moving a window. - server: Crop the invalidate region against the rectangles of all parents. - user32: Invalidate the DCE in SetWindowPos before we attempt to move the window bits. - winex11: Create all the GL drawables using the gdi_display to avoid synchronization issues. - winex11: Create a dummy parent window for composite child windows to avoid using the root. - Revert "winealsa: Remove calls to deprecated functions." - gdi32: Make sure the DC is up-to-date before accessing the pixel format. - winex11: Silence a harmless error. - configure: Improve the libcrypto checks. - winex11: When re-creating a client window check the new visual against the current one instead of the default one. - winhelp.exe: Renamed to winhlp32.exe. - kernel32: Add a builtin 16-bit winhelp.exe. - kernel32: Move the wineboot event wait so that 16-bit processes wait too. - winemenubuilder: Copy the icon data before modifying it, resources are read-only. - regedit: Fix editing and exporting of zero-size strings. - explorer: Use a different return value to indicate that the x11 system tray is not available, so that x11drv can return errors too. - wineprefixcreate: Avoid redundant update on initial wineprefix creation. - wineprefixcreate: Added a deprecation warning. - wgl: Don't call ExtEscape if we don't have a GL context. - user32: Moved the class extra bytes check to catch uninitialised data sooner. - ntdll/tests: Make sure to clear the DF flag on return from the exception. - ntdll: Move signal unmasking to make sure injected code runs on the correct stack. - user32: Support creating cursors and icons from DIB section bitmaps. - user32: Add an ASCII window procedure for scrollbars. - kernel32: Fix the profile file sharing modes. - kernel32: Add some test cases for profile file sharing modes. - comctl32: Fix extending a multiple listview selection. - configure: Added an ERROR_WITH macro for packages that we can't do without. - configure: Make the lack of FreeType an error, and add a --without option for it. - configure: Upgrade notices to warnings for some important libraries. - kernel32: Mutex names are case sensitive. - kernel32: Event names are case sensitive. - kernel32: Semaphore names are case sensitive. - kernel32: Waitable timer names are case sensitive. - kernel32: File mapping names are case sensitive. - kernel32: Don't require write access on profile file when only reading. - user32: Return reasonable values in GetWindowPlacement for the desktop window. - gdi32: Perform coordinate transformations using doubles instead of floats to avoid precision loss. - gdi32: Use atan2 to compute angles in WidenPath without triggering floating point errors. - wineinstall: Remove a lot of no longer needed code. - winex11: Add support for X11 mouse buttons 8 and 9. - README: Updated. - -Andrej Sinicyn (5): - cmd: German translation. - taskmgr: German translation. - wineconsole: German translation. - reg: German translation. - uninstaller: German translation. - -Andrew Talbot (17): - wined3d: Remove test for value of unsigned variable being less than zero. - dsound: Memory allocation sizes fix. - wineoss.drv: Memory allocation sizes fix. - qmgr: Memory allocation size fix. - ddraw: Memory allocation size fix. - secur32: Memory allocation size fix. - cabinet: Remove order-of-evaluation dependencies. - advapi32: Remove unused file-static variables. - mshtml: Remove unused function. - cryptnet: Remove unused function. - shell32: Remove unused file-static variable. - user32: Remove unused function. - rsaenh: Remove unused file-static variable. - ws2_32: Remove unused function. - wined3d: Remove unneeded "extern" from function definition. - dplayx: Remove unneeded "extern" from function definitions. - comctl32: Indentation fix. - -Austin English (1): - wine.inf: Add a fake dll for sensapi.dll. - -Ben Mayhew (1): - wined3d: Only display Missing vbo streams fixme once. - -ByeongSik Jeon (3): - imm32: Add the missing is_himc_ime_unicode() check. - imm32: Add the all GCS_* value check. - comdlg32: Updated Korean translation. - -Dan Kegel (5): - d3d9: shademode_test: Increase slop in color comparison. - kernel32: comm.c: increase time slop. - ws2_32/tests: Cannot reliably detect bad hostnames in "modern" internet. - d3d9/tests: Add missing skip(). - d3d9/tests: Another wee bit of slop. - -Dmitry Timoshkov (8): - user32: Make sure that we send proper notifications in all cases. - shell32: Fix calling convention of LPFNOFN, don't use static buffers. - user32: Add tests for painting minimized/clipped windows. - gdi32: Add more font substitution tests, make them pass under Wine. - cabinet: Fix the regression caused by 4046075462c00f4479f185d1c0514584ff851223. - user32: Make ChangeDisplaySettingsA/W reset dmDriverExtra to 0 like XP and Vista do. - kernel32: Update locale info for Esperanto. - gdi32: Slightly relax EMF record comparisons allowing rounding errors. - -Eric Pouech (2): - winedbg: Fix the path traversal. - dbghelp: Protect dwarf parsing against NULL function names. - -Francois Gouget (5): - ddraw/tests: Fix compilation on systems that don't support nameless unions. - ole32/tests: Add a trailing '\n' to ok() calls. - advapi32/tests: Remove a stray reference to CryptReleaseContext(). This gets the test to run again on Win95. - wininet/tests: Remove a stray reference to InternetSetStatusCallback(). - wininet/tests: Get the tests running again on Win98. - -Hans Leidekker (7): - wininet: Don't overwrite content length header in HttpSendRequest. - wininet: Make a test pass on IE6. - wininet: Partial implementation of InternetGet/SetCookieEx. - wininet: HTTP_BuildProxyRequestUrl returns a pointer. - wininet: Implement INTERNET_OPTION_USER_AGENT for InternetQueryOption. - wininet: INTERNET_STATUS_REQUEST_COMPLETE callback must supply a handle. - wininet: Fix buffer size query for HttpQueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF). - -Huw Davies (5): - gdiplus: Add some stubs for region functions. - gdiplus: Stubs for GdipGetDC and GdipReleaseDC. - gdiplus: Stub for GdipGetClip. - gdi32: Move a couple of TRACEs to the beginning of functions. - gdiplus: Add some notes about the format of the data blob returned by GdipGetRegionData. - -Hwang YunSong(황윤성) (2): - shell32: Updated Korean Resource. - regedit: Updated Korean resource. - -Igor Tarasov (1): - comctl32: Fix statusbar text alignment bug. - -Jacek Caban (3): - urlmon: Correctly handle file URLs with '|' instead of ':' after drive letter. - urlmon: Better error handling in file protocol. - mshtml: Fixed a typo. - -James Hawkins (27): - msi: Test the ScreenX/Y properties. - msi: Convert string variables to ints when appropriate. - ntdll: Fix a few failing tests in win2k3. - msi: Copy the assembly file directly if it's not compressed. - msi: Set the OutOfDiskSpace property. - msi: Create the MSI hidden window on demand. - ntdll: Fix a few tests that fail in win2k3. - ntdll: Fix a test that fails in win2k3. - gdi32: Fix two tests that fail in win2k3. - user32: Fix a few tests that fail in win2k3. - msi: Don't enable a feature's components if that feature is disabled. - msi: Reset the hasLocalFeature flag when updating components. - kernel32: Fix a debugger test that fails in win2k3. - kernel32: Remove a test that fails on all platforms. - msi: Check that the file key is valid before installing the assembly. - hhctrl.ocx: Check the filename param before dereferencing it. - ntdll: Remove NULL checks for attr, which has already been dereferenced. - user32: Fix the BSM_ALL_RECIPS test flag. - setupapi: Fix a few test failures in win2k3. - msi: Search the last used source if the cabinet to extract cannot be found. - secur32: Fix a few tests that fail in win2k3. - user32: Fix a test that fails in almost all reports. - mlang: Only return the locale language name if no country name exists. - mlang: Fix all test failures for NT+ platforms. - kernel32: Don't test the invalid locale 0 if it is enumerated. - mshtml: Fix a few test failures in win2k3. - opengl32: Trace a test result that fails inconsistently across different drivers. - -Jens Albretsen (9): - wineps.drv: Danish spelling fixes. - user32: Danish spelling fixes. - winhelp: Danish translation additions, fixes. - winemine: Danish translation. - winefile: Danish translation. - uninstaller: Danish translation. - wineboot: Danish translation. - taskmgr: Danish translation. - view: Danish translation. - -Jeremy White (2): - winebrowser: Route default url handlers to /usr/bin/open on Mac OS X. - ntdll/tests: Only test the readcount for a read below 0x10000 if the return code indicates a partial copy result. - -Jonathan Ernst (1): - winhelp: Updated French translation. - -Juan Lang (3): - snmpapi: Test and correct SnmpUtilOidNCmp when Oid lengths don't match. - snmpapi: Test and correct SnmpUtilOidNCmp when count is less than Oid length. - iphlpapi: Set the adapter's description to its name in GetAdaptersInfo. - -Jörg Höhle (1): - dsound: Fix off by 1 heap error in DSOUND_MixerVol. - -Kai Blin (1): - ws2_32: Test for invalid hostnames again. - -Ken Thomases (1): - winex11: Bias MapVirtualKeyEx(MAPVK_VSC_TO_VK) against numpad vkeys. - -Lei Zhang (5): - quartz: Check input in MediaControl_GetState. - explorer: Allow explorer with no arguments to run winefile. - wine.inf: Open xml files using winebrowser. - mshtml: Added ProxyEnable / ProxyServer handling. - wininet: Send https scheme to proxy server when appropriate. - -Maarten Lankhorst (11): - quartz: Don't return a pin in filesource when there is none. - quartz: Silence a fixme. - quartz: Reset time when rejecting sample in the mpeg splitter. - ntdll: Give earlier notify to valgrind that HeapFree is trying to free some memory. - quartz: Don't free memory twice in null renderer. - quartz: Do timekeeping in the avi decoder. - quartz: Initialize some uninitialized variables in the video renderer. - winmm: Use HeapAlloc in the wave test instead of using strdup. - msacm32.drv: Check for message type before comparing handles. - include: Update aviriff header to use the right alignment. - winmm: Fix valgrind warnings on exit. - -Marcus Meissner (1): - server: Remove superflous empty region allocation. - -Markus Weiland (1): - dxdiagn: Implemented OS version properties for DXDiagSystemInfoContainer. - -Michael Karcher (3): - oleaut32: Cache localised number chars. - ole32/tests: Do not call Release if CoCreateInstance failed. - ole32/tests: Test StringFromGUID2. - -Michael Stefaniuc (1): - shdocvw: Plug memory leak introduced in 1.0-rc1 (Smatch). - -Mikołaj Zalewski (2): - Update Polish translation. - Make Swedish use SUBLANG_NEUTRAL. - -Nikolay Sivov (12): - gdi32: Avoid null pointer dereference in CreateDIBSection. - gdiplus: ImageFlags enum defined. - gdiplus: GdipGetImageFlags simple stub with test. - gdiplus: Added GdipLoadImageFromFileICM (no icm yet). - gdiplus: Added GdipCreateFromHWNDICM (no icm yet) with test. - gdiplus: GdipCreateFontFromLogfontA: no reason to put CHAR to WCHAR array. - gdiplus: Check count argument in GdipTransformMatrixPoints. - gdiplus: Check count argument in GdipVectorTransformMatrixPoints. - gdiplus: Make GdipSetPenDashArray return OutOfMemory on (count <= 0). - gdiplus: Added GdipAddPathRectangle with tests. - user32: Correct termination of returning string in Text_Ellipsify. - gdiplus: GdipBitmapLockBits should allow a NULL rect argument. - -Paul Vriens (11): - kernel32/tests: Skip tests if codepage is not installed/available. - ntdll/tests: Free library after use. - ntdll/tests: Skip test when we don't have enough rights. - janitorial: Close COM after tests. - regedit: Sync Dutch resource with latest changes. - shell32/tests: Fix test when running on Wine. - shell32/tests: SHGetPathFromIDListA returns a BOOL not a HRESULT. - setupapi/tests: Remove a duplicate function call. - setupapi/tests: Skip some tests if we are on win9x. - setupapi/tests: Fix typo. - setupapi/tests: Fix typos. - -Petr Dlouhý (1): - shdocvw: Partial implementation of WebBrowser_put_RegisterAsBrowser and WebBrowser_get_RegisterAsBrowser. - -Rob Shearman (1): - wininet: Fix a typo in is_basic_auth_value. - -Roderick Colenbrander (1): - wined3d: Request a WGL depth stencil capable pixel format by default until we have proper SetDepthStencilSurface support. - -Tomasz Jezierski (1): - comctl32: Conformance test for multiple selection in listbox. - -Vitaliy Margolen (6): - dmime: Update dx version to 9.0c. - dxdiagn: Update dx version to 9.0c. - dinput: Implement GetDeviceStatus. - dinput: Clamp joystick position values to min-max range. - winecfg: Remove mostly unused properties.h. - wineserver: Add support for long command line options. - --- -Alexandre Julliard -julliard@winehq.org +This is release 1.0-rc3 of Wine, a free implementation of Windows on Unix. + +What's new in this release (see below for details): + - Bug fixes only, we are in code freeze. + +Because of lags created by using mirrors, this message may reach you +before the release is available at the public sites. The sources will +be available from the following locations: + + http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.0-rc3.tar.bz2 + http://prdownloads.sourceforge.net/wine/wine-1.0-rc3.tar.bz2 + +Binary packages for various distributions will be available from: + + http://www.winehq.org/site/download + +You will find documentation on + + http://www.winehq.org/site/documentation + +You can also get the current source directly from the git or CVS +repositories. Check respectively http://www.winehq.org/site/git or +http://www.winehq.org/site/cvs for details. + +If you fix something, please submit a patch; instructions on how to do +this can be found at http://www.winehq.org/site/sending_patches + +Wine is available thanks to the work of many people. See the file +AUTHORS in the distribution for the complete list. + +---------------------------------------------------------------- + +Bugs fixed in 1.0-rc3: + + 2368 Wine loses its X-Window when switching to another virt. desktop in Fvwm + 4468 advapi32: Fulltilt Poker hangs (GetCurrentHwProfileA is a stub) + 4652 Adobe Dreamweaver MX 2004 installs well but does not run. + 6206 riched20:Live Person crashes + 7214 wine_dbg_vprintf: debugstr buffer overflow (contents: 'err:msvcrt:demangle_datatype Unknown type ') + 7318 supertux 0.3 freezes (dsound bug) + 7904 C&C 3 setup displays empty window + 7979 S.t.a.l.k.e.r. - some objects appear over-bright or too dark + 8043 Dreamfall: speech gets skipped in dialogues + 8129 Acomba: Freezes after closing an unsaved invoice + 8408 unimplemented function ntoskrnl.exe.memset + 9799 Textures on vehicles are too dark in GTA Vice City! + 10025 Cyrillic glyphs are missing in built-in Tahoma Bold + 11248 fixme:winsock:WSASocketW Unsupported socket family -1! + 11389 ABBYY FineReader 7.0 Professional Edition crashes at start + 11822 All applications over VNC: Applications freeze for any letters input + 11914 DestroyContext in dlls/wined3d/device.c causes regression in Everquest2 + 11929 Audiosurf: Questviewer.exe crashes with page fault. + 11989 Arindal.exe Text-Windows not displayed correctly + 11991 OpenGL regression in Hitman 2 and Hitman 3 + 12192 SupCom Addon: No units visible + 12322 Sacrifice game crashes in full screen mode + 12455 Warcraft III 1.21b - Crashes with Fatal Error on Switch Desktop + 12540 Favourites menu doesn't work as expected + 13102 WinterMute Engine drawing window bug + 13120 dzh2 crashes on startup + 13148 Guitar Pro 5 Crashes (maybe audio problem) + 13154 Jedi Academy: launcher freezes when button clicked + 13277 Return to Mysterious Island crashes + 13342 Winedbg doesn't handle longlong's well + 13372 Adobe Acrobat Pro 8 / Acrobat Reader 8 -- install fails + 13395 Guild wars not start + 13403 fcc hangs , unless using native dbghelp + 13420 Hang on first keypress + 13475 Sytray icon totally transparent + 13476 SQLyog community edition : Cannot connect to a remote DB through gSTM tunnel + +---------------------------------------------------------------- + +Changes since 1.0-rc2: + +Alexander Dorofeyev (1): + ddraw: Do not return modes differing only by refresh rate without DDEDM_REFRESHRATES. + +Alexandre Julliard (16): + libport: Move the sigsetjmp replacement to exception.h to make it available for Winelib too. + winedbg: Fix compile when poll() is not available. + programs: Use the Wine import libraries when compiling with MinGW. + tests: Use the Wine import libraries when compiling with MinGW. + winetest: Remove the per-file revision info, we now use the global commit id. + winetest: Don't submit test results if we don't have a valid git build id. + winex11: Change the pixel format initialisation to make sure it happens under the X11 lock. + winex11: Make sure that all glX functions are called under the X11 lock. + winex11: Add support for performing GL calls on a top-level window DC. + opengl32/tests: Add a couple of test cases for pixel format handle on window DCs. + msftedit: Explicitly load riched20 to make sure the window classes are created. + winex11: XInitThreads is hopeless, remove it again. + user32: Check for wraparound in the initial window coordinates. + start: Fall back to ShellExecute for unknown binaries in /unix mode. + include: Use WINE_NO_UNICODE_MACROS instead of __WINESRC__ where appropriate. + user32: We no longer need to ensure that the BeginPaint window belongs to the current thread. + +Alistair Leslie-Hughes (2): + msxml3: Stopped tests from crashing and a Win98 fix. + netapi32: Fix tests when the machine is on DOMAIN. + +Andrej Sinicyn (1): + regedit: Update the German translation. + +Austin English (1): + gdi32: Fix a test failure in 2k. + +Dan Kegel (4): + winmm: Use HeapAlloc in the capture test instead of using strdup. + fusion: UninstallAssembly test: Fix typo, avoid undefined value. + fusion: Use HeapAlloc, not strdup, to avoid malloc/HeapFree mismatch. + advapi32: Don't test buffer length if buffer is null. + +Detlef Riekenberg (1): + avifil32: Resize the dialog to avoid truncated texts. + +Dmitry Timoshkov (9): + wininet: INTERNET_InternetOpenUrlW is an internal helper. + msi: Mark some data as constant. + gdi32: Ignore exScale/eyScale when comparing EMREXTTEXTOUT EMF records. + gdi32: If there is no clipping rect, EMREXTTEXTOUT shouldn't have a bounding rect. + gdi32: Make generated EMFs fully match Windows ones. + user32: Implement GetWindowModuleFileName. + user32: Add the tests for GetWindowModuleFileName. + msvcrt: Mark some data as constant. + user32: CBT hook doesn't send window messages. + +Dylan Smith (2): + wordpad: Removed spaces between dots in ellipses for english menu text. + wordpad: Added a null terminator needed for a unicode string. + +Eric Pouech (6): + dbghelp: Don't crash when parsing the forward declaration of a function. + dbghelp: Fix for SymGetModuleInfo(). + msvcrt: Properly handle the extended keys in getch(). + winedbg: Removed unneeded variable from print_basic. + winedbg: Fixed the print_basic command when dealing with long long values. + winedump: Fully dump the compiland (V3) structure out of .pdb files. + +Francois Gouget (6): + kernel32/tests: Get the tests running again on Win95. + ws2_32: Make sure INVALID_SOCKET is correctly typed. + shell32: s/library/Wine/ for consistency in the license message. + ddraw: Remove trailing spaces in Wine traces. + tests: Add a broken() function to make it possible to handle Windows misbehaviors that we don't want to reproduce in Wine. + regedit: Remove extraneous spaces in '...'. + +Gregor Münch (2): + shell32: Update German translation. + winhlp32: Update German translation. + +H. Verbeet (5): + d3d: Use an alpha capable backbuffer format in the visual tests. + wined3d: Add WINED3DTOP_ADDSIGNED2X to debug_d3dtop(). + wined3d: Fix the nvrc implementation of WINED3DTOP_MULTIPLYADD and WINED3DTOP_LERP. + d3d8: Test our texop implementation. + d3d9: Test our texop implementation. + +Hwang YunSong(황윤성) (1): + winecfg: Updated Korean resource. + +Igor Tarasov (2): + user32: Further implementation of MNS_NOTIFYBYPOS. + fonts: Tahoma Bold Cyrillic glyphs added. + +Jacek Caban (4): + mshtml: Fixed some tests on IE 7. + mshtml: Make Wine behave like IE 7. + mshtml: Fixed more tests on IE 7. + mshtml: Fixed copy&paste typo. + +James Hawkins (10): + mshtml: Add missing OLECMDID definitions. + mshtml: Fix a test failure in win2k3. + winetest: Use the win32 API to extract the tests. + shell32: Test against the long form of the path. + rpcrt4: Trace the results of two statuses that return different results across platforms. + usp10: Fix several failing test in win2k3. + kernel32: Remove two tests that produce different results for win9x and NT platforms. + user32: Fix two tests that fail in win2k3 and above. + oleaut32: Disable olefont tests that fail on all platforms. + user32: win2k3's GetWindowModuleFileName does return ERROR_INSUFFICIENT_BUFFER. + +Jens Albretsen (2): + ddraw: IDirect3DTextureImpl_Load failed when texture was loading onto itself. + ddraw: Test for IDirect3DTexture_Load of Texture into itself. + +John Klehm (2): + winex11: Detect acecad tablet as stylus device. + winex11: Support detection of tablet devices from XExtensionKeyboard type. + +Jon Griffiths (6): + msvcrt/tests: Fix 4 tests that always fail on Vista. + msvcrt/tests: Fix 3 tests that always fail on Vista. + msvcrt: Follow Vista behaviour in wcscpy_s. + msvcrt: Fix an RTTI test Failure on Vista. + msvcrt: Fix file test which fails on Vista. + msvcrt: Fix a test that fails on win95. + +Kai Blin (2): + ws2_32: Add support for FROM_PROTOCOL_INFO to WSASocket(). + ws2_32: Change back magic 127.12.34.56 to loopback on connect(). + +Kirill K. Smirnov (1): + mshtml: Fix copy/paste error. + +Louis Lenders (1): + wine.inf: Add fake glu32. + +Maarten Lankhorst (2): + include: Add missing RpcMgmtIsServerListening declaration. + d3d9: Add a test to see whether offscreen surfaces can be locked while a reset occurs. + +Michael Karcher (8): + crypt32: Fix integer overflow. + crypt32: Fix order-of-evaluation dependence. + crypt32: Pass on aiKeyAlg on RSA key import. + crypt32: CertGetPublicKeyLength should check only cert encoding type. + oleaut32: Currency to BSTR must use local decimal separator. + oleaut32/tests: Call functions via manually obtained pointers. + advpack: Fix buffer sizes for possibly quoted strings. + dsound: Fix double free in dsound capture. + +Michael Stefaniuc (37): + comdlg32: Fix the Catalan translation including some size fixes too. + shell32: Fix the Catalan translation. + comdlg32: Fix the Walon translation. + shell32: Fix the Walon translation. + comdlg32: Fix the Thai translation. + comdlg32: Fix the Greek translation. + comdlg32: Fix the Ukrainian translation. + shell32: Fix the Ukrainian translation. + shell32: Fix the Chinese translations. + user32: Fix the Chinese translations. + notepad: Fix the Walon translation. + winecfg: Fix the Chinese (Traditional) translation. + notepad: Fix the Chinese (Simplified) translation. + regedit: Fix the English (NEUTRAL) translation. Rename SUBLANG_ENGLISH_US to SUBLANG_DEFAULT. + shell32: Fix the Slovak translation. + shell32: Fix the Esperanto translation. + shell32: Fix the Finnish translation. + shell32: Fix the Bulgarian translation. + shell32: Fix the Japanese translation. + notepad: Remove the Slovak "translation" as it is basically only a stale copy of the English resource. + notepad: Fix the Finnish translation. + winhlp32: Fix the Slovak translation. + comdlg32: Fix the Japanese translation. + comdlg32: Fix the Esperanto translation. + mshtml: Fix the Finnish translation. + regedit: Fix the Bulgarian translation. + regedit: Fix the Japanese translation. + regedit: Fix the Hungarian translation. + winecfg: Fix the Hungarian translation. + winecfg: Fix the Bulgarian translation. + winecfg: Fix the placement of a checkbox in the Japanese translation. + cmd: Fix the Japanese translation. + comdlg32: Fix the Hungarian translation. + comdlg32: Fix some control sizes in the default English resource. + mshtml: Fix the Hungarian translation. + shell32: Fix the Hungarian translation. + notepad: Fix the Hungarian translation. + +Paul Vriens (18): + setupapi/tests: Close registry key after use. + setupapi/tests: Fix a test on NT4. + setupapi/tests: Turn guid into a global variable. + setupapi/tests: Skip tests on win9x. + setupapi/tests: Cleanup after testDevRegKey. + setupapi/tests: Cleanup after testRegisterAndGetDetail. + setupapi/tests: Cleanup after testGetDeviceInterfaceDetail. + setupapi/tests: Test registry after testDeviceRegistryProperty. + setupapi/tests: Cleanup after testCreateDeviceInterface. + setupapi/tests: Add another test. + setupapi/tests: Test to show cleanup should not be needed. + shell32/tests: Run tests again on win95. + ws2_32/tests: Fix crash on win98. + ddraw/tests: Don't crash on win9x. + user32/tests: Run tests on win95 again. + user32/tests: Prevent writing to not allocated memory. + setupapi/tests: Remove leftovers from old tests. + ole32/tests: Prevent a crash. + +Tomasz Jezierski - Tefnet (1): + comctl32/tests: Fix for setting wrong initial position in listbox. + +Vitaliy Margolen (4): + shell32: Don't print not initialized value. + winex11: Use memmove for possibly overlapping memory areas. + dxdiagn: A number of FIXMEs can be replaced with TRACEs. + dinput: Convert keyboard buffer from internal data format to user data format. + +Vitaly Lipatov (1): + wine.inf: Create default spool dir. + +-- +Alexandre Julliard +julliard@winehq.org diff --git a/ChangeLog b/ChangeLog index 4d8d84b129c..ffa75880e20 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,680 @@ +2008-05-30 Paul Vriens + + * dlls/ole32/tests/compobj.c: + ole32/tests: Prevent a crash. + +2008-05-30 Michael Karcher + + * dlls/dsound/capture.c: + dsound: Fix double free in dsound capture. + +2008-05-29 Vitaly Lipatov + + * tools/wine.inf.in: + wine.inf: Create default spool dir. + +2008-05-30 Dmitry Timoshkov + + * dlls/user32/tests/msg.c: + user32: CBT hook doesn't send window messages. + +2008-05-30 Alexandre Julliard + + * dlls/user32/painting.c: + user32: We no longer need to ensure that the BeginPaint window belongs to the + current thread. + + * include/dbt.h, include/dxdiag.h, include/mapidefs.h, include/msiquery.h, + include/setupapi.h, include/shlwapi.h, include/winbase.h, + include/winnt.h, include/winuser.h: + include: Use WINE_NO_UNICODE_MACROS instead of __WINESRC__ where appropriate. + +2008-05-30 Michael Stefaniuc + + * programs/notepad/Hu.rc: + notepad: Fix the Hungarian translation. + + * dlls/shell32/shell32_Hu.rc: + shell32: Fix the Hungarian translation. + + * dlls/mshtml/Hu.rc: + mshtml: Fix the Hungarian translation. + + * dlls/comdlg32/cdlg_En.rc: + comdlg32: Fix some control sizes in the default English resource. + + * dlls/comdlg32/cdlg_Hu.rc: + comdlg32: Fix the Hungarian translation. + + * programs/cmd/Ja.rc: + cmd: Fix the Japanese translation. + + * programs/winecfg/Ja.rc: + winecfg: Fix the placement of a checkbox in the Japanese translation. + + * programs/winecfg/Bg.rc: + winecfg: Fix the Bulgarian translation. + + * programs/winecfg/Hu.rc: + winecfg: Fix the Hungarian translation. + + * programs/regedit/Hu.rc: + regedit: Fix the Hungarian translation. + + * programs/regedit/Ja.rc: + regedit: Fix the Japanese translation. + + * programs/regedit/Bg.rc: + regedit: Fix the Bulgarian translation. + +2008-05-29 Francois Gouget + + * programs/regedit/En.rc: + regedit: Remove extraneous spaces in '...'. + + * include/wine/test.h: + tests: Add a broken() function to make it possible to handle Windows misbehaviors + that we don't want to reproduce in Wine. + + * dlls/ddraw/texture.c: + ddraw: Remove trailing spaces in Wine traces. + + * dlls/shell32/shell32_En.rc: + shell32: s/library/Wine/ for consistency in the license message. + +2008-05-29 Michael Karcher + + * dlls/advpack/advpack.c, dlls/advpack/tests/advpack.c: + advpack: Fix buffer sizes for possibly quoted strings. + +2008-05-29 James Hawkins + + * dlls/user32/tests/win.c: + user32: win2k3's GetWindowModuleFileName does return ERROR_INSUFFICIENT_BUFFER. + +2008-05-28 James Hawkins + + * dlls/oleaut32/tests/olefont.c: + oleaut32: Disable olefont tests that fail on all platforms. + + * dlls/user32/tests/sysparams.c: + user32: Fix two tests that fail in win2k3 and above. + + * dlls/kernel32/tests/toolhelp.c: + kernel32: Remove two tests that produce different results for win9x and NT + platforms. + +2008-05-29 Alexandre Julliard + + * programs/start/start.c: + start: Fall back to ShellExecute for unknown binaries in /unix mode. + +2008-05-29 Michael Stefaniuc + + * dlls/mshtml/Fi.rc: + mshtml: Fix the Finnish translation. + + * dlls/comdlg32/cdlg_Eo.rc: + comdlg32: Fix the Esperanto translation. + + * dlls/comdlg32/cdlg_Ja.rc: + comdlg32: Fix the Japanese translation. + + * programs/winhlp32/Sk.rc: + winhlp32: Fix the Slovak translation. + + * programs/notepad/Fi.rc: + notepad: Fix the Finnish translation. + + * programs/notepad/Sk.rc, programs/notepad/rsrc.rc: + notepad: Remove the Slovak "translation" as it is basically only a stale copy + of the English resource. + + * dlls/shell32/shell32_Ja.rc: + shell32: Fix the Japanese translation. + + * dlls/shell32/shell32_Bg.rc: + shell32: Fix the Bulgarian translation. + + * dlls/shell32/shell32_Fi.rc: + shell32: Fix the Finnish translation. + + * dlls/shell32/shell32_Eo.rc: + shell32: Fix the Esperanto translation. + + * dlls/shell32/shell32_Sk.rc: + shell32: Fix the Slovak translation. + + * programs/regedit/En.rc: + regedit: Fix the English (NEUTRAL) translation. Rename SUBLANG_ENGLISH_US + to SUBLANG_DEFAULT. + +2008-05-29 Alexander Dorofeyev + + * dlls/ddraw/ddraw.c: + ddraw: Do not return modes differing only by refresh rate without + DDEDM_REFRESHRATES. + +2008-05-28 Austin English + + * dlls/gdi32/tests/bitmap.c: + gdi32: Fix a test failure in 2k. + +2008-05-28 Maarten Lankhorst + + * dlls/d3d9/tests/device.c: + d3d9: Add a test to see whether offscreen surfaces can be locked while a + reset occurs. + +2008-05-28 Louis Lenders + + * tools/wine.inf.in: + wine.inf: Add fake glu32. + +2008-05-28 Alexandre Julliard + + * dlls/user32/tests/win.c, dlls/user32/win.c: + user32: Check for wraparound in the initial window coordinates. + + * dlls/winex11.drv/x11drv_main.c: + winex11: XInitThreads is hopeless, remove it again. + + * dlls/msftedit/msftedit_main.c: + msftedit: Explicitly load riched20 to make sure the window classes are created. + +2008-05-28 Paul Vriens + + * dlls/setupapi/tests/devinst.c: + setupapi/tests: Remove leftovers from old tests. + +2008-05-28 Jon Griffiths + + * dlls/msvcrt/tests/printf.c: + msvcrt: Fix a test that fails on win95. + +2008-05-27 Jon Griffiths + + * dlls/msvcrt/tests/file.c: + msvcrt: Fix file test which fails on Vista. + +2008-05-28 Paul Vriens + + * dlls/user32/tests/cursoricon.c: + user32/tests: Prevent writing to not allocated memory. + + * dlls/user32/tests/win.c: + user32/tests: Run tests on win95 again. + +2008-05-28 Igor Tarasov + + * fonts/tahomabd.sfd, fonts/tahomabd.ttf: + fonts: Tahoma Bold Cyrillic glyphs added. + +2008-04-24 Vitaliy Margolen + + * dlls/dinput/keyboard.c, dlls/dinput/tests/keyboard.c: + dinput: Convert keyboard buffer from internal data format to user data format. + +2008-05-27 Vitaliy Margolen + + * dlls/dxdiagn/container.c: + dxdiagn: A number of FIXMEs can be replaced with TRACEs. + +2008-05-22 Jens Albretsen + + * dlls/ddraw/tests/d3d.c: + ddraw: Test for IDirect3DTexture_Load of Texture into itself. + + * dlls/ddraw/texture.c: + ddraw: IDirect3DTextureImpl_Load failed when texture was loading onto itself. + +2008-05-28 Alexandre Julliard + + * dlls/opengl32/tests/opengl.c: + opengl32/tests: Add a couple of test cases for pixel format handle on window DCs. + + * dlls/winex11.drv/init.c, dlls/winex11.drv/opengl.c, + dlls/winex11.drv/window.c, dlls/winex11.drv/x11drv.h: + winex11: Add support for performing GL calls on a top-level window DC. + + * dlls/winex11.drv/opengl.c, dlls/winex11.drv/window.c: + winex11: Make sure that all glX functions are called under the X11 lock. + + * dlls/winex11.drv/opengl.c: + winex11: Change the pixel format initialisation to make sure it happens under + the X11 lock. + +2008-05-28 Alistair Leslie-Hughes + + * dlls/netapi32/tests/access.c: + netapi32: Fix tests when the machine is on DOMAIN. + +2008-05-27 Eric Pouech + + * tools/winedump/msc.c: + winedump: Fully dump the compiland (V3) structure out of .pdb files. + +2008-05-28 Paul Vriens + + * dlls/ddraw/tests/ddrawmodes.c: + ddraw/tests: Don't crash on win9x. + +2008-05-28 Kai Blin + + * dlls/ws2_32/socket.c: + ws2_32: Change back magic 127.12.34.56 to loopback on connect(). + +2008-05-28 Paul Vriens + + * dlls/ws2_32/tests/sock.c: + ws2_32/tests: Fix crash on win98. + +2008-05-28 Michael Stefaniuc + + * programs/notepad/Zh.rc: + notepad: Fix the Chinese (Simplified) translation. + + * programs/winecfg/Zh.rc: + winecfg: Fix the Chinese (Traditional) translation. + + * programs/notepad/Wa.rc: + notepad: Fix the Walon translation. + + * dlls/user32/resources/user32_Zh.rc: + user32: Fix the Chinese translations. + + * dlls/shell32/shell32_Cn.rc, dlls/shell32/shell32_Zh.rc: + shell32: Fix the Chinese translations. + +2008-05-27 Michael Stefaniuc + + * dlls/shell32/shell32_Uk.rc: + shell32: Fix the Ukrainian translation. + + * dlls/comdlg32/cdlg_Uk.rc: + comdlg32: Fix the Ukrainian translation. + + * dlls/comdlg32/cdlg_El.rc: + comdlg32: Fix the Greek translation. + + * dlls/comdlg32/cdlg_Th.rc: + comdlg32: Fix the Thai translation. + + * dlls/shell32/shell32_Wa.rc: + shell32: Fix the Walon translation. + + * dlls/comdlg32/cdlg_Wa.rc: + comdlg32: Fix the Walon translation. + +2008-05-27 Jon Griffiths + + * dlls/msvcrt/tests/cpp.c: + msvcrt: Fix an RTTI test Failure on Vista. + +2008-05-27 Dylan Smith + + * programs/wordpad/wordpad.c: + wordpad: Added a null terminator needed for a unicode string. + +2008-05-23 Dylan Smith + + * programs/wordpad/En.rc: + wordpad: Removed spaces between dots in ellipses for english menu text. + +2008-05-23 Igor Tarasov + + * dlls/user32/menu.c: + user32: Further implementation of MNS_NOTIFYBYPOS. + +2008-05-26 Dan Kegel + + * dlls/advapi32/service.c: + advapi32: Don't test buffer length if buffer is null. + +2008-05-27 James Hawkins + + * dlls/usp10/tests/usp10.c: + usp10: Fix several failing test in win2k3. + +2008-05-26 Jon Griffiths + + * dlls/msvcrt/wcs.c: + msvcrt: Follow Vista behaviour in wcscpy_s. + + * dlls/msvcrt/tests/string.c: + msvcrt/tests: Fix 3 tests that always fail on Vista. + +2008-05-26 Dan Kegel + + * dlls/fusion/assembly.c: + fusion: Use HeapAlloc, not strdup, to avoid malloc/HeapFree mismatch. + +2008-05-27 Paul Vriens + + * dlls/shell32/tests/shelllink.c: + shell32/tests: Run tests again on win95. + +2008-05-27 Dan Kegel + + * dlls/fusion/tests/asmcache.c: + fusion: UninstallAssembly test: Fix typo, avoid undefined value. + +2008-05-27 Michael Karcher + + * dlls/oleaut32/tests/vartype.c: + oleaut32/tests: Call functions via manually obtained pointers. + +2008-05-27 Paul Vriens + + * dlls/setupapi/tests/devinst.c: + setupapi/tests: Test to show cleanup should not be needed. + + * dlls/setupapi/tests/devinst.c: + setupapi/tests: Add another test. + +2008-05-27 Dmitry Timoshkov + + * dlls/msvcrt/console.c: + msvcrt: Mark some data as constant. + +2008-05-23 Tomasz Jezierski - Tefnet + + * dlls/comctl32/tests/listview.c: + comctl32/tests: Fix for setting wrong initial position in listbox. + +2008-05-26 Dmitry Timoshkov + + * dlls/user32/tests/win.c: + user32: Add the tests for GetWindowModuleFileName. + +2008-05-13 Dmitry Timoshkov + + * dlls/user32/user32.spec, dlls/user32/win.c: + user32: Implement GetWindowModuleFileName. + +2008-05-26 Paul Vriens + + * dlls/setupapi/tests/devinst.c: + setupapi/tests: Cleanup after testCreateDeviceInterface. + +2008-05-26 Vitaliy Margolen + + * dlls/winex11.drv/ime.c: + winex11: Use memmove for possibly overlapping memory areas. + + * dlls/shell32/classes.c: + shell32: Don't print not initialized value. + +2008-05-27 John Klehm + + * dlls/winex11.drv/wintab.c: + winex11: Support detection of tablet devices from XExtensionKeyboard type. + +2008-05-26 John Klehm + + * dlls/winex11.drv/wintab.c: + winex11: Detect acecad tablet as stylus device. + +2008-05-27 Michael Stefaniuc + + * dlls/shell32/shell32_Ca.rc: + shell32: Fix the Catalan translation. + + * dlls/comdlg32/cdlg_Ca.rc: + comdlg32: Fix the Catalan translation including some size fixes too. + +2008-05-26 Jon Griffiths + + * dlls/msvcrt/tests/cpp.c: + msvcrt/tests: Fix 4 tests that always fail on Vista. + +2008-05-26 Michael Karcher + + * dlls/oleaut32/tests/vartype.c, dlls/oleaut32/vartype.c: + oleaut32: Currency to BSTR must use local decimal separator. + +2008-05-25 Dmitry Timoshkov + + * dlls/gdi32/enhmetafile.c, dlls/gdi32/metafile.c, + dlls/gdi32/tests/metafile.c: + gdi32: Make generated EMFs fully match Windows ones. + + * dlls/gdi32/enhmfdrv/graphics.c: + gdi32: If there is no clipping rect, EMREXTTEXTOUT shouldn't have a bounding + rect. + + * dlls/gdi32/tests/metafile.c: + gdi32: Ignore exScale/eyScale when comparing EMREXTTEXTOUT EMF records. + +2008-05-24 H. Verbeet + + * dlls/d3d9/tests/visual.c: + d3d9: Test our texop implementation. + + * dlls/d3d8/tests/visual.c: + d3d8: Test our texop implementation. + + * dlls/wined3d/utils.c: + wined3d: Fix the nvrc implementation of WINED3DTOP_MULTIPLYADD and + WINED3DTOP_LERP. + + * dlls/wined3d/utils.c: + wined3d: Add WINED3DTOP_ADDSIGNED2X to debug_d3dtop(). + + * dlls/d3d8/tests/visual.c, dlls/d3d9/tests/visual.c: + d3d: Use an alpha capable backbuffer format in the visual tests. + +2008-05-23 Detlef Riekenberg + + * dlls/avifil32/avifile_Cs.rc, dlls/avifil32/avifile_Da.rc, + dlls/avifil32/avifile_De.rc, dlls/avifil32/avifile_En.rc, + dlls/avifil32/avifile_Es.rc, dlls/avifil32/avifile_Fr.rc, + dlls/avifil32/avifile_Hu.rc, dlls/avifil32/avifile_It.rc, + dlls/avifil32/avifile_Ja.rc, dlls/avifil32/avifile_Ko.rc, + dlls/avifil32/avifile_Nl.rc, dlls/avifil32/avifile_No.rc, + dlls/avifil32/avifile_Pl.rc, dlls/avifil32/avifile_Pt.rc, + dlls/avifil32/avifile_Ru.rc, dlls/avifil32/avifile_Si.rc, + dlls/avifil32/avifile_Sv.rc, dlls/avifil32/avifile_Tr.rc: + avifil32: Resize the dialog to avoid truncated texts. + +2008-05-23 Eric Pouech + + * programs/winedbg/debugger.h, programs/winedbg/memory.c, + programs/winedbg/types.c: + winedbg: Fixed the print_basic command when dealing with long long values. + + * programs/winedbg/debugger.h, programs/winedbg/memory.c, + programs/winedbg/types.c: + winedbg: Removed unneeded variable from print_basic. + + * dlls/msvcrt/console.c: + msvcrt: Properly handle the extended keys in getch(). + +2008-05-27 Alexandre Julliard + + * programs/winetest/main.c: + winetest: Don't submit test results if we don't have a valid git build id. + + * programs/winetest/Makefile.in, programs/winetest/dist.rc, + programs/winetest/main.c, programs/winetest/maketest, + programs/winetest/resource.h: + winetest: Remove the per-file revision info, we now use the global commit id. + +2008-05-26 Paul Vriens + + * dlls/setupapi/tests/devinst.c: + setupapi/tests: Test registry after testDeviceRegistryProperty. + + * dlls/setupapi/tests/devinst.c: + setupapi/tests: Cleanup after testGetDeviceInterfaceDetail. + + * dlls/setupapi/tests/devinst.c: + setupapi/tests: Cleanup after testRegisterAndGetDetail. + + * dlls/setupapi/tests/devinst.c: + setupapi/tests: Cleanup after testDevRegKey. + + * dlls/setupapi/tests/devinst.c: + setupapi/tests: Skip tests on win9x. + + * dlls/setupapi/tests/devinst.c: + setupapi/tests: Turn guid into a global variable. + + * dlls/setupapi/tests/devinst.c: + setupapi/tests: Fix a test on NT4. + + * dlls/setupapi/tests/devinst.c: + setupapi/tests: Close registry key after use. + +2008-05-26 Dan Kegel + + * dlls/winmm/tests/capture.c: + winmm: Use HeapAlloc in the capture test instead of using strdup. + +2008-05-26 Jacek Caban + + * dlls/mshtml/htmldoc.c: + mshtml: Fixed copy&paste typo. + +2008-05-26 Francois Gouget + + * include/winsock.h: + ws2_32: Make sure INVALID_SOCKET is correctly typed. + +2008-05-26 Dmitry Timoshkov + + * dlls/msi/action.c, dlls/msi/automation.c, dlls/msi/database.c: + msi: Mark some data as constant. + + * dlls/wininet/internet.c: + wininet: INTERNET_InternetOpenUrlW is an internal helper. + +2008-05-26 Hwang YunSong(황윤성) + + * programs/winecfg/Ko.rc: + winecfg: Updated Korean resource. + +2008-05-25 Eric Pouech + + * dlls/dbghelp/module.c: + dbghelp: Fix for SymGetModuleInfo(). + +2008-05-25 Kirill K. Smirnov + + * dlls/mshtml/htmlwindow.c: + mshtml: Fix copy/paste error. + +2008-05-24 Gregor Münch + + * programs/winhlp32/De.rc: + winhlp32: Update German translation. + + * dlls/shell32/shell32_De.rc: + shell32: Update German translation. + +2008-05-26 Alexandre Julliard + + * dlls/Maketest.rules.in, dlls/msvcrt/tests/Makefile.in, + dlls/msvcrtd/tests/Makefile.in: + tests: Use the Wine import libraries when compiling with MinGW. + + * programs/Makeprog.rules.in, programs/notepad/Makefile.in, + programs/regedit/Makefile.in, programs/taskmgr/Makefile.in, + programs/wordpad/Makefile.in, programs/xcopy/Makefile.in: + programs: Use the Wine import libraries when compiling with MinGW. + + * programs/winedbg/gdbproxy.c: + winedbg: Fix compile when poll() is not available. + + * configure, configure.ac, include/config.h.in, include/wine/exception.h, + include/wine/port.h, libs/port/Makefile.in, libs/port/sigsetjmp.c: + libport: Move the sigsetjmp replacement to exception.h to make it available + for Winelib too. + +2008-05-25 Francois Gouget + + * dlls/kernel32/tests/sync.c: + kernel32/tests: Get the tests running again on Win95. + +2008-05-23 Maarten Lankhorst + + * include/rpcdce.h: + include: Add missing RpcMgmtIsServerListening declaration. + +2008-05-26 Kai Blin + + * dlls/ws2_32/socket.c, dlls/ws2_32/tests/sock.c, include/winsock2.h: + ws2_32: Add support for FROM_PROTOCOL_INFO to WSASocket(). + +2008-05-26 James Hawkins + + * dlls/rpcrt4/tests/rpc.c: + rpcrt4: Trace the results of two statuses that return different results across + platforms. + + * dlls/shell32/tests/shelllink.c: + shell32: Test against the long form of the path. + + * programs/winetest/main.c: + winetest: Use the win32 API to extract the tests. + + * dlls/mshtml/tests/htmldoc.c: + mshtml: Fix a test failure in win2k3. + + * include/docobj.idl: + mshtml: Add missing OLECMDID definitions. + +2008-05-25 Eric Pouech + + * dlls/dbghelp/dwarf.c: + dbghelp: Don't crash when parsing the forward declaration of a function. + +2008-05-25 Andrej Sinicyn + + * programs/regedit/De.rc: + regedit: Update the German translation. + +2008-05-25 Michael Karcher + + * dlls/crypt32/cert.c, dlls/crypt32/tests/cert.c: + crypt32: CertGetPublicKeyLength should check only cert encoding type. + pktextract calls CertGetPublicKeyLength with dwCertEncodingType + of X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, MSDN explicitly + allows it. + + * dlls/crypt32/encode.c, dlls/crypt32/tests/encode.c: + crypt32: Pass on aiKeyAlg on RSA key import. + + * dlls/crypt32/encode.c: + crypt32: Fix order-of-evaluation dependence. + +2008-05-25 Michael Karcher + + * dlls/crypt32/encode.c: + crypt32: Fix integer overflow. + +2008-05-25 Jacek Caban + + * dlls/mshtml/task.c, dlls/mshtml/tests/htmldoc.c: + mshtml: Fixed more tests on IE 7. + + * dlls/mshtml/task.c: + mshtml: Make Wine behave like IE 7. + + * dlls/mshtml/tests/htmldoc.c: + mshtml: Fixed some tests on IE 7. + +2008-05-24 Alistair Leslie-Hughes + + * dlls/msxml3/tests/domdoc.c: + msxml3: Stopped tests from crashing and a Win98 fix. + +2008-05-23 Alexandre Julliard + + * ANNOUNCE, ChangeLog, VERSION, configure: + Release 1.0-rc2. + +---------------------------------------------------------------- 2008-05-23 Alexandre Julliard * README: diff --git a/VERSION b/VERSION index 3e86e6d3194..482a1f4ae59 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Wine version 1.0-rc2 +Wine version 1.0-rc3 diff --git a/configure b/configure index b375056e7f6..eeb2f06ac3f 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for Wine 1.0-rc2. +# Generated by GNU Autoconf 2.61 for Wine 1.0-rc3. # # Report bugs to . # @@ -574,8 +574,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='Wine' PACKAGE_TARNAME='wine' -PACKAGE_VERSION='1.0-rc2' -PACKAGE_STRING='Wine 1.0-rc2' +PACKAGE_VERSION='1.0-rc3' +PACKAGE_STRING='Wine 1.0-rc3' PACKAGE_BUGREPORT='wine-devel@winehq.org' ac_unique_file="server/atom.c" @@ -1295,7 +1295,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Wine 1.0-rc2 to adapt to many kinds of systems. +\`configure' configures Wine 1.0-rc3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1364,7 +1364,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Wine 1.0-rc2:";; + short | recursive ) echo "Configuration of Wine 1.0-rc3:";; esac cat <<\_ACEOF @@ -1494,7 +1494,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Wine configure 1.0-rc2 +Wine configure 1.0-rc3 generated by GNU Autoconf 2.61 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1508,7 +1508,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Wine $as_me 1.0-rc2, which was +It was created by Wine $as_me 1.0-rc3, which was generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ @@ -14471,69 +14471,6 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for sigsetjmp" >&5 -echo $ECHO_N "checking for sigsetjmp... $ECHO_C" >&6; } -if test "${ac_cv_c_sigsetjmp+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -int -main () -{ -sigjmp_buf buf; - sigsetjmp( buf, 1 ); - siglongjmp( buf, 1 ); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_c_sigsetjmp="yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_c_sigsetjmp="no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_sigsetjmp" >&5 -echo "${ECHO_T}$ac_cv_c_sigsetjmp" >&6; } -if test "$ac_cv_c_sigsetjmp" = "yes" -then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_SIGSETJMP 1 -_ACEOF - -fi - { echo "$as_me:$LINENO: checking for pthread_rwlock_t" >&5 echo $ECHO_N "checking for pthread_rwlock_t... $ECHO_C" >&6; } if test "${ac_cv_type_pthread_rwlock_t+set}" = set; then @@ -22825,7 +22762,7 @@ exec 6>&1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Wine $as_me 1.0-rc2, which was +This file was extended by Wine $as_me 1.0-rc3, which was generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22878,7 +22815,7 @@ Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -Wine config.status 1.0-rc2 +Wine config.status 1.0-rc3 configured by $0, generated by GNU Autoconf 2.61, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" diff --git a/configure.ac b/configure.ac index 268266d795a..a21fccb25b7 100644 --- a/configure.ac +++ b/configure.ac @@ -1060,17 +1060,6 @@ then AC_DEFINE(HAVE___VA_COPY, 1, [Define if we have __va_copy]) fi -dnl **** Check for sigsetjmp **** -AC_CACHE_CHECK([for sigsetjmp], ac_cv_c_sigsetjmp, - AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[sigjmp_buf buf; - sigsetjmp( buf, 1 ); - siglongjmp( buf, 1 );]])],[ac_cv_c_sigsetjmp="yes"],[ac_cv_c_sigsetjmp="no"]) - ) -if test "$ac_cv_c_sigsetjmp" = "yes" -then - AC_DEFINE(HAVE_SIGSETJMP, 1, [Define to 1 if you have the sigsetjmp (and siglongjmp) function]) -fi - dnl **** Check for pthread_rwlock_t **** AC_CHECK_TYPES([pthread_rwlock_t, pthread_rwlockattr_t],,,[#define _GNU_SOURCE #include ]) diff --git a/dlls/Maketest.rules.in b/dlls/Maketest.rules.in index 6c70a236320..5256900104c 100644 --- a/dlls/Maketest.rules.in +++ b/dlls/Maketest.rules.in @@ -33,12 +33,12 @@ all: $(TESTPROGRAM) # Rules for .so main module $(MODULE).so: $(OBJS) $(RC_SRCS:.rc=.res) Makefile.in - $(WINEGCC) -B$(TOOLSDIR)/tools/winebuild -mconsole $(OBJS) $(RC_SRCS:.rc=.res) -o $@ $(LIBPORT) $(ALL_LIBS) + $(WINEGCC) -B$(TOOLSDIR)/tools/winebuild -mconsole $(APPMODE) $(OBJS) $(RC_SRCS:.rc=.res) -o $@ $(LIBPORT) $(ALL_LIBS) # Rules for .exe main module $(MODULE): $(OBJS) $(RCOBJS) Makefile.in - $(CC) $(OBJS) $(RCOBJS) -o $@ $(ALL_LIBS) + $(CC) $(APPMODE) $(OBJS) $(RCOBJS) -o $@ -L$(DLLDIR) $(IMPORTS:%=-L$(DLLDIR)/%) $(ALL_LIBS) # Rules for building test list diff --git a/dlls/advapi32/service.c b/dlls/advapi32/service.c index fc5be79b3c4..c04eb8cef69 100644 --- a/dlls/advapi32/service.c +++ b/dlls/advapi32/service.c @@ -1811,7 +1811,7 @@ BOOL WINAPI GetServiceKeyNameA( SC_HANDLE hSCManager, LPCSTR lpDisplayName, sizeW = *lpcchBuffer; if (!GetServiceKeyNameW(hSCManager, lpDisplayNameW, lpServiceNameW, &sizeW)) { - if (*lpcchBuffer && lpServiceName) + if (lpServiceName && *lpcchBuffer) lpServiceName[0] = 0; *lpcchBuffer = sizeW*2; /* we can only provide an upper estimation of string length */ goto cleanup; @@ -1922,7 +1922,7 @@ BOOL WINAPI GetServiceDisplayNameA( SC_HANDLE hSCManager, LPCSTR lpServiceName, sizeW = *lpcchBuffer; if (!GetServiceDisplayNameW(hSCManager, lpServiceNameW, lpDisplayNameW, &sizeW)) { - if (*lpcchBuffer && lpDisplayName) + if (lpDisplayName && *lpcchBuffer) lpDisplayName[0] = 0; *lpcchBuffer = sizeW*2; /* we can only provide an upper estimation of string length */ goto cleanup; diff --git a/dlls/advpack/advpack.c b/dlls/advpack/advpack.c index 8ef1c9ae397..6c26e51083e 100644 --- a/dlls/advpack/advpack.c +++ b/dlls/advpack/advpack.c @@ -68,8 +68,8 @@ static void strip_quotes(WCHAR *buffer, DWORD *size) static void get_dest_dir(HINF hInf, PCWSTR pszSection, PWSTR pszBuffer, DWORD dwSize) { INFCONTEXT context; - WCHAR key[MAX_PATH], value[MAX_PATH]; - WCHAR prefix[PREFIX_LEN]; + WCHAR key[MAX_PATH + 2], value[MAX_PATH + 2]; + WCHAR prefix[PREFIX_LEN + 2]; HKEY root, subkey; DWORD size; @@ -78,11 +78,11 @@ static void get_dest_dir(HINF hInf, PCWSTR pszSection, PWSTR pszBuffer, DWORD dw /* load the destination parameters */ SetupFindFirstLineW(hInf, pszSection, NULL, &context); - SetupGetStringFieldW(&context, 1, prefix, PREFIX_LEN, &size); + SetupGetStringFieldW(&context, 1, prefix, PREFIX_LEN + 2, &size); strip_quotes(prefix, &size); - SetupGetStringFieldW(&context, 2, key, MAX_PATH, &size); + SetupGetStringFieldW(&context, 2, key, MAX_PATH + 2, &size); strip_quotes(key, &size); - SetupGetStringFieldW(&context, 3, value, MAX_PATH, &size); + SetupGetStringFieldW(&context, 3, value, MAX_PATH + 2, &size); strip_quotes(value, &size); if (!lstrcmpW(prefix, hklm)) diff --git a/dlls/advpack/tests/advpack.c b/dlls/advpack/tests/advpack.c index b90df2d4b65..e761577e477 100644 --- a/dlls/advpack/tests/advpack.c +++ b/dlls/advpack/tests/advpack.c @@ -465,6 +465,63 @@ static void translateinfstringex_test(void) ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); DeleteFileA(inf_file); + + /* Create another .inf file which is just here to trigger a wine bug */ + { + char data[1024]; + char *ptr = data; + DWORD dwNumberOfBytesWritten; + HANDLE hf = CreateFile(inf_file, GENERIC_WRITE, 0, NULL, + CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + + append_str(&ptr, "[Version]\n"); + append_str(&ptr, "Signature=\"$Chicago$\"\n"); + append_str(&ptr, "[section]\n"); + append_str(&ptr, "NotACustomDestination=Version\n"); + append_str(&ptr, "CustomDestination=CustInstDestSection\n"); + append_str(&ptr, "[CustInstDestSection]\n"); + append_str(&ptr, "49010=DestA,1\n"); + append_str(&ptr, "49020=DestB\n"); + append_str(&ptr, "49030=DestC\n"); + append_str(&ptr, "49040=DestD\n"); + append_str(&ptr, "[Options.NTx86]\n"); + append_str(&ptr, "Result2=%%49030%%\n"); + append_str(&ptr, "[DestA]\n"); + append_str(&ptr, "HKLM,\"Software\\Garbage\",\"ProgramFilesDir\",,'%%24%%'\n"); + /* The point of this test is to have HKCU just before the quoted HKLM */ + append_str(&ptr, "[DestB]\n"); + append_str(&ptr, "HKCU,\"Software\\Garbage\",\"ProgramFilesDir\",,'%%24%%'\n"); + append_str(&ptr, "[DestC]\n"); + append_str(&ptr, "'HKLM','Software\\Microsoft\\Windows\\CurrentVersion',"); + append_str(&ptr, "'ProgramFilesDir',,\"%%24%%\"\n"); + append_str(&ptr, "[DestD]\n"); + append_str(&ptr, "HKLM,\"Software\\Garbage\",\"ProgramFilesDir\",,'%%24%%'\n"); + + WriteFile(hf, data, ptr - data, &dwNumberOfBytesWritten, NULL); + CloseHandle(hf); + } + + /* open the inf with the install section */ + hr = pOpenINFEngine(inf_file, "section", 0, &hinf, NULL); + ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + + /* Single quote test (Note size includes null on return from call) */ + memset(buffer, 'a', APP_PATH_LEN); + buffer[APP_PATH_LEN - 1] = '\0'; + size = MAX_PATH; + hr = pTranslateInfStringEx(hinf, inf_file, "Options.NTx86", "Result2", + buffer, size, &size, NULL); + ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + ok(!lstrcmpi(buffer, PROG_FILES_ROOT), + "Expected %s, got %s\n", PROG_FILES_ROOT, buffer); + ok(size == lstrlenA(PROG_FILES_ROOT)+1, "Expected size %d, got %d\n", + lstrlenA(PROG_FILES_ROOT)+1, size); + + /* close the INF again */ + hr = pCloseINFEngine(hinf); + ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + + DeleteFileA(inf_file); } static BOOL check_reg_str(HKEY hkey, LPCSTR name, LPCSTR value) diff --git a/dlls/avifil32/avifile_Cs.rc b/dlls/avifil32/avifile_Cs.rc index 25d4ce56df9..86dac3fdf85 100644 --- a/dlls/avifil32/avifile_Cs.rc +++ b/dlls/avifil32/avifile_Cs.rc @@ -24,22 +24,22 @@ LANGUAGE LANG_CZECH, SUBLANG_DEFAULT /* Czech strings in CP1250 */ -IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 196, 82 +IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 226, 82 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Nastavení komprese" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "&Vyber datový proud:",-1,2,5,114,10 - COMBOBOX IDC_STREAM,2,18,134,61,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "&Vyber datový proud:",-1,2,5,154,10 + COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "V&olby...",IDC_OPTIONS,145,17,45,14 - AUTOCHECKBOX "Prolož&it každých",IDC_INTERLEAVE,3,42,60,11,WS_TABSTOP - EDITTEXT IDC_INTERLEAVEEVERY,66,41,32,12,ES_AUTOHSCROLL - LTEXT "rámcù",-1,104,43,36,9 - LTEXT "Souèasný formát:",-1,3,56,53,9 - LTEXT "Zbývající místo",IDC_FORMATTEXT,55,56,90,26 - DEFPUSHBUTTON "Budiž",IDOK,145,42,45,14 - PUSHBUTTON "Zrušit",IDCANCEL,145,61,45,14 + PUSHBUTTON "V&olby...",IDC_OPTIONS,170,17,50,14 + AUTOCHECKBOX "Prolož&it každých",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP + EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL + LTEXT "rámcù",-1,129,43,36,9 + LTEXT "Souèasný formát:",-1,3,56,73,9 + LTEXT "Zbývající místo",IDC_FORMATTEXT,75,56,90,26 + DEFPUSHBUTTON "Budiž",IDOK,170,42,50,14 + PUSHBUTTON "Zrušit",IDCANCEL,170,61,50,14 END STRINGTABLE DISCARDABLE diff --git a/dlls/avifil32/avifile_Da.rc b/dlls/avifil32/avifile_Da.rc index a9ca5e7b151..669e9185906 100644 --- a/dlls/avifil32/avifile_Da.rc +++ b/dlls/avifil32/avifile_Da.rc @@ -18,22 +18,22 @@ LANGUAGE LANG_DANISH, SUBLANG_DEFAULT -IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 196, 82 +IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 226, 82 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Komprimerings indstillinger" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "&Vælg en stream:",-1,2,5,114,10 - COMBOBOX IDC_STREAM,2,18,134,61,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "&Vælg en stream:",-1,2,5,154,10 + COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "&Indstillinger...",IDC_OPTIONS,145,17,45,14 - AUTOCHECKBOX "&Interleave hver",IDC_INTERLEAVE,3,42,60,11,WS_TABSTOP - EDITTEXT IDC_INTERLEAVEEVERY,66,41,32,12,ES_AUTOHSCROLL - LTEXT "billeder",-1,104,43,36,9 + PUSHBUTTON "I&ndstillinger...",IDC_OPTIONS,170,17,50,14 + AUTOCHECKBOX "&Interleave hver",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP + EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL + LTEXT "billeder",-1,129,43,36,9 LTEXT "Nuværende format:",-1,3,56,53,9 LTEXT "This space for rent",IDC_FORMATTEXT,55,56,90,26 - DEFPUSHBUTTON "OK",IDOK,145,42,45,14 - PUSHBUTTON "Annuller",IDCANCEL,145,61,45,14 + DEFPUSHBUTTON "OK",IDOK,170,42,50,14 + PUSHBUTTON "Annuller",IDCANCEL,170,61,50,14 END STRINGTABLE DISCARDABLE diff --git a/dlls/avifil32/avifile_De.rc b/dlls/avifil32/avifile_De.rc index 7539af26186..9e3e5f284d0 100644 --- a/dlls/avifil32/avifile_De.rc +++ b/dlls/avifil32/avifile_De.rc @@ -18,22 +18,22 @@ LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL -IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 196, 82 +IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 226, 82 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Komprimierungsoptionen" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "&Wählen Sie die Eingangsdaten aus:",-1,2,5,114,10 - COMBOBOX IDC_STREAM,2,18,134,61,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "&Wählen Sie die Eingangsdaten aus:",-1,2,5,154,10 + COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "&Optionen...",IDC_OPTIONS,145,17,45,14 - AUTOCHECKBOX "&Interleave alle",IDC_INTERLEAVE,3,42,60,11,WS_TABSTOP - EDITTEXT IDC_INTERLEAVEEVERY,66,41,32,12,ES_AUTOHSCROLL - LTEXT "Einzelbilder",-1,104,43,36,9 - LTEXT "Akuelles Format:",-1,3,56,53,9 - LTEXT "This space for rent",IDC_FORMATTEXT,55,56,90,26 - DEFPUSHBUTTON "OK",IDOK,145,42,45,14 - PUSHBUTTON "Abbrechen",IDCANCEL,145,61,45,14 + PUSHBUTTON "&Optionen...",IDC_OPTIONS,170,17,50,14 + AUTOCHECKBOX "&Interleave alle",IDC_INTERLEAVE,3,42,75,11,WS_TABSTOP + EDITTEXT IDC_INTERLEAVEEVERY,81,41,32,12,ES_AUTOHSCROLL + LTEXT "Einzelbilder",-1,119,43,36,9 + LTEXT "Aktuelles Format:",-1,3,56,73,9 + LTEXT "This space for rent",IDC_FORMATTEXT,75,56,90,26 + DEFPUSHBUTTON "OK",IDOK,170,42,50,14 + PUSHBUTTON "Abbrechen",IDCANCEL,170,61,50,14 END STRINGTABLE DISCARDABLE diff --git a/dlls/avifil32/avifile_En.rc b/dlls/avifil32/avifile_En.rc index 2fc5b451cb6..0947cbd47d0 100644 --- a/dlls/avifil32/avifile_En.rc +++ b/dlls/avifil32/avifile_En.rc @@ -18,22 +18,22 @@ LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT -IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 196, 82 +IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 226, 82 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Compress options" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "&Choose a stream:",-1,2,5,114,10 - COMBOBOX IDC_STREAM,2,18,134,61,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "&Choose a stream:",-1,2,5,154,10 + COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "&Options...",IDC_OPTIONS,145,17,45,14 - AUTOCHECKBOX "&Interleave every",IDC_INTERLEAVE,3,42,60,11,WS_TABSTOP - EDITTEXT IDC_INTERLEAVEEVERY,66,41,32,12,ES_AUTOHSCROLL - LTEXT "frames",-1,104,43,36,9 - LTEXT "Current format:",-1,3,56,53,9 - LTEXT "This space for rent",IDC_FORMATTEXT,55,56,90,26 - DEFPUSHBUTTON "OK",IDOK,145,42,45,14 - PUSHBUTTON "Cancel",IDCANCEL,145,61,45,14 + PUSHBUTTON "&Options...",IDC_OPTIONS,170,17,50,14 + AUTOCHECKBOX "&Interleave every",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP + EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL + LTEXT "frames",-1,129,43,36,9 + LTEXT "Current format:",-1,3,56,73,9 + LTEXT "This space for rent",IDC_FORMATTEXT,75,56,90,26 + DEFPUSHBUTTON "OK",IDOK,170,42,50,14 + PUSHBUTTON "Cancel",IDCANCEL,170,61,50,14 END STRINGTABLE DISCARDABLE diff --git a/dlls/avifil32/avifile_Es.rc b/dlls/avifil32/avifile_Es.rc index ee3e73a4c81..45d7003fb7d 100644 --- a/dlls/avifil32/avifile_Es.rc +++ b/dlls/avifil32/avifile_Es.rc @@ -18,22 +18,22 @@ LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL -IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 196, 82 +IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 226, 82 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Opciones de compresión" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "&Elija un stream:",-1,2,5,114,10 - COMBOBOX IDC_STREAM,2,18,134,61,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "&Elija un stream:",-1,2,5,154,10 + COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "&Opciones...",IDC_OPTIONS,145,17,45,14 - AUTOCHECKBOX "&Interleave cada",IDC_INTERLEAVE,3,42,60,11,WS_TABSTOP - EDITTEXT IDC_INTERLEAVEEVERY,66,41,32,12,ES_AUTOHSCROLL - LTEXT "cuadros",-1,104,43,36,9 - LTEXT "Formato actual:",-1,3,56,53,9 - LTEXT "Espacio en alquiler",IDC_FORMATTEXT,55,56,90,26 - DEFPUSHBUTTON "Aceptar",IDOK,145,42,45,14 - PUSHBUTTON "Cancelar",IDCANCEL,145,61,45,14 + PUSHBUTTON "&Opciones...",IDC_OPTIONS,170,17,50,14 + AUTOCHECKBOX "&Interleave cada",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP + EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL + LTEXT "cuadros",-1,129,43,36,9 + LTEXT "Formato actual:",-1,3,56,73,9 + LTEXT "Espacio en alquiler",IDC_FORMATTEXT,75,56,90,26 + DEFPUSHBUTTON "Aceptar",IDOK,170,42,50,14 + PUSHBUTTON "Cancelar",IDCANCEL,170,61,50,14 END STRINGTABLE DISCARDABLE diff --git a/dlls/avifil32/avifile_Fr.rc b/dlls/avifil32/avifile_Fr.rc index ceb751bc669..6a38721d58f 100644 --- a/dlls/avifil32/avifile_Fr.rc +++ b/dlls/avifil32/avifile_Fr.rc @@ -22,22 +22,22 @@ LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL -IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 196, 82 +IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 226, 82 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Options de compression" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "&Sélectionnez un flux :",-1,2,5,114,10 - COMBOBOX IDC_STREAM,2,18,134,61,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "&Sélectionnez un flux :",-1,2,5,154,10 + COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "&Options...",IDC_OPTIONS,145,17,45,14 - AUTOCHECKBOX "&Imbriquer à chaque",IDC_INTERLEAVE,3,42,60,11,WS_TABSTOP - EDITTEXT IDC_INTERLEAVEEVERY,66,41,32,12,ES_AUTOHSCROLL - LTEXT "images",-1,104,43,36,9 - LTEXT "Format actuel :",-1,3,56,53,9 - LTEXT "Cet espace est à louer",IDC_FORMATTEXT,55,56,90,26 - DEFPUSHBUTTON "OK",IDOK,145,42,45,14 - PUSHBUTTON "Annuler",IDCANCEL,145,61,45,14 + PUSHBUTTON "&Options...",IDC_OPTIONS,170,17,50,14 + AUTOCHECKBOX "&Imbriquer à chaque",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP + EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL + LTEXT "images",-1,129,43,36,9 + LTEXT "Format actuel:",-1,3,56,73,9 + LTEXT "Cet espace est à louer",IDC_FORMATTEXT,75,56,90,26 + DEFPUSHBUTTON "OK",IDOK,170,42,50,14 + PUSHBUTTON "Annuler",IDCANCEL,170,61,50,14 END STRINGTABLE DISCARDABLE diff --git a/dlls/avifil32/avifile_Hu.rc b/dlls/avifil32/avifile_Hu.rc index 8eb98250219..e9bdce9997a 100644 --- a/dlls/avifil32/avifile_Hu.rc +++ b/dlls/avifil32/avifile_Hu.rc @@ -18,22 +18,22 @@ LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT -IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 196, 82 +IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 226, 82 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Tömörítési beállítások" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "&Válassuon folyamot:",-1,2,5,114,10 - COMBOBOX IDC_STREAM,2,18,134,61,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "&Válassuon folyamot:",-1,2,5,154,10 + COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "&Opciók...",IDC_OPTIONS,145,17,45,14 - AUTOCHECKBOX "&Beékel minden",IDC_INTERLEAVE,3,42,60,11,WS_TABSTOP - EDITTEXT IDC_INTERLEAVEEVERY,66,41,32,12,ES_AUTOHSCROLL - LTEXT "képkockát",-1,104,43,36,9 - LTEXT "Jelenlegi formátum:",-1,3,56,53,9 - LTEXT "Ez hely kölcsönzésre",IDC_FORMATTEXT,55,56,90,26 - DEFPUSHBUTTON "OK",IDOK,145,42,45,14 - PUSHBUTTON "Mégse",IDCANCEL,145,61,45,14 + PUSHBUTTON "&Opciók...",IDC_OPTIONS,170,17,50,14 + AUTOCHECKBOX "&Beékel minden",IDC_INTERLEAVE,3,42,75,11,WS_TABSTOP + EDITTEXT IDC_INTERLEAVEEVERY,81,41,32,12,ES_AUTOHSCROLL + LTEXT "képkockát",-1,119,43,36,9 + LTEXT "Jelenlegi formátum:",-1,3,56,73,9 + LTEXT "Ez hely kölcsönzésre",IDC_FORMATTEXT,75,56,90,26 + DEFPUSHBUTTON "OK",IDOK,170,42,50,14 + PUSHBUTTON "Mégse",IDCANCEL,170,61,50,14 END STRINGTABLE DISCARDABLE diff --git a/dlls/avifil32/avifile_It.rc b/dlls/avifil32/avifile_It.rc index 4d333b993ea..6f06ec538a8 100644 --- a/dlls/avifil32/avifile_It.rc +++ b/dlls/avifil32/avifile_It.rc @@ -19,22 +19,22 @@ LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL -IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 196, 82 +IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 226, 82 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Opzioni di compressione" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "&Scegliere un flusso:",-1,2,5,114,10 - COMBOBOX IDC_STREAM,2,18,134,61,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "&Scegliere un flusso:",-1,2,5,154,10 + COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "&Opzioni...",IDC_OPTIONS,145,17,45,14 - AUTOCHECKBOX "&Interfoliazione ogni",IDC_INTERLEAVE,3,42,60,11,WS_TABSTOP - EDITTEXT IDC_INTERLEAVEEVERY,66,41,32,12,ES_AUTOHSCROLL - LTEXT "fotogrammi",-1,104,43,36,9 - LTEXT "Formato attuale:",-1,3,56,53,9 - LTEXT "This space for rent",IDC_FORMATTEXT,55,56,90,26 - DEFPUSHBUTTON "OK",IDOK,145,42,45,14 - PUSHBUTTON "Annulla",IDCANCEL,145,61,45,14 + PUSHBUTTON "&Opzioni...",IDC_OPTIONS,170,17,50,14 + AUTOCHECKBOX "&Interfoliazione ogni",IDC_INTERLEAVE,3,42,75,11,WS_TABSTOP + EDITTEXT IDC_INTERLEAVEEVERY,81,41,32,12,ES_AUTOHSCROLL + LTEXT "fotogrammi",-1,119,43,36,9 + LTEXT "Formato attuale:",-1,3,56,73,9 + LTEXT "This space for rent",IDC_FORMATTEXT,75,56,90,26 + DEFPUSHBUTTON "OK",IDOK,170,42,50,14 + PUSHBUTTON "Annulla",IDCANCEL,170,61,50,14 END STRINGTABLE DISCARDABLE diff --git a/dlls/avifil32/avifile_Ja.rc b/dlls/avifil32/avifile_Ja.rc index 38fc247611b..37a38240592 100644 --- a/dlls/avifil32/avifile_Ja.rc +++ b/dlls/avifil32/avifile_Ja.rc @@ -18,22 +18,22 @@ LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT -IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 196, 82 +IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 226, 82 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "ˆ³�kƒIƒvƒVƒ‡ƒ“" FONT 9, "MS UI Gothic" BEGIN - LTEXT "ƒXƒgƒŠ�[ƒ€‚ð‘I‘ð(&C):",-1,2,5,114,10 - COMBOBOX IDC_STREAM,2,18,134,61,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "ƒXƒgƒŠ�[ƒ€‚ð‘I‘ð(&C):",-1,2,5,154,10 + COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "ƒIƒvƒVƒ‡ƒ“(&O)...",IDC_OPTIONS,145,17,45,14 - AUTOCHECKBOX "ƒCƒ“ƒ^�[ƒŠ�[ƒu(&I)",IDC_INTERLEAVE,3,42,60,11,WS_TABSTOP - EDITTEXT IDC_INTERLEAVEEVERY,66,41,32,12,ES_AUTOHSCROLL - LTEXT "ƒtƒŒ�[ƒ€",-1,104,43,36,9 - LTEXT "Œ»�݂̃tƒH�[ƒ}ƒbƒg:",-1,3,56,53,9 - LTEXT "This space for rent",IDC_FORMATTEXT,55,56,90,26 - DEFPUSHBUTTON "OK",IDOK,145,42,45,14 - PUSHBUTTON "ƒLƒƒƒ“ƒZƒ‹",IDCANCEL,145,61,45,14 + PUSHBUTTON "ƒIƒvƒVƒ‡ƒ“(&O)...",IDC_OPTIONS,170,17,50,14 + AUTOCHECKBOX "ƒCƒ“ƒ^�[ƒŠ�[ƒu(&I)",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP + EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL + LTEXT "ƒtƒŒ�[ƒ€",-1,129,43,36,9 + LTEXT "Œ»�݂̃tƒH�[ƒ}ƒbƒg:",-1,3,56,73,9 + LTEXT "This space for rent",IDC_FORMATTEXT,75,56,90,26 + DEFPUSHBUTTON "OK",IDOK,170,42,50,14 + PUSHBUTTON "ƒLƒƒƒ“ƒZƒ‹",IDCANCEL,170,61,50,14 END STRINGTABLE DISCARDABLE diff --git a/dlls/avifil32/avifile_Ko.rc b/dlls/avifil32/avifile_Ko.rc index 4bf60041992..8fbd4078769 100644 --- a/dlls/avifil32/avifile_Ko.rc +++ b/dlls/avifil32/avifile_Ko.rc @@ -19,22 +19,22 @@ LANGUAGE LANG_KOREAN, SUBLANG_NEUTRAL -IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 196, 82 +IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 226, 82 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "¾ÐÃà ¿É¼Ç" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "½ºÆ®¸² ¼±ÅÃ(&C):",-1,2,5,114,10 - COMBOBOX IDC_STREAM,2,18,134,61,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "½ºÆ®¸² ¼±ÅÃ(&C):",-1,2,5,154,10 + COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "¿É¼Ç(&O)...",IDC_OPTIONS,145,17,45,14 - AUTOCHECKBOX "Ç×»ó »óÈ£¹èÄ¡(&I)",IDC_INTERLEAVE,3,42,60,11,WS_TABSTOP - EDITTEXT IDC_INTERLEAVEEVERY,66,41,32,12,ES_AUTOHSCROLL - LTEXT "ÇÁ·¹ÀÓ",-1,104,43,36,9 - LTEXT "ÇöÀç Çü½Ä:",-1,3,56,53,9 - LTEXT "ÇÊ¿äÇÑ °ø°£",IDC_FORMATTEXT,55,56,90,26 - DEFPUSHBUTTON "È®ÀÎ",IDOK,145,42,45,14 - PUSHBUTTON "Ãë¼Ò",IDCANCEL,145,61,45,14 + PUSHBUTTON "¿É¼Ç(&O)...",IDC_OPTIONS,170,17,50,14 + AUTOCHECKBOX "Ç×»ó »óÈ£¹èÄ¡(&I)",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP + EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL + LTEXT "ÇÁ·¹ÀÓ",-1,129,43,36,9 + LTEXT "ÇöÀç Çü½Ä:",-1,3,56,73,9 + LTEXT "ÇÊ¿äÇÑ °ø°£",IDC_FORMATTEXT,75,56,90,26 + DEFPUSHBUTTON "È®ÀÎ",IDOK,170,42,50,14 + PUSHBUTTON "Ãë¼Ò",IDCANCEL,170,61,50,14 END STRINGTABLE DISCARDABLE diff --git a/dlls/avifil32/avifile_Nl.rc b/dlls/avifil32/avifile_Nl.rc index 9d6ce689466..b1205721871 100644 --- a/dlls/avifil32/avifile_Nl.rc +++ b/dlls/avifil32/avifile_Nl.rc @@ -20,22 +20,22 @@ LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL -IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 196, 82 +IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 226, 82 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Compressie-instellingen" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "&Kies een invoerbestand:",-1,2,5,114,10 - COMBOBOX IDC_STREAM,2,18,134,61,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "&Kies een invoerbestand:",-1,2,5,154,10 + COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "&Opties...",IDC_OPTIONS,145,17,45,14 - AUTOCHECKBOX "&Interleave alle",IDC_INTERLEAVE,3,42,60,11,WS_TABSTOP - EDITTEXT IDC_INTERLEAVEEVERY,66,41,32,12,ES_AUTOHSCROLL - LTEXT "Losse frames",-1,104,43,36,9 - LTEXT "Huidig formaat:",-1,3,56,53,9 - LTEXT "This space for rent",IDC_FORMATTEXT,55,56,90,26 - DEFPUSHBUTTON "OK",IDOK,145,42,45,14 - PUSHBUTTON "Annuleren",IDCANCEL,145,61,45,14 + PUSHBUTTON "&Opties...",IDC_OPTIONS,170,17,50,14 + AUTOCHECKBOX "&Interleave alle",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP + EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL + LTEXT "Losse frames",-1,129,43,36,9 + LTEXT "Huidig formaat:",-1,3,56,73,9 + LTEXT "This space for rent",IDC_FORMATTEXT,75,56,90,26 + DEFPUSHBUTTON "OK",IDOK,170,42,50,14 + PUSHBUTTON "Annuleren",IDCANCEL,170,61,50,14 END STRINGTABLE DISCARDABLE diff --git a/dlls/avifil32/avifile_No.rc b/dlls/avifil32/avifile_No.rc index 8ead416b76e..8483ab25b14 100644 --- a/dlls/avifil32/avifile_No.rc +++ b/dlls/avifil32/avifile_No.rc @@ -18,22 +18,22 @@ LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL -IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 196, 82 +IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 226, 82 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Komprimeringsinnstillinger" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "&Velg en strøm:",-1,2,5,114,10 - COMBOBOX IDC_STREAM,2,18,134,61,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "&Velg en strøm:",-1,2,5,154,10 + COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "I&nnstillinger . . .",IDC_OPTIONS,145,17,45,14 - AUTOCHECKBOX "Sett &inn for hver",IDC_INTERLEAVE,3,42,60,11,WS_TABSTOP - EDITTEXT IDC_INTERLEAVEEVERY,66,41,32,12,ES_AUTOHSCROLL - LTEXT "bilde",-1,104,43,36,9 - LTEXT "Gjeldende format:",-1,3,56,53,9 - LTEXT "Denne plassen er til leie",IDC_FORMATTEXT,55,56,90,26 - DEFPUSHBUTTON "OK",IDOK,145,42,45,14 - PUSHBUTTON "Avbryt",IDCANCEL,145,61,45,14 + PUSHBUTTON "I&nnstillinger...",IDC_OPTIONS,170,17,50,14 + AUTOCHECKBOX "Sett &inn for hver",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP + EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL + LTEXT "bilde",-1,129,43,36,9 + LTEXT "Gjeldende format:",-1,3,56,73,9 + LTEXT "Denne plassen er til leie",IDC_FORMATTEXT,75,56,90,26 + DEFPUSHBUTTON "OK",IDOK,170,42,50,14 + PUSHBUTTON "Avbryt",IDCANCEL,170,61,50,14 END STRINGTABLE DISCARDABLE diff --git a/dlls/avifil32/avifile_Pl.rc b/dlls/avifil32/avifile_Pl.rc index 7fe0ca2d70a..49abdb0c5b8 100644 --- a/dlls/avifil32/avifile_Pl.rc +++ b/dlls/avifil32/avifile_Pl.rc @@ -19,22 +19,22 @@ LANGUAGE LANG_POLISH, SUBLANG_DEFAULT -IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 196, 82 +IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 226, 82 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Opcje kompresji" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "&Wybierz strumieñ:",-1,2,5,114,10 - COMBOBOX IDC_STREAM,2,18,134,61,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "&Wybierz strumieñ:",-1,2,5,154,10 + COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "&Opcje...",IDC_OPTIONS,145,17,45,14 - AUTOCHECKBOX "&Przeplot co",IDC_INTERLEAVE,3,42,60,11,WS_TABSTOP - EDITTEXT IDC_INTERLEAVEEVERY,66,41,32,12,ES_AUTOHSCROLL - LTEXT "klatek",-1,104,43,36,9 - LTEXT "Wybrany format:",-1,2,56,53,9 - LTEXT "Zarezerwowane miejsce",IDC_FORMATTEXT,55,56,90,26 - DEFPUSHBUTTON "OK",IDOK,145,42,45,14 - PUSHBUTTON "Anuluj",IDCANCEL,145,61,45,14 + PUSHBUTTON "&Opcje...",IDC_OPTIONS,170,17,50,14 + AUTOCHECKBOX "&Przeplot co",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP + EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL + LTEXT "klatek",-1,129,43,36,9 + LTEXT "Wybrany format:",-1,2,56,73,9 + LTEXT "Zarezerwowane miejsce",IDC_FORMATTEXT,75,56,90,26 + DEFPUSHBUTTON "OK",IDOK,170,42,50,14 + PUSHBUTTON "Anuluj",IDCANCEL,170,61,50,14 END STRINGTABLE DISCARDABLE diff --git a/dlls/avifil32/avifile_Pt.rc b/dlls/avifil32/avifile_Pt.rc index 7e5d1c530d8..37bb941673b 100644 --- a/dlls/avifil32/avifile_Pt.rc +++ b/dlls/avifil32/avifile_Pt.rc @@ -19,42 +19,42 @@ LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN -IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 196, 82 +IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 226, 82 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Opções de compressão" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "&Escolha a stream:",-1,2,5,114,10 - COMBOBOX IDC_STREAM,2,18,134,61,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "&Escolha a stream:",-1,2,5,154,10 + COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "&Opções...",IDC_OPTIONS,145,17,45,14 - AUTOCHECKBOX "&Interleave every",IDC_INTERLEAVE,3,42,60,11,WS_TABSTOP - EDITTEXT IDC_INTERLEAVEEVERY,66,41,32,12,ES_AUTOHSCROLL - LTEXT "frames",-1,104,43,36,9 - LTEXT "Formato atual:",-1,3,56,53,9 - LTEXT "This space for rent",IDC_FORMATTEXT,55,56,90,26 - DEFPUSHBUTTON "OK",IDOK,145,42,45,14 - PUSHBUTTON "Cancelar",IDCANCEL,145,61,45,14 + PUSHBUTTON "&Opções...",IDC_OPTIONS,170,17,50,14 + AUTOCHECKBOX "&Interleave every",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP + EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL + LTEXT "frames",-1,129,43,36,9 + LTEXT "Formato atual:",-1,3,56,73,9 + LTEXT "This space for rent",IDC_FORMATTEXT,75,56,90,26 + DEFPUSHBUTTON "OK",IDOK,170,42,50,14 + PUSHBUTTON "Cancelar",IDCANCEL,170,61,50,14 END LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE -IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 196, 82 +IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 226, 82 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Opções de compressão" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "&Escolha a stream:",-1,2,5,114,10 - COMBOBOX IDC_STREAM,2,18,134,61,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "&Escolha a stream:",-1,2,5,154,10 + COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "&Opções...",IDC_OPTIONS,145,17,45,14 - AUTOCHECKBOX "&Interlaçar a todos os",IDC_INTERLEAVE,3,42,60,11,WS_TABSTOP - EDITTEXT IDC_INTERLEAVEEVERY,66,41,32,12,ES_AUTOHSCROLL - LTEXT "molduras",-1,104,43,36,9 - LTEXT "Formato actual:",-1,3,56,53,9 - LTEXT "This space for rent",IDC_FORMATTEXT,55,56,90,26 - DEFPUSHBUTTON "OK",IDOK,145,42,45,14 - PUSHBUTTON "Cancelar",IDCANCEL,145,61,45,14 + PUSHBUTTON "&Opções...",IDC_OPTIONS,170,17,50,14 + AUTOCHECKBOX "&Interlaçar a todos os",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP + EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL + LTEXT "molduras",-1,129,43,36,9 + LTEXT "Formato actual:",-1,3,56,73,9 + LTEXT "This space for rent",IDC_FORMATTEXT,75,56,90,26 + DEFPUSHBUTTON "OK",IDOK,170,42,50,14 + PUSHBUTTON "Cancelar",IDCANCEL,170,61,50,14 END diff --git a/dlls/avifil32/avifile_Ru.rc b/dlls/avifil32/avifile_Ru.rc index 88f313c5ec0..fa8206d3824 100644 --- a/dlls/avifil32/avifile_Ru.rc +++ b/dlls/avifil32/avifile_Ru.rc @@ -20,22 +20,22 @@ LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 196, 82 +IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 226, 82 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Íàñòðîéêè ñæàòèÿ" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "&Âûáåðèòå ïîòîê:",-1,2,5,114,10 - COMBOBOX IDC_STREAM,2,18,134,61,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "&Âûáåðèòå ïîòîê:",-1,2,5,154,10 + COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "&Îïöèè...",IDC_OPTIONS,145,17,45,14 - AUTOCHECKBOX "&Ïðîñëàèâàòü êàæäûå",IDC_INTERLEAVE,3,42,60,11,WS_TABSTOP - EDITTEXT IDC_INTERLEAVEEVERY,66,41,32,12,ES_AUTOHSCROLL - LTEXT "ôðåéìà",-1,104,43,36,9 - LTEXT "Òåêóùèé ôîðìàò:",-1,3,56,53,9 - LTEXT "Ýòî ìåñòî ñäà¸òñÿ â àðåíäó",IDC_FORMATTEXT,55,56,90,26 - DEFPUSHBUTTON "OK",IDOK,145,42,45,14 - PUSHBUTTON "Îòìåíà",IDCANCEL,145,61,45,14 + PUSHBUTTON "&Îïöèè...",IDC_OPTIONS,170,17,50,14 + AUTOCHECKBOX "&Ïðîñëàèâàòü êàæäûå",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP + EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL + LTEXT "ôðåéìà",-1,129,43,36,9 + LTEXT "Òåêóùèé ôîðìàò:",-1,3,56,73,9 + LTEXT "Ýòî ìåñòî ñäà¸òñÿ â àðåíäó",IDC_FORMATTEXT,75,56,90,26 + DEFPUSHBUTTON "OK",IDOK,170,42,50,14 + PUSHBUTTON "Îòìåíà",IDCANCEL,170,61,50,14 END STRINGTABLE DISCARDABLE diff --git a/dlls/avifil32/avifile_Si.rc b/dlls/avifil32/avifile_Si.rc index a180953e5b7..5ed3d138367 100644 --- a/dlls/avifil32/avifile_Si.rc +++ b/dlls/avifil32/avifile_Si.rc @@ -20,22 +20,22 @@ LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT -IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 196, 82 +IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 226, 82 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Možnosti stiskanja" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "&Izbran tok:",-1,2,5,114,10 - COMBOBOX IDC_STREAM,2,18,134,61,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "&Izbran tok:",-1,2,5,154,10 + COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "&Možnosti...",IDC_OPTIONS,145,17,45,14 - AUTOCHECKBOX "&Prepletanje vsake",IDC_INTERLEAVE,3,42,60,11,WS_TABSTOP - EDITTEXT IDC_INTERLEAVEEVERY,66,41,32,12,ES_AUTOHSCROLL - LTEXT "slike",-1,104,43,36,9 - LTEXT "Trenutna oblika zapisa:",-1,3,56,53,9 - LTEXT "This space for rent",IDC_FORMATTEXT,55,56,90,26 - DEFPUSHBUTTON "V redu",IDOK,145,42,45,14 - PUSHBUTTON "Prekliči",IDCANCEL,145,61,45,14 + PUSHBUTTON "&Možnosti...",IDC_OPTIONS,170,17,50,14 + AUTOCHECKBOX "&Prepletanje vsake",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP + EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL + LTEXT "slike",-1,129,43,36,9 + LTEXT "Trenutna oblika zapisa:",-1,3,56,73,9 + LTEXT "This space for rent",IDC_FORMATTEXT,75,56,90,26 + DEFPUSHBUTTON "V redu",IDOK,170,42,50,14 + PUSHBUTTON "Prekliči",IDCANCEL,170,61,50,14 END STRINGTABLE DISCARDABLE diff --git a/dlls/avifil32/avifile_Sv.rc b/dlls/avifil32/avifile_Sv.rc index f9dab36425f..f65e4d216cc 100644 --- a/dlls/avifil32/avifile_Sv.rc +++ b/dlls/avifil32/avifile_Sv.rc @@ -18,22 +18,22 @@ LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL -IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 196, 82 +IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 226, 82 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Komprimeringsalternativ" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "&Välj en ström:",-1,2,5,114,10 - COMBOBOX IDC_STREAM,2,18,134,61,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "&Välj en ström:",-1,2,5,154,10 + COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "A<ernativ...",IDC_OPTIONS,145,17,45,14 - AUTOCHECKBOX "&Interfoliera varje",IDC_INTERLEAVE,3,42,60,11,WS_TABSTOP - EDITTEXT IDC_INTERLEAVEEVERY,66,41,32,12,ES_AUTOHSCROLL - LTEXT "frames",-1,104,43,36,9 - LTEXT "Aktuellt format:",-1,3,56,53,9 - LTEXT "Detta utrymme uthyres",IDC_FORMATTEXT,55,56,90,26 - DEFPUSHBUTTON "OK",IDOK,145,42,45,14 - PUSHBUTTON "Avbryt",IDCANCEL,145,61,45,14 + PUSHBUTTON "A<ernativ...",IDC_OPTIONS,170,17,50,14 + AUTOCHECKBOX "&Interfoliera varje",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP + EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL + LTEXT "frames",-1,129,43,36,9 + LTEXT "Aktuellt format:",-1,3,56,73,9 + LTEXT "Detta utrymme uthyres",IDC_FORMATTEXT,75,56,90,26 + DEFPUSHBUTTON "OK",IDOK,170,42,50,14 + PUSHBUTTON "Avbryt",IDCANCEL,170,61,50,14 END STRINGTABLE DISCARDABLE diff --git a/dlls/avifil32/avifile_Tr.rc b/dlls/avifil32/avifile_Tr.rc index b9caa67e463..451802f42bf 100644 --- a/dlls/avifil32/avifile_Tr.rc +++ b/dlls/avifil32/avifile_Tr.rc @@ -18,22 +18,22 @@ LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT -IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 196, 82 +IDD_SAVEOPTIONS DIALOG FIXED IMPURE 43, 37, 226, 82 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Sýkýþtýrma seçenekleri" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "Bir akýþ se&çin:",-1,2,5,114,10 - COMBOBOX IDC_STREAM,2,18,134,61,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "Bir akýþ se&çin:",-1,2,5,154,10 + COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "&Seçenekler...",IDC_OPTIONS,145,17,45,14 - AUTOCHECKBOX "&Interleave every",IDC_INTERLEAVE,3,42,60,11,WS_TABSTOP - EDITTEXT IDC_INTERLEAVEEVERY,66,41,32,12,ES_AUTOHSCROLL - LTEXT "frames",-1,104,43,36,9 - LTEXT "Geçerli biçim:",-1,3,56,53,9 - LTEXT "This space for rent",IDC_FORMATTEXT,55,56,90,26 - DEFPUSHBUTTON "Tamam",IDOK,145,42,45,14 - PUSHBUTTON "Ýptal",IDCANCEL,145,61,45,14 + PUSHBUTTON "&Seçenekler...",IDC_OPTIONS,170,17,50,14 + AUTOCHECKBOX "&Interleave every",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP + EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL + LTEXT "frames",-1,129,43,36,9 + LTEXT "Geçerli biçim:",-1,3,56,73,9 + LTEXT "This space for rent",IDC_FORMATTEXT,75,56,90,26 + DEFPUSHBUTTON "Tamam",IDOK,170,42,50,14 + PUSHBUTTON "Ýptal",IDCANCEL,170,61,50,14 END STRINGTABLE DISCARDABLE diff --git a/dlls/comctl32/tests/listview.c b/dlls/comctl32/tests/listview.c index 790d8b64059..b4cad0caf3f 100644 --- a/dlls/comctl32/tests/listview.c +++ b/dlls/comctl32/tests/listview.c @@ -1171,7 +1171,7 @@ static void test_multiselect(void) SendMessage(hwnd, LVM_SETSELECTIONMARK, 0, -1); /* set initial position */ - SendMessage(hwnd, LVM_SETSELECTIONMARK, 0, (task.initPos == -1 ? item_count : task.initPos)); + SendMessage(hwnd, LVM_SETSELECTIONMARK, 0, (task.initPos == -1 ? item_count -1 : task.initPos)); ListView_SetItemState(hwnd,(task.initPos == -1 ? item_count -1 : task.initPos),LVIS_SELECTED ,LVIS_SELECTED); selected_count = (int)SendMessage(hwnd, LVM_GETSELECTEDCOUNT, 0, 0); diff --git a/dlls/comdlg32/cdlg_Ca.rc b/dlls/comdlg32/cdlg_Ca.rc index adf60de4c5b..b76f412841d 100644 --- a/dlls/comdlg32/cdlg_Ca.rc +++ b/dlls/comdlg32/cdlg_Ca.rc @@ -40,7 +40,7 @@ FONT 8, "MS Shell Dlg" DEFPUSHBUTTON "D'acord", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP PUSHBUTTON "Anul·lació", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "A&juda", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP - CHECKBOX "Només &lectura", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Només &lectura", 1040, 208, 68, 60, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP } @@ -62,7 +62,7 @@ FONT 8, "MS Shell Dlg" DEFPUSHBUTTON "D'acord", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP PUSHBUTTON "Anul·lació", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "A&juda", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP - CHECKBOX "&Fer-ne còpia", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Fer-ne còpia", 1040, 208, 68, 60, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP } @@ -95,9 +95,9 @@ CAPTION "Configuraci FONT 8, "MS Shell Dlg" { GROUPBOX "Impressora:", 1072, 6, 10, 180, 65, BS_GROUPBOX - RADIOBUTTON "Impressora per &defecte", 1056, 16, 20, 80, 12 + RADIOBUTTON "Impressora per &defecte", 1056, 16, 20, 90, 12 LTEXT "[none]", 1088, 35, 35, 120, 9 - RADIOBUTTON "Impressora &especificada:", 1057, 16, 50, 80, 12 + RADIOBUTTON "Impressora &especificada:", 1057, 16, 50, 90, 12 COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP DEFPUSHBUTTON "D'acord", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP PUSHBUTTON "Anul·lació", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP @@ -126,7 +126,7 @@ FONT 8, "MS Shell Dlg" LTEXT "&Estil del tipus de lletra:",1089 ,108,3,44,9 COMBOBOX 1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE - LTEXT "&Grandària:",1090,179,3,30,9 + LTEXT "&Grandària:",1090,179,3,33,9 COMBOBOX 1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT DEFPUSHBUTTON "D'acord",IDOK,218,6,40,14,WS_GROUP @@ -135,7 +135,7 @@ FONT 8, "MS Shell Dlg" PUSHBUTTON "A&juda" , 1038,218,57,40,14,WS_GROUP GROUPBOX "Efectes",1072,6,72,84,34,WS_GROUP CHECKBOX "&Barrar-lo", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP - CHECKBOX "&Subratllar-lo", 1041, 10,94,50,10, BS_AUTOCHECKBOX + CHECKBOX "&Subratllar-lo", 1041, 10,94,60,10, BS_AUTOCHECKBOX LTEXT "&Color:", 1091 ,6,110,30,9 COMBOBOX 1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP @@ -189,7 +189,7 @@ FONT 8, "MS Shell Dlg" LTEXT "&Cercar:", -1, 4, 8, 42, 8 EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP CHECKBOX "C&ercar mots sencers", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP - CHECKBOX "&Distingir majúscules de minúscules", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "&Distingir majúscules de minúscules", 1041, 4, 42, 124, 12, BS_AUTOCHECKBOX | WS_TABSTOP GROUPBOX "Direcció", 1072, 107, 26, 68, 28 CONTROL "&Amunt", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12 CONTROL "A&vall", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 @@ -206,10 +206,10 @@ FONT 8, "MS Shell Dlg" { LTEXT "&Cercar:", -1, 4, 9, 48, 8 EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP - LTEXT "&Substituir per:", 1090, -1, 4, 26, 48, 8 + LTEXT "&Substituir per:", -1, 4, 26, 48, 8 EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP CHECKBOX "Cercar &mots sencers", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP - CHECKBOX "&Distingir majúscules de minúscules", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "&Distingir majúscules de minúscules", 1041, 5, 62, 129, 12, BS_AUTOCHECKBOX | WS_TABSTOP DEFPUSHBUTTON "C&ontinucació", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP PUSHBUTTON "S&ubstitució", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "Substitució &automàtica", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP diff --git a/dlls/comdlg32/cdlg_El.rc b/dlls/comdlg32/cdlg_El.rc index ef3aba56fa8..8c5814edea8 100644 --- a/dlls/comdlg32/cdlg_El.rc +++ b/dlls/comdlg32/cdlg_El.rc @@ -277,6 +277,7 @@ BEGIN LTEXT "ÊáôÜóôáóç:", stc8, 16, 36, 36,10, SS_NOPREFIX LTEXT "Dummy State", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP LTEXT "Ôýðïò:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Dummy Type", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP LTEXT "Ðïõ:", stc10, 16, 60, 36,10, SS_NOPREFIX LTEXT "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP LTEXT "Ó÷üëéï:", stc9, 16, 72, 36,10, SS_NOPREFIX diff --git a/dlls/comdlg32/cdlg_En.rc b/dlls/comdlg32/cdlg_En.rc index 20214484d95..761a7464392 100644 --- a/dlls/comdlg32/cdlg_En.rc +++ b/dlls/comdlg32/cdlg_En.rc @@ -103,8 +103,8 @@ FONT 8, "MS Shell Dlg" PUSHBUTTON "Cancel", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "&Setup", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP GROUPBOX "Orientation", grp2, 6, 85, 100, 50, BS_GROUPBOX - RADIOBUTTON "Po&rtrait", rad3, 50, 100, 40, 12 - RADIOBUTTON "&Landscape", rad4, 50, 115, 40, 12 + RADIOBUTTON "Po&rtrait", rad3, 50, 100, 50, 12 + RADIOBUTTON "&Landscape", rad4, 50, 115, 50, 12 ICON "LANDSCAP", stc10, 10, 95, 32, 32 ICON "PORTRAIT", stc11, 10, 95, 32, 32 GROUPBOX "Paper", grp3, 120, 85, 180, 50, BS_GROUPBOX @@ -191,7 +191,7 @@ FONT 8, "MS Shell Dlg" CHECKBOX "Match &Whole Word Only", chx1, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP CHECKBOX "Match &Case", chx2, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP GROUPBOX "Direction", grp1, 107, 26, 68, 28 - CONTROL "&Up", rad1, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12 + CONTROL "&Up", rad1, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 30, 12 CONTROL "&Down", rad2, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 DEFPUSHBUTTON "&Find Next", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON diff --git a/dlls/comdlg32/cdlg_Eo.rc b/dlls/comdlg32/cdlg_Eo.rc index ade9c9b0b63..18fa7fb2a34 100644 --- a/dlls/comdlg32/cdlg_Eo.rc +++ b/dlls/comdlg32/cdlg_Eo.rc @@ -116,7 +116,7 @@ FONT 8, "MS Shell Dlg" } -CHOOSE_FONT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 147 +CHOOSE_FONT DIALOG DISCARDABLE 36, 24, 264, 147 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Tiparo" FONT 8, "MS Shell Dlg" diff --git a/dlls/comdlg32/cdlg_Hu.rc b/dlls/comdlg32/cdlg_Hu.rc index b11b0902d68..13ed46e478c 100644 --- a/dlls/comdlg32/cdlg_Hu.rc +++ b/dlls/comdlg32/cdlg_Hu.rc @@ -179,21 +179,21 @@ FONT 8, "MS Shell Dlg" PUSHBUTTON "&t",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ } -FINDDLGORD DIALOG 36, 24, 236, 62 +FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Keresés" FONT 8, "MS Shell Dlg" BEGIN LTEXT "&Mit keressen:", -1, 4, 8, 48, 8 - EDITTEXT 1152, 51, 7, 124, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP - CONTROL "Teljes &szavak keresése", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP, 4, 26, 100, 12 - CONTROL "Kis/&nagybetû különb.", 1041, "BUTTON", BS_AUTOCHECKBOX | WS_TABSTOP, 4, 42, 92, 12 - GROUPBOX "Irány", 1072, 97, 26, 78, 28 - CONTROL "&Vissza", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 102, 38, 32, 12 - CONTROL "&Elõre", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 - CONTROL "&Következõ", 1, "BUTTON", WS_GROUP | WS_TABSTOP, 182, 5, 50, 14 - CONTROL "Mégsem", 2, "BUTTON", WS_GROUP | WS_TABSTOP, 182, 23, 50, 14 - PUSHBUTTON "&Segítség", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP + EDITTEXT edt1, 51, 7, 124, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "Teljes &szavak keresése", chx1, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Kis/&nagybetû különb.", chx2, 4, 42, 92, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "Irány", grp1, 97, 26, 78, 28 + CONTROL "&Vissza", rad1, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 102, 38, 32, 12 + CONTROL "&Elõre", rad2, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 + DEFPUSHBUTTON "&Következõ", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Mégsem", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Segítség", pshHelp, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP END REPLACEDLGORD DIALOG 36, 24, 230, 94 diff --git a/dlls/comdlg32/cdlg_Ja.rc b/dlls/comdlg32/cdlg_Ja.rc index 811197a3a9f..a84ed456c69 100644 --- a/dlls/comdlg32/cdlg_Ja.rc +++ b/dlls/comdlg32/cdlg_Ja.rc @@ -338,4 +338,9 @@ STRINGTABLE DISCARDABLE IDS_FILENOTFOUND "̧²Ù‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ�B" IDS_VERIFYFILE "̧²Ù–¼‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢�B" IDS_CREATEFILE "‚±‚Ì̧²Ù‚Í‘¶�Ý‚µ‚Ü‚¹‚ñ�B\n�ì�¬‚µ‚Ü‚·‚©?" + IDS_OVERWRITEFILE "File already exists.\nDo you want to replace it?" + IDS_INVALID_FILENAME_TITLE "Invalid character(s) in path" + IDS_INVALID_FILENAME "A filename cannot contain any of the following characters: \n / : < > |" + IDS_PATHNOTEXISTING "Path does not exist" + IDS_FILENOTEXISTING "File does not exist" } diff --git a/dlls/comdlg32/cdlg_Th.rc b/dlls/comdlg32/cdlg_Th.rc index 28e6cef78db..68fb29747cc 100644 --- a/dlls/comdlg32/cdlg_Th.rc +++ b/dlls/comdlg32/cdlg_Th.rc @@ -139,8 +139,11 @@ FONT 8, "MS Shell Dlg" 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,160,49,WS_GROUP - CTEXT "AÚBC¡¢£",stc5,104,81,149,37,SS_NOPREFIX | NOT WS_VISIBLE + GROUPBOX "µÑÇÍÂèÒ§",grp2,98,72,120,36,WS_GROUP + CTEXT "AÚBC¡¢£",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE + LTEXT "Scr&ipt:",stc7 ,98,114,40,9 + COMBOBOX cmb5,98,124,120,90,CBS_DROPDOWNLIST | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP } diff --git a/dlls/comdlg32/cdlg_Uk.rc b/dlls/comdlg32/cdlg_Uk.rc index bc5ad2beec7..1d1c510fef5 100644 --- a/dlls/comdlg32/cdlg_Uk.rc +++ b/dlls/comdlg32/cdlg_Uk.rc @@ -309,7 +309,7 @@ FONT 8, "MS Shell Dlg" EDITTEXT IDC_FILENAME,54,110,155,12,ES_AUTOHSCROLL LTEXT "Ôàéëè &òèïó",IDC_FILETYPESTATIC,5,128,42,8, SS_NOTIFY - COMBOBOX IDC_FILETYPE,54,126,155,53,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_FILETYPE,54,126,155,53,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "Ëèøå äëÿ &÷èòàííÿ",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10 diff --git a/dlls/comdlg32/cdlg_Wa.rc b/dlls/comdlg32/cdlg_Wa.rc index b2cc1392462..7eaf41731c3 100644 --- a/dlls/comdlg32/cdlg_Wa.rc +++ b/dlls/comdlg32/cdlg_Wa.rc @@ -174,7 +174,7 @@ FONT 8, "MS Shell Dlg" EDITTEXT 705, 226,152,21,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 "" ,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 "I Va", IDOK, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP diff --git a/dlls/crypt32/cert.c b/dlls/crypt32/cert.c index 41d399814f0..b916ce3c808 100644 --- a/dlls/crypt32/cert.c +++ b/dlls/crypt32/cert.c @@ -809,7 +809,7 @@ DWORD WINAPI CertGetPublicKeyLength(DWORD dwCertEncodingType, TRACE("(%08x, %p)\n", dwCertEncodingType, pPublicKey); - if (dwCertEncodingType != X509_ASN_ENCODING) + if (GET_CERT_ENCODING_TYPE(dwCertEncodingType) != X509_ASN_ENCODING) { SetLastError(ERROR_FILE_NOT_FOUND); return 0; diff --git a/dlls/crypt32/encode.c b/dlls/crypt32/encode.c index 9071e5c4918..ee42a3deada 100644 --- a/dlls/crypt32/encode.c +++ b/dlls/crypt32/encode.c @@ -346,8 +346,8 @@ static BOOL WINAPI CRYPT_AsnEncodeValidity(DWORD dwCertEncodingType, /* This has two filetimes in a row, a NotBefore and a NotAfter */ const FILETIME *timePtr = (const FILETIME *)pvStructInfo; struct AsnEncodeSequenceItem items[] = { - { timePtr++, CRYPT_AsnEncodeChoiceOfTime, 0 }, - { timePtr, CRYPT_AsnEncodeChoiceOfTime, 0 }, + { timePtr, CRYPT_AsnEncodeChoiceOfTime, 0 }, + { timePtr + 1, CRYPT_AsnEncodeChoiceOfTime, 0 }, }; ret = CRYPT_AsnEncodeSequence(dwCertEncodingType, items, @@ -2540,8 +2540,8 @@ static BOOL WINAPI CRYPT_AsnEncodeInteger(DWORD dwCertEncodingType, __TRY { - DWORD significantBytes, lenBytes; - BYTE padByte = 0, bytesNeeded; + DWORD significantBytes, lenBytes, bytesNeeded; + BYTE padByte = 0; BOOL pad = FALSE; const CRYPT_INTEGER_BLOB *blob = (const CRYPT_INTEGER_BLOB *)pvStructInfo; @@ -2629,8 +2629,7 @@ static BOOL WINAPI CRYPT_AsnEncodeUnsignedInteger(DWORD dwCertEncodingType, __TRY { - DWORD significantBytes, lenBytes; - BYTE bytesNeeded; + DWORD significantBytes, lenBytes, bytesNeeded; BOOL pad = FALSE; const CRYPT_INTEGER_BLOB *blob = (const CRYPT_INTEGER_BLOB *)pvStructInfo; @@ -3919,8 +3918,12 @@ static BOOL WINAPI CRYPT_ImportRsaPublicKeyInfoEx(HCRYPTPROV hCryptProv, pInfo->PublicKey.pbData, pInfo->PublicKey.cbData, 0, pubKey, &pubKeySize); if (ret) + { + if(aiKeyAlg) + ((BLOBHEADER*)pubKey)->aiKeyAlg = aiKeyAlg; ret = CryptImportKey(hCryptProv, pubKey, pubKeySize, 0, 0, phKey); + } CryptMemFree(pubKey); } else diff --git a/dlls/crypt32/tests/cert.c b/dlls/crypt32/tests/cert.c index 3fce85e6bfb..64aba8337cb 100644 --- a/dlls/crypt32/tests/cert.c +++ b/dlls/crypt32/tests/cert.c @@ -2958,6 +2958,11 @@ static void testGetPublicKeyLength(void) SetLastError(0xdeadbeef); ret = CertGetPublicKeyLength(X509_ASN_ENCODING, &info); ok(ret == 56, "Expected length 56, got %d\n", ret); + /* With the RSA OID and a message encoding */ + info.Algorithm.pszObjId = oid_rsa_rsa; + SetLastError(0xdeadbeef); + ret = CertGetPublicKeyLength(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, &info); + ok(ret == 56, "Expected length 56, got %d\n", ret); } START_TEST(cert) diff --git a/dlls/crypt32/tests/encode.c b/dlls/crypt32/tests/encode.c index 8e75689cb91..49e495592f2 100644 --- a/dlls/crypt32/tests/encode.c +++ b/dlls/crypt32/tests/encode.c @@ -5802,6 +5802,8 @@ static void testImportPublicKey(HCRYPTPROV csp, PCERT_PUBLIC_KEY_INFO info) BOOL ret; HCRYPTKEY key; PCCERT_CONTEXT context; + DWORD dwSize; + ALG_ID ai; /* These crash ret = CryptImportPublicKeyInfoEx(0, 0, NULL, 0, 0, NULL, NULL); @@ -5820,9 +5822,37 @@ static void testImportPublicKey(HCRYPTPROV csp, PCERT_PUBLIC_KEY_INFO info) &key); ok(!ret && GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %08x\n", GetLastError()); + + /* Export key with standard algorithm (CALG_RSA_KEYX) */ ret = CryptImportPublicKeyInfoEx(csp, X509_ASN_ENCODING, info, 0, 0, NULL, &key); ok(ret, "CryptImportPublicKeyInfoEx failed: %08x\n", GetLastError()); + + dwSize = sizeof(ai); + CryptGetKeyParam(key, KP_ALGID, (LPVOID)&ai, &dwSize, 0); + ok(ret, "CryptGetKeyParam failed: %08x\n", GetLastError()); + if(ret) + { + ok(dwSize == sizeof(ai), "CryptGetKeyParam returned size %d\n",dwSize); + ok(ai == CALG_RSA_KEYX, "Default ALG_ID is %04x (expected CALG_RSA_KEYX)\n", ai); + } + + CryptDestroyKey(key); + + /* Repeat with forced algorithm */ + ret = CryptImportPublicKeyInfoEx(csp, X509_ASN_ENCODING, info, CALG_RSA_SIGN, 0, NULL, + &key); + ok(ret, "CryptImportPublicKeyInfoEx failed: %08x\n", GetLastError()); + + dwSize = sizeof(ai); + CryptGetKeyParam(key, KP_ALGID, (LPVOID)&ai, &dwSize, 0); + ok(ret, "CryptGetKeyParam failed: %08x\n", GetLastError()); + if(ret) + { + ok(dwSize == sizeof(ai), "CryptGetKeyParam returned size %d\n",dwSize); + ok(ai == CALG_RSA_SIGN, "ALG_ID is %04x (expected CALG_RSA_SIGN)\n", ai); + } + CryptDestroyKey(key); /* Test importing a public key from a certificate context */ diff --git a/dlls/d3d8/tests/visual.c b/dlls/d3d8/tests/visual.c index 4a9100f7c94..c0e00cf8216 100644 --- a/dlls/d3d8/tests/visual.c +++ b/dlls/d3d8/tests/visual.c @@ -39,6 +39,18 @@ static HWND create_window(void) return ret; } +static BOOL color_match(D3DCOLOR c1, D3DCOLOR c2, BYTE max_diff) +{ + if (abs((c1 & 0xff) - (c2 & 0xff)) > max_diff) return FALSE; + c1 >>= 8; c2 >>= 8; + if (abs((c1 & 0xff) - (c2 & 0xff)) > max_diff) return FALSE; + c1 >>= 8; c2 >>= 8; + if (abs((c1 & 0xff) - (c2 & 0xff)) > max_diff) return FALSE; + c1 >>= 8; c2 >>= 8; + if (abs((c1 & 0xff) - (c2 & 0xff)) > max_diff) return FALSE; + return TRUE; +} + static DWORD getPixelColor(IDirect3DDevice8 *device, UINT x, UINT y) { DWORD ret; @@ -115,7 +127,7 @@ static IDirect3DDevice8 *init_d3d8(void) present_parameters.SwapEffect = D3DSWAPEFFECT_DISCARD; present_parameters.BackBufferWidth = 640; present_parameters.BackBufferHeight = 480; - present_parameters.BackBufferFormat = D3DFMT_X8R8G8B8; + present_parameters.BackBufferFormat = D3DFMT_A8R8G8B8; present_parameters.EnableAutoDepthStencil = TRUE; present_parameters.AutoDepthStencilFormat = D3DFMT_D16; @@ -761,7 +773,7 @@ static void alpha_test(IDirect3DDevice8 *device) hr = IDirect3DDevice8_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0x80ff0000, 0.0, 0); ok(hr == D3D_OK, "Clear failed, hr = %08x\n", hr); - hr = IDirect3DDevice8_CreateTexture(device, 128, 128, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &offscreenTexture); + hr = IDirect3DDevice8_CreateTexture(device, 128, 128, 1, D3DUSAGE_RENDERTARGET, D3DFMT_X8R8G8B8, D3DPOOL_DEFAULT, &offscreenTexture); ok(hr == D3D_OK || D3DERR_INVALIDCALL, "Creating the offscreen render target failed, hr = %#08x\n", hr); hr = IDirect3DDevice8_GetDepthStencilSurface(device, &depthstencil); @@ -796,13 +808,7 @@ static void alpha_test(IDirect3DDevice8 *device) ok(hr == D3D_OK, "IDirect3DDevice8_SetRenderState failed, hr = %08x\n", hr); if(IDirect3DDevice8_BeginScene(device) == D3D_OK) { - /* Draw two quads, one with src alpha blending, one with dest alpha blending. The - * SRCALPHA / INVSRCALPHA blend doesn't give any surprises. Colors are blended based on - * the input alpha - * - * The DESTALPHA / INVDESTALPHA do not "work" on the regular buffer because there is no alpha. - * They give essentially ZERO and ONE blend factors - */ + /* Draw two quads, one with src alpha blending, one with dest alpha blending. */ hr = IDirect3DDevice8_SetRenderState(device, D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); ok(hr == D3D_OK, "IDirect3DDevice8_SetRenderState failed, hr = %08x\n", hr); hr = IDirect3DDevice8_SetRenderState(device, D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); @@ -817,12 +823,9 @@ static void alpha_test(IDirect3DDevice8 *device) hr = IDirect3DDevice8_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, quad2, sizeof(quad2[0])); ok(hr == D3D_OK, "DrawPrimitiveUP failed, hr = %#08x\n", hr); - /* Switch to the offscreen buffer, and redo the testing. SRCALPHA and DESTALPHA. The offscreen buffer - * has a alpha channel on its own. Clear the offscreen buffer with alpha = 0.5 again, then draw the - * quads again. The SRCALPHA/INVSRCALPHA doesn't give any surprises, but the DESTALPHA/INVDESTALPHA - * blending works as supposed now - blend factor is 0.5 in both cases, not 0.75 as from the input - * vertices - */ + /* Switch to the offscreen buffer, and redo the testing. The offscreen render target + * doesn't have an alpha channel. DESTALPHA and INVDESTALPHA "don't work" on render + * targets without alpha channel, they give essentially ZERO and ONE blend factors. */ hr = IDirect3DDevice8_SetRenderTarget(device, offscreen, 0); ok(hr == D3D_OK, "Can't get back buffer, hr = %08x\n", hr); hr = IDirect3DDevice8_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0x80ff0000, 0.0, 0); @@ -877,7 +880,7 @@ static void alpha_test(IDirect3DDevice8 *device) red = (color & 0x00ff0000) >> 16; green = (color & 0x0000ff00) >> 8; blue = (color & 0x000000ff); - ok(red == 0x00 && green == 0x00 && blue >= 0xfe && blue <= 0xff , + ok(red >= 0x7e && red <= 0x81 && green == 0x00 && blue >= 0x7e && blue <= 0x81, "DSTALPHA on frame buffer returned color %08x, expected 0x00ff0000\n", color); color = getPixelColor(device, 480, 360); @@ -891,7 +894,7 @@ static void alpha_test(IDirect3DDevice8 *device) red = (color & 0x00ff0000) >> 16; green = (color & 0x0000ff00) >> 8; blue = (color & 0x000000ff); - ok(red >= 0x7e && red <= 0x81 && green == 0x00 && blue >= 0x7e && blue <= 0x81, + ok(red == 0x00 && green == 0x00 && blue >= 0xfe && blue <= 0xff , "DSTALPHA on texture returned color %08x, expected foo\n", color); out: @@ -1156,6 +1159,126 @@ out: IDirect3D8_Release(d3d); } +static void texop_test(IDirect3DDevice8 *device) +{ + IDirect3DTexture8 *texture = NULL; + D3DLOCKED_RECT locked_rect; + D3DCOLOR color; + D3DCAPS8 caps; + HRESULT hr; + int i; + + static const struct { + float x, y, z; + D3DCOLOR diffuse; + float s, t; + } quad[] = { + {-1.0f, -1.0f, 0.1f, D3DCOLOR_ARGB(0x55, 0xff, 0x00, 0x00), -1.0f, -1.0f}, + {-1.0f, 1.0f, 0.1f, D3DCOLOR_ARGB(0x55, 0xff, 0x00, 0x00), -1.0f, 1.0f}, + { 1.0f, -1.0f, 0.1f, D3DCOLOR_ARGB(0x55, 0xff, 0x00, 0x00), 1.0f, -1.0f}, + { 1.0f, 1.0f, 0.1f, D3DCOLOR_ARGB(0x55, 0xff, 0x00, 0x00), 1.0f, 1.0f} + }; + + static const struct { + D3DTEXTUREOP op; + const char *name; + DWORD caps_flag; + D3DCOLOR result; + } test_data[] = { + {D3DTOP_SELECTARG1, "SELECTARG1", D3DTEXOPCAPS_SELECTARG1, D3DCOLOR_ARGB(0x00, 0x00, 0xff, 0x00)}, + {D3DTOP_SELECTARG2, "SELECTARG2", D3DTEXOPCAPS_SELECTARG2, D3DCOLOR_ARGB(0x00, 0x33, 0x33, 0x33)}, + {D3DTOP_MODULATE, "MODULATE", D3DTEXOPCAPS_MODULATE, D3DCOLOR_ARGB(0x00, 0x00, 0x33, 0x00)}, + {D3DTOP_MODULATE2X, "MODULATE2X", D3DTEXOPCAPS_MODULATE2X, D3DCOLOR_ARGB(0x00, 0x00, 0x66, 0x00)}, + {D3DTOP_MODULATE4X, "MODULATE4X", D3DTEXOPCAPS_MODULATE4X, D3DCOLOR_ARGB(0x00, 0x00, 0xcc, 0x00)}, + {D3DTOP_ADD, "ADD", D3DTEXOPCAPS_ADD, D3DCOLOR_ARGB(0x00, 0x33, 0xff, 0x33)}, + {D3DTOP_ADDSIGNED, "ADDSIGNED", D3DTEXOPCAPS_ADDSIGNED, D3DCOLOR_ARGB(0x00, 0x00, 0xb2, 0x00)}, + {D3DTOP_ADDSIGNED2X, "ADDSIGNED2X", D3DTEXOPCAPS_ADDSIGNED2X, D3DCOLOR_ARGB(0x00, 0x00, 0xff, 0x00)}, + {D3DTOP_SUBTRACT, "SUBTRACT", D3DTEXOPCAPS_SUBTRACT, D3DCOLOR_ARGB(0x00, 0x00, 0xcc, 0x00)}, + {D3DTOP_ADDSMOOTH, "ADDSMOOTH", D3DTEXOPCAPS_ADDSMOOTH, D3DCOLOR_ARGB(0x00, 0x33, 0xff, 0x33)}, + {D3DTOP_BLENDDIFFUSEALPHA, "BLENDDIFFUSEALPHA", D3DTEXOPCAPS_BLENDDIFFUSEALPHA, D3DCOLOR_ARGB(0x00, 0x22, 0x77, 0x22)}, + {D3DTOP_BLENDTEXTUREALPHA, "BLENDTEXTUREALPHA", D3DTEXOPCAPS_BLENDTEXTUREALPHA, D3DCOLOR_ARGB(0x00, 0x14, 0xad, 0x14)}, + {D3DTOP_BLENDFACTORALPHA, "BLENDFACTORALPHA", D3DTEXOPCAPS_BLENDFACTORALPHA, D3DCOLOR_ARGB(0x00, 0x07, 0xe4, 0x07)}, + {D3DTOP_BLENDTEXTUREALPHAPM, "BLENDTEXTUREALPHAPM", D3DTEXOPCAPS_BLENDTEXTUREALPHAPM, D3DCOLOR_ARGB(0x00, 0x14, 0xff, 0x14)}, + {D3DTOP_BLENDCURRENTALPHA, "BLENDCURRENTALPHA", D3DTEXOPCAPS_BLENDCURRENTALPHA, D3DCOLOR_ARGB(0x00, 0x22, 0x77, 0x22)}, + {D3DTOP_MODULATEALPHA_ADDCOLOR, "MODULATEALPHA_ADDCOLOR", D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR, D3DCOLOR_ARGB(0x00, 0x1f, 0xff, 0x1f)}, + {D3DTOP_MODULATECOLOR_ADDALPHA, "MODULATECOLOR_ADDALPHA", D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA, D3DCOLOR_ARGB(0x00, 0x99, 0xcc, 0x99)}, + {D3DTOP_MODULATEINVALPHA_ADDCOLOR, "MODULATEINVALPHA_ADDCOLOR", D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR, D3DCOLOR_ARGB(0x00, 0x14, 0xff, 0x14)}, + {D3DTOP_MODULATEINVCOLOR_ADDALPHA, "MODULATEINVCOLOR_ADDALPHA", D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA, D3DCOLOR_ARGB(0x00, 0xcc, 0x99, 0xcc)}, + /* BUMPENVMAP & BUMPENVMAPLUMINANCE have their own tests */ + {D3DTOP_DOTPRODUCT3, "DOTPRODUCT2", D3DTEXOPCAPS_DOTPRODUCT3, D3DCOLOR_ARGB(0x00, 0x99, 0x99, 0x99)}, + {D3DTOP_MULTIPLYADD, "MULTIPLYADD", D3DTEXOPCAPS_MULTIPLYADD, D3DCOLOR_ARGB(0x00, 0xff, 0x33, 0x00)}, + {D3DTOP_LERP, "LERP", D3DTEXOPCAPS_LERP, D3DCOLOR_ARGB(0x00, 0x00, 0x33, 0x33)}, + }; + + memset(&caps, 0, sizeof(caps)); + hr = IDirect3DDevice8_GetDeviceCaps(device, &caps); + ok(SUCCEEDED(hr), "GetDeviceCaps failed with 0x%08x (%s)\n", hr, DXGetErrorString8(hr)); + + hr = IDirect3DDevice8_SetVertexShader(device, D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX0); + ok(SUCCEEDED(hr), "SetVertexShader failed with 0x%08x (%s)\n", hr, DXGetErrorString8(hr)); + + hr = IDirect3DDevice8_CreateTexture(device, 1, 1, 1, 0, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, &texture); + ok(SUCCEEDED(hr), "IDirect3DDevice9_CreateTexture failed with 0x%08x (%s)\n", hr, DXGetErrorString8(hr)); + hr = IDirect3DTexture8_LockRect(texture, 0, &locked_rect, NULL, 0); + ok(SUCCEEDED(hr), "LockRect failed with 0x%08x (%s)\n", hr, DXGetErrorString8(hr)); + *((DWORD *)locked_rect.pBits) = D3DCOLOR_ARGB(0x99, 0x00, 0xff, 0x00); + hr = IDirect3DTexture8_UnlockRect(texture, 0); + ok(SUCCEEDED(hr), "LockRect failed with 0x%08x (%s)\n", hr, DXGetErrorString8(hr)); + hr = IDirect3DDevice8_SetTexture(device, 0, (IDirect3DBaseTexture8 *)texture); + ok(SUCCEEDED(hr), "SetTexture failed with 0x%08x (%s)\n", hr, DXGetErrorString8(hr)); + + hr = IDirect3DDevice8_SetTextureStageState(device, 0, D3DTSS_COLORARG0, D3DTA_DIFFUSE); + ok(SUCCEEDED(hr), "SetTextureStageState failed with 0x%08x (%s)\n", hr, DXGetErrorString8(hr)); + hr = IDirect3DDevice8_SetTextureStageState(device, 0, D3DTSS_COLORARG1, D3DTA_TEXTURE); + ok(SUCCEEDED(hr), "SetTextureStageState failed with 0x%08x (%s)\n", hr, DXGetErrorString8(hr)); + hr = IDirect3DDevice8_SetTextureStageState(device, 0, D3DTSS_COLORARG2, D3DTA_TFACTOR); + ok(SUCCEEDED(hr), "SetTextureStageState failed with 0x%08x (%s)\n", hr, DXGetErrorString8(hr)); + + hr = IDirect3DDevice8_SetTextureStageState(device, 1, D3DTSS_COLOROP, D3DTOP_DISABLE); + ok(SUCCEEDED(hr), "SetTextureStageState failed with 0x%08x (%s)\n", hr, DXGetErrorString8(hr)); + + hr = IDirect3DDevice8_SetRenderState(device, D3DRS_LIGHTING, FALSE); + ok(SUCCEEDED(hr), "SetRenderState failed with 0x%08x (%s)\n", hr, DXGetErrorString8(hr)); + hr = IDirect3DDevice8_SetRenderState(device, D3DRS_TEXTUREFACTOR, 0xdd333333); + ok(SUCCEEDED(hr), "SetRenderState failed with 0x%08x (%s)\n", hr, DXGetErrorString8(hr)); + hr = IDirect3DDevice8_SetRenderState(device, D3DRS_COLORWRITEENABLE, D3DCOLORWRITEENABLE_RED | D3DCOLORWRITEENABLE_GREEN | D3DCOLORWRITEENABLE_BLUE | D3DCOLORWRITEENABLE_ALPHA); + ok(SUCCEEDED(hr), "SetRenderState failed with 0x%08x (%s)\n", hr, DXGetErrorString8(hr)); + + hr = IDirect3DDevice8_Clear(device, 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0x00000000, 1.0f, 0); + ok(SUCCEEDED(hr), "IDirect3DDevice9_Clear failed with 0x%08x (%s)\n", hr, DXGetErrorString8(hr)); + + for (i = 0; i < sizeof(test_data) / sizeof(*test_data); ++i) + { + if (!(caps.TextureOpCaps & test_data[i].caps_flag)) + { + skip("tex operation %s not supported\n", test_data[i].name); + continue; + } + + hr = IDirect3DDevice8_SetTextureStageState(device, 0, D3DTSS_COLOROP, test_data[i].op); + ok(SUCCEEDED(hr), "SetTextureStageState (%s) failed with 0x%08x (%s)\n", + test_data[i].name, hr, DXGetErrorString8(hr)); + + hr = IDirect3DDevice8_BeginScene(device); + ok(SUCCEEDED(hr), "BeginScene failed with 0x%08x (%s)\n", hr, DXGetErrorString8(hr)); + + hr = IDirect3DDevice8_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, quad, sizeof(*quad)); + ok(SUCCEEDED(hr), "DrawPrimitiveUP failed with 0x%08x (%s)\n", hr, DXGetErrorString8(hr)); + + hr = IDirect3DDevice8_EndScene(device); + ok(SUCCEEDED(hr), "EndScene failed with 0x%08x (%s)\n", hr, DXGetErrorString8(hr)); + + hr = IDirect3DDevice8_Present(device, NULL, NULL, NULL, NULL); + ok(SUCCEEDED(hr), "Present failed with 0x%08x (%s)\n", hr, DXGetErrorString8(hr)); + + color = getPixelColor(device, 320, 240); + ok(color_match(color, test_data[i].result, 1), "Operation %s returned color 0x%08x, expected 0x%08x\n", + test_data[i].name, color, test_data[i].result); + } + + if (texture) IDirect3DTexture8_Release(texture); +} + START_TEST(visual) { IDirect3DDevice8 *device_ptr; @@ -1228,6 +1351,7 @@ START_TEST(visual) } p8_texture_test(device_ptr); + texop_test(device_ptr); cleanup: if(device_ptr) { diff --git a/dlls/d3d9/tests/device.c b/dlls/d3d9/tests/device.c index 5b51c408d80..490593d2914 100644 --- a/dlls/d3d9/tests/device.c +++ b/dlls/d3d9/tests/device.c @@ -729,6 +729,7 @@ static void test_reset(void) IDirect3DVertexShader9 *shader; BOOL support_800x600 = FALSE; UINT i; + D3DLOCKED_RECT lockrect; pD3d = pDirect3DCreate9( D3D_SDK_VERSION ); ok(pD3d != NULL, "Failed to create IDirect3D9 object\n"); @@ -923,6 +924,29 @@ static void test_reset(void) ok(hr == D3D_OK, "IDirect3DDevice9_TestCooperativeLevel after a successful reset returned %#x\n", hr); IDirect3DSurface9_Release(surface); + /* Will a sysmem or scratch survive while locked */ + hr = IDirect3DDevice9_CreateOffscreenPlainSurface(pDevice, 16, 16, D3DFMT_R5G6B5, D3DPOOL_SYSTEMMEM, &surface, NULL); + ok(hr == D3D_OK, "IDirect3DDevice9_CreateOffscreenPlainSurface returned %s\n", DXGetErrorString9(hr)); + hr = IDirect3DSurface9_LockRect(surface, &lockrect, NULL, D3DLOCK_DISCARD); + ok(hr == D3D_OK, "IDirect3DSurface9_LockRect returned %s\n", DXGetErrorString9(hr)); + hr = IDirect3DDevice9_Reset(pDevice, &d3dpp); + ok(hr == D3D_OK, "IDirect3DDevice9_Reset failed with %s\n", DXGetErrorString9(hr)); + hr = IDirect3DDevice9_TestCooperativeLevel(pDevice); + ok(hr == D3D_OK, "IDirect3DDevice9_TestCooperativeLevel after a successful reset returned %#x\n", hr); + IDirect3DSurface9_UnlockRect(surface); + IDirect3DSurface9_Release(surface); + + hr = IDirect3DDevice9_CreateOffscreenPlainSurface(pDevice, 16, 16, D3DFMT_R5G6B5, D3DPOOL_SCRATCH, &surface, NULL); + ok(hr == D3D_OK, "IDirect3DDevice9_CreateOffscreenPlainSurface returned %s\n", DXGetErrorString9(hr)); + hr = IDirect3DSurface9_LockRect(surface, &lockrect, NULL, D3DLOCK_DISCARD); + ok(hr == D3D_OK, "IDirect3DSurface9_LockRect returned %s\n", DXGetErrorString9(hr)); + hr = IDirect3DDevice9_Reset(pDevice, &d3dpp); + ok(hr == D3D_OK, "IDirect3DDevice9_Reset failed with %s\n", DXGetErrorString9(hr)); + hr = IDirect3DDevice9_TestCooperativeLevel(pDevice); + ok(hr == D3D_OK, "IDirect3DDevice9_TestCooperativeLevel after a successful reset returned %#x\n", hr); + IDirect3DSurface9_UnlockRect(surface); + IDirect3DSurface9_Release(surface); + hr = IDirect3DDevice9_CreateTexture(pDevice, 16, 16, 0, 0, D3DFMT_R5G6B5, D3DPOOL_MANAGED, &texture, NULL); ok(hr == D3D_OK, "IDirect3DDevice9_CreateTexture returned %s\n", DXGetErrorString9(hr)); hr = IDirect3DDevice9_Reset(pDevice, &d3dpp); diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c index d7db4a34ab8..cc85eab0b50 100644 --- a/dlls/d3d9/tests/visual.c +++ b/dlls/d3d9/tests/visual.c @@ -48,6 +48,18 @@ static HWND create_window(void) return ret; } +static BOOL color_match(D3DCOLOR c1, D3DCOLOR c2, BYTE max_diff) +{ + if (abs((c1 & 0xff) - (c2 & 0xff)) > max_diff) return FALSE; + c1 >>= 8; c2 >>= 8; + if (abs((c1 & 0xff) - (c2 & 0xff)) > max_diff) return FALSE; + c1 >>= 8; c2 >>= 8; + if (abs((c1 & 0xff) - (c2 & 0xff)) > max_diff) return FALSE; + c1 >>= 8; c2 >>= 8; + if (abs((c1 & 0xff) - (c2 & 0xff)) > max_diff) return FALSE; + return TRUE; +} + /* Locks a given surface and returns the color at (x,y). It's the caller's * responsibility to only pass in lockable surfaces and valid x,y coordinates */ static DWORD getPixelColorFromSurface(IDirect3DSurface9 *surface, UINT x, UINT y) @@ -159,7 +171,7 @@ static IDirect3DDevice9 *init_d3d9(void) present_parameters.SwapEffect = D3DSWAPEFFECT_DISCARD; present_parameters.BackBufferWidth = 640; present_parameters.BackBufferHeight = 480; - present_parameters.BackBufferFormat = D3DFMT_X8R8G8B8; + present_parameters.BackBufferFormat = D3DFMT_A8R8G8B8; present_parameters.EnableAutoDepthStencil = TRUE; present_parameters.AutoDepthStencilFormat = D3DFMT_D24S8; @@ -6671,7 +6683,7 @@ static void alpha_test(IDirect3DDevice9 *device) hr = IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0x80ff0000, 0.0, 0); ok(hr == D3D_OK, "Clear failed, hr = %08x\n", hr); - hr = IDirect3DDevice9_CreateTexture(device, 128, 128, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &offscreenTexture, NULL); + hr = IDirect3DDevice9_CreateTexture(device, 128, 128, 1, D3DUSAGE_RENDERTARGET, D3DFMT_X8R8G8B8, D3DPOOL_DEFAULT, &offscreenTexture, NULL); ok(hr == D3D_OK || hr == D3DERR_INVALIDCALL, "Creating the offscreen render target failed, hr = %#08x\n", hr); hr = IDirect3DDevice9_GetBackBuffer(device, 0, 0, D3DBACKBUFFER_TYPE_MONO, &backbuffer); @@ -6704,13 +6716,7 @@ static void alpha_test(IDirect3DDevice9 *device) ok(hr == D3D_OK, "IDirect3DDevice9_SetRenderState failed, hr = %08x\n", hr); if(IDirect3DDevice9_BeginScene(device) == D3D_OK) { - /* Draw two quads, one with src alpha blending, one with dest alpha blending. The - * SRCALPHA / INVSRCALPHA blend doesn't give any surprises. Colors are blended based on - * the input alpha - * - * The DESTALPHA / INVDESTALPHA do not "work" on the regular buffer because there is no alpha. - * They give essentially ZERO and ONE blend factors - */ + /* Draw two quads, one with src alpha blending, one with dest alpha blending. */ hr = IDirect3DDevice9_SetRenderState(device, D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); ok(hr == D3D_OK, "IDirect3DDevice9_SetRenderState failed, hr = %08x\n", hr); hr = IDirect3DDevice9_SetRenderState(device, D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); @@ -6725,12 +6731,9 @@ static void alpha_test(IDirect3DDevice9 *device) hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, quad2, sizeof(quad2[0])); ok(hr == D3D_OK, "DrawPrimitiveUP failed, hr = %#08x\n", hr); - /* Switch to the offscreen buffer, and redo the testing. SRCALPHA and DESTALPHA. The offscreen buffer - * has a alpha channel on its own. Clear the offscreen buffer with alpha = 0.5 again, then draw the - * quads again. The SRCALPHA/INVSRCALPHA doesn't give any surprises, but the DESTALPHA/INVDESTALPHA - * blending works as supposed now - blend factor is 0.5 in both cases, not 0.75 as from the input - * vertices - */ + /* Switch to the offscreen buffer, and redo the testing. The offscreen render target + * doesn't have an alpha channel. DESTALPHA and INVDESTALPHA "don't work" on render + * targets without alpha channel, they give essentially ZERO and ONE blend factors. */ hr = IDirect3DDevice9_SetRenderTarget(device, 0, offscreen); ok(hr == D3D_OK, "Can't get back buffer, hr = %08x\n", hr); hr = IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0x80ff0000, 0.0, 0); @@ -6785,7 +6788,7 @@ static void alpha_test(IDirect3DDevice9 *device) red = (color & 0x00ff0000) >> 16; green = (color & 0x0000ff00) >> 8; blue = (color & 0x000000ff); - ok(red == 0x00 && green == 0x00 && blue >= 0xfe && blue <= 0xff , + ok(red >= 0x7e && red <= 0x81 && green == 0x00 && blue >= 0x7e && blue <= 0x81, "DSTALPHA on frame buffer returned color %08x, expected 0x00ff0000\n", color); color = getPixelColor(device, 480, 360); @@ -6799,7 +6802,7 @@ static void alpha_test(IDirect3DDevice9 *device) red = (color & 0x00ff0000) >> 16; green = (color & 0x0000ff00) >> 8; blue = (color & 0x000000ff); - ok(red >= 0x7e && red <= 0x81 && green == 0x00 && blue >= 0x7e && blue <= 0x81, + ok(red == 0x00 && green == 0x00 && blue >= 0xfe && blue <= 0xff , "DSTALPHA on texture returned color %08x, expected 0x00800080\n", color); out: @@ -9090,6 +9093,137 @@ cleanup: if(dsttex) IDirect3DTexture9_Release(dsttex); } +static void texop_test(IDirect3DDevice9 *device) +{ + IDirect3DVertexDeclaration9 *vertex_declaration = NULL; + IDirect3DTexture9 *texture = NULL; + D3DLOCKED_RECT locked_rect; + D3DCOLOR color; + D3DCAPS9 caps; + HRESULT hr; + int i; + + static const struct { + float x, y, z; + float s, t; + D3DCOLOR diffuse; + } quad[] = { + {-1.0f, -1.0f, 0.1f, -1.0f, -1.0f, D3DCOLOR_ARGB(0x55, 0xff, 0x00, 0x00)}, + {-1.0f, 1.0f, 0.1f, -1.0f, 1.0f, D3DCOLOR_ARGB(0x55, 0xff, 0x00, 0x00)}, + { 1.0f, -1.0f, 0.1f, 1.0f, -1.0f, D3DCOLOR_ARGB(0x55, 0xff, 0x00, 0x00)}, + { 1.0f, 1.0f, 0.1f, 1.0f, 1.0f, D3DCOLOR_ARGB(0x55, 0xff, 0x00, 0x00)} + }; + + static const D3DVERTEXELEMENT9 decl_elements[] = { + {0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0}, + {0, 12, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0}, + {0, 20, D3DDECLTYPE_D3DCOLOR, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_COLOR, 0}, + D3DDECL_END() + }; + + static const struct { + D3DTEXTUREOP op; + const char *name; + DWORD caps_flag; + D3DCOLOR result; + } test_data[] = { + {D3DTOP_SELECTARG1, "SELECTARG1", D3DTEXOPCAPS_SELECTARG1, D3DCOLOR_ARGB(0x00, 0x00, 0xff, 0x00)}, + {D3DTOP_SELECTARG2, "SELECTARG2", D3DTEXOPCAPS_SELECTARG2, D3DCOLOR_ARGB(0x00, 0x33, 0x33, 0x33)}, + {D3DTOP_MODULATE, "MODULATE", D3DTEXOPCAPS_MODULATE, D3DCOLOR_ARGB(0x00, 0x00, 0x33, 0x00)}, + {D3DTOP_MODULATE2X, "MODULATE2X", D3DTEXOPCAPS_MODULATE2X, D3DCOLOR_ARGB(0x00, 0x00, 0x66, 0x00)}, + {D3DTOP_MODULATE4X, "MODULATE4X", D3DTEXOPCAPS_MODULATE4X, D3DCOLOR_ARGB(0x00, 0x00, 0xcc, 0x00)}, + {D3DTOP_ADD, "ADD", D3DTEXOPCAPS_ADD, D3DCOLOR_ARGB(0x00, 0x33, 0xff, 0x33)}, + {D3DTOP_ADDSIGNED, "ADDSIGNED", D3DTEXOPCAPS_ADDSIGNED, D3DCOLOR_ARGB(0x00, 0x00, 0xb2, 0x00)}, + {D3DTOP_ADDSIGNED2X, "ADDSIGNED2X", D3DTEXOPCAPS_ADDSIGNED2X, D3DCOLOR_ARGB(0x00, 0x00, 0xff, 0x00)}, + {D3DTOP_SUBTRACT, "SUBTRACT", D3DTEXOPCAPS_SUBTRACT, D3DCOLOR_ARGB(0x00, 0x00, 0xcc, 0x00)}, + {D3DTOP_ADDSMOOTH, "ADDSMOOTH", D3DTEXOPCAPS_ADDSMOOTH, D3DCOLOR_ARGB(0x00, 0x33, 0xff, 0x33)}, + {D3DTOP_BLENDDIFFUSEALPHA, "BLENDDIFFUSEALPHA", D3DTEXOPCAPS_BLENDDIFFUSEALPHA, D3DCOLOR_ARGB(0x00, 0x22, 0x77, 0x22)}, + {D3DTOP_BLENDTEXTUREALPHA, "BLENDTEXTUREALPHA", D3DTEXOPCAPS_BLENDTEXTUREALPHA, D3DCOLOR_ARGB(0x00, 0x14, 0xad, 0x14)}, + {D3DTOP_BLENDFACTORALPHA, "BLENDFACTORALPHA", D3DTEXOPCAPS_BLENDFACTORALPHA, D3DCOLOR_ARGB(0x00, 0x07, 0xe4, 0x07)}, + {D3DTOP_BLENDTEXTUREALPHAPM, "BLENDTEXTUREALPHAPM", D3DTEXOPCAPS_BLENDTEXTUREALPHAPM, D3DCOLOR_ARGB(0x00, 0x14, 0xff, 0x14)}, + {D3DTOP_BLENDCURRENTALPHA, "BLENDCURRENTALPHA", D3DTEXOPCAPS_BLENDCURRENTALPHA, D3DCOLOR_ARGB(0x00, 0x22, 0x77, 0x22)}, + {D3DTOP_MODULATEALPHA_ADDCOLOR, "MODULATEALPHA_ADDCOLOR", D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR, D3DCOLOR_ARGB(0x00, 0x1f, 0xff, 0x1f)}, + {D3DTOP_MODULATECOLOR_ADDALPHA, "MODULATECOLOR_ADDALPHA", D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA, D3DCOLOR_ARGB(0x00, 0x99, 0xcc, 0x99)}, + {D3DTOP_MODULATEINVALPHA_ADDCOLOR, "MODULATEINVALPHA_ADDCOLOR", D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR, D3DCOLOR_ARGB(0x00, 0x14, 0xff, 0x14)}, + {D3DTOP_MODULATEINVCOLOR_ADDALPHA, "MODULATEINVCOLOR_ADDALPHA", D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA, D3DCOLOR_ARGB(0x00, 0xcc, 0x99, 0xcc)}, + /* BUMPENVMAP & BUMPENVMAPLUMINANCE have their own tests */ + {D3DTOP_DOTPRODUCT3, "DOTPRODUCT2", D3DTEXOPCAPS_DOTPRODUCT3, D3DCOLOR_ARGB(0x00, 0x99, 0x99, 0x99)}, + {D3DTOP_MULTIPLYADD, "MULTIPLYADD", D3DTEXOPCAPS_MULTIPLYADD, D3DCOLOR_ARGB(0x00, 0xff, 0x33, 0x00)}, + {D3DTOP_LERP, "LERP", D3DTEXOPCAPS_LERP, D3DCOLOR_ARGB(0x00, 0x00, 0x33, 0x33)}, + }; + + memset(&caps, 0, sizeof(caps)); + hr = IDirect3DDevice9_GetDeviceCaps(device, &caps); + ok(SUCCEEDED(hr), "GetDeviceCaps failed with 0x%08x (%s)\n", hr, DXGetErrorString9(hr)); + + hr = IDirect3DDevice9_CreateVertexDeclaration(device, decl_elements, &vertex_declaration); + ok(SUCCEEDED(hr), "CreateVertexDeclaration failed with 0x%08x (%s)\n", hr, DXGetErrorString9(hr)); + hr = IDirect3DDevice9_SetVertexDeclaration(device, vertex_declaration); + ok(SUCCEEDED(hr), "SetVertexDeclaration failed with 0x%08x (%s)\n", hr, DXGetErrorString9(hr)); + + hr = IDirect3DDevice9_CreateTexture(device, 1, 1, 1, 0, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, &texture, NULL); + ok(SUCCEEDED(hr), "IDirect3DDevice9_CreateTexture failed with 0x%08x (%s)\n", hr, DXGetErrorString9(hr)); + hr = IDirect3DTexture9_LockRect(texture, 0, &locked_rect, NULL, 0); + ok(SUCCEEDED(hr), "LockRect failed with 0x%08x (%s)\n", hr, DXGetErrorString9(hr)); + *((DWORD *)locked_rect.pBits) = D3DCOLOR_ARGB(0x99, 0x00, 0xff, 0x00); + hr = IDirect3DTexture9_UnlockRect(texture, 0); + ok(SUCCEEDED(hr), "LockRect failed with 0x%08x (%s)\n", hr, DXGetErrorString9(hr)); + hr = IDirect3DDevice9_SetTexture(device, 0, (IDirect3DBaseTexture9 *)texture); + ok(SUCCEEDED(hr), "SetTexture failed with 0x%08x (%s)\n", hr, DXGetErrorString9(hr)); + + hr = IDirect3DDevice9_SetTextureStageState(device, 0, D3DTSS_COLORARG0, D3DTA_DIFFUSE); + ok(SUCCEEDED(hr), "SetTextureStageState failed with 0x%08x (%s)\n", hr, DXGetErrorString9(hr)); + hr = IDirect3DDevice9_SetTextureStageState(device, 0, D3DTSS_COLORARG1, D3DTA_TEXTURE); + ok(SUCCEEDED(hr), "SetTextureStageState failed with 0x%08x (%s)\n", hr, DXGetErrorString9(hr)); + hr = IDirect3DDevice9_SetTextureStageState(device, 0, D3DTSS_COLORARG2, D3DTA_TFACTOR); + ok(SUCCEEDED(hr), "SetTextureStageState failed with 0x%08x (%s)\n", hr, DXGetErrorString9(hr)); + + hr = IDirect3DDevice9_SetTextureStageState(device, 1, D3DTSS_COLOROP, D3DTOP_DISABLE); + ok(SUCCEEDED(hr), "SetTextureStageState failed with 0x%08x (%s)\n", hr, DXGetErrorString9(hr)); + + hr = IDirect3DDevice9_SetRenderState(device, D3DRS_LIGHTING, FALSE); + ok(SUCCEEDED(hr), "SetRenderState failed with 0x%08x (%s)\n", hr, DXGetErrorString9(hr)); + hr = IDirect3DDevice9_SetRenderState(device, D3DRS_TEXTUREFACTOR, 0xdd333333); + ok(SUCCEEDED(hr), "SetRenderState failed with 0x%08x (%s)\n", hr, DXGetErrorString9(hr)); + hr = IDirect3DDevice9_SetRenderState(device, D3DRS_COLORWRITEENABLE, D3DCOLORWRITEENABLE_RED | D3DCOLORWRITEENABLE_GREEN | D3DCOLORWRITEENABLE_BLUE | D3DCOLORWRITEENABLE_ALPHA); + ok(SUCCEEDED(hr), "SetRenderState failed with 0x%08x (%s)\n", hr, DXGetErrorString9(hr)); + + hr = IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0x00000000, 1.0f, 0); + ok(SUCCEEDED(hr), "IDirect3DDevice9_Clear failed with 0x%08x (%s)\n", hr, DXGetErrorString9(hr)); + + for (i = 0; i < sizeof(test_data) / sizeof(*test_data); ++i) + { + if (!(caps.TextureOpCaps & test_data[i].caps_flag)) + { + skip("tex operation %s not supported\n", test_data[i].name); + continue; + } + + hr = IDirect3DDevice9_SetTextureStageState(device, 0, D3DTSS_COLOROP, test_data[i].op); + ok(SUCCEEDED(hr), "SetTextureStageState (%s) failed with 0x%08x (%s)\n", + test_data[i].name, hr, DXGetErrorString9(hr)); + + hr = IDirect3DDevice9_BeginScene(device); + ok(SUCCEEDED(hr), "BeginScene failed with 0x%08x (%s)\n", hr, DXGetErrorString9(hr)); + + hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, quad, sizeof(*quad)); + ok(SUCCEEDED(hr), "DrawPrimitiveUP failed with 0x%08x (%s)\n", hr, DXGetErrorString9(hr)); + + hr = IDirect3DDevice9_EndScene(device); + ok(SUCCEEDED(hr), "EndScene failed with 0x%08x (%s)\n", hr, DXGetErrorString9(hr)); + + hr = IDirect3DDevice9_Present(device, NULL, NULL, NULL, NULL); + ok(SUCCEEDED(hr), "Present failed with 0x%08x (%s)\n", hr, DXGetErrorString9(hr)); + + color = getPixelColor(device, 320, 240); + ok(color_match(color, test_data[i].result, 1), "Operation %s returned color 0x%08x, expected 0x%08x\n", + test_data[i].name, color, test_data[i].result); + } + + if (texture) IDirect3DTexture9_Release(texture); + if (vertex_declaration) IDirect3DVertexDeclaration9_Release(vertex_declaration); +} + START_TEST(visual) { IDirect3DDevice9 *device_ptr; @@ -9245,6 +9379,7 @@ START_TEST(visual) } } else skip("No ps_1_1 support\n"); + texop_test(device_ptr); cleanup: if(device_ptr) { diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c index 5f6458f3ded..ccd39fbd569 100644 --- a/dlls/dbghelp/dwarf.c +++ b/dlls/dbghelp/dwarf.c @@ -1679,7 +1679,7 @@ static struct symt* dwarf2_parse_subprogram(dwarf2_parse_context_t* ctx, symt_add_function_point(ctx->module, subpgm.func, SymTagCustom, &subpgm.frame, NULL); } - symt_normalize_function(subpgm.ctx->module, subpgm.func); + if (subpgm.func) symt_normalize_function(subpgm.ctx->module, subpgm.func); return di->symt; } diff --git a/dlls/dbghelp/module.c b/dlls/dbghelp/module.c index 64e821f0383..a53e6b568b9 100644 --- a/dlls/dbghelp/module.c +++ b/dlls/dbghelp/module.c @@ -895,7 +895,12 @@ BOOL WINAPI SymGetModuleInfo64(HANDLE hProcess, DWORD64 dwAddr, IMAGEHLP_MODULE64 mi64; IMAGEHLP_MODULEW64 miw64; - if (sizeof(mi64) < ModuleInfo->SizeOfStruct) FIXME("Wrong size\n"); + if (sizeof(mi64) < ModuleInfo->SizeOfStruct) + { + SetLastError(ERROR_MOD_NOT_FOUND); /* NOTE: native returns this error */ + WARN("Wrong size %u\n", ModuleInfo->SizeOfStruct); + return FALSE; + } miw64.SizeOfStruct = sizeof(miw64); if (!SymGetModuleInfoW64(hProcess, dwAddr, &miw64)) return FALSE; diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c index 230533f6110..ab78c4b60d9 100644 --- a/dlls/ddraw/ddraw.c +++ b/dlls/ddraw/ddraw.c @@ -1243,6 +1243,8 @@ IDirectDrawImpl_EnumDisplayModes(IDirectDraw7 *iface, WINED3DFORMAT pixelformat = WINED3DFMT_UNKNOWN; WINED3DDISPLAYMODE mode; DDSURFACEDESC2 callback_sd; + WINED3DDISPLAYMODE *enum_modes = NULL; + unsigned enum_mode_count = 0, enum_mode_array_size = 0; WINED3DFORMAT checkFormatList[] = { @@ -1280,6 +1282,18 @@ IDirectDrawImpl_EnumDisplayModes(IDirectDraw7 *iface, pixelformat = PixelFormat_DD2WineD3D(&DDSD->u4.ddpfPixelFormat); } + if(!(Flags & DDEDM_REFRESHRATES)) + { + enum_mode_array_size = 16; + enum_modes = HeapAlloc(GetProcessHeap(), 0, sizeof(WINED3DDISPLAYMODE) * enum_mode_array_size); + if (!enum_modes) + { + ERR("Out of memory\n"); + LeaveCriticalSection(&ddraw_cs); + return DDERR_OUTOFMEMORY; + } + } + for(fmt = 0; fmt < (sizeof(checkFormatList) / sizeof(checkFormatList[0])); fmt++) { if(pixelformat != WINED3DFMT_UNKNOWN && checkFormatList[fmt] != pixelformat) @@ -1300,6 +1314,28 @@ IDirectDrawImpl_EnumDisplayModes(IDirectDraw7 *iface, if(DDSD->dwFlags & DDSD_HEIGHT && mode.Height != DDSD->dwHeight) continue; } + if(!(Flags & DDEDM_REFRESHRATES)) + { + /* DX docs state EnumDisplayMode should return only unique modes. If DDEDM_REFRESHRATES is not set, refresh + * rate doesn't matter when determining if the mode is unique. So modes only differing in refresh rate have + * to be reduced to a single unique result in such case. + */ + BOOL found = FALSE; + unsigned i; + + for (i = 0; i < enum_mode_count; i++) + { + if(enum_modes[i].Width == mode.Width && enum_modes[i].Height == mode.Height && + enum_modes[i].Format == mode.Format) + { + found = TRUE; + break; + } + } + + if(found) continue; + } + memset(&callback_sd, 0, sizeof(callback_sd)); callback_sd.dwSize = sizeof(callback_sd); callback_sd.u4.ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT); @@ -1326,13 +1362,38 @@ IDirectDrawImpl_EnumDisplayModes(IDirectDraw7 *iface, if(cb(&callback_sd, Context) == DDENUMRET_CANCEL) { TRACE("Application asked to terminate the enumeration\n"); + HeapFree(GetProcessHeap(), 0, enum_modes); LeaveCriticalSection(&ddraw_cs); return DD_OK; } + + if(!(Flags & DDEDM_REFRESHRATES)) + { + if (enum_mode_count == enum_mode_array_size) + { + WINED3DDISPLAYMODE *new_enum_modes; + + enum_mode_array_size *= 2; + new_enum_modes = HeapReAlloc(GetProcessHeap(), 0, enum_modes, sizeof(WINED3DDISPLAYMODE) * enum_mode_array_size); + + if (!new_enum_modes) + { + ERR("Out of memory\n"); + HeapFree(GetProcessHeap(), 0, enum_modes); + LeaveCriticalSection(&ddraw_cs); + return DDERR_OUTOFMEMORY; + } + + enum_modes = new_enum_modes; + } + + enum_modes[enum_mode_count++] = mode; + } } } TRACE("End of enumeration\n"); + HeapFree(GetProcessHeap(), 0, enum_modes); LeaveCriticalSection(&ddraw_cs); return DD_OK; } diff --git a/dlls/ddraw/tests/d3d.c b/dlls/ddraw/tests/d3d.c index 1f712356105..43cdb3a6d5c 100644 --- a/dlls/ddraw/tests/d3d.c +++ b/dlls/ddraw/tests/d3d.c @@ -1445,6 +1445,10 @@ static void TextureLoadTest(void) goto cleanup; } + /* test load of Texture to Texture */ + hr = IDirect3DTexture_Load(Texture, Texture); + ok(hr == DD_OK, "IDirect3DTexture_Load returned %08x\n", hr); + /* test Load when both textures have no palette */ hr = IDirect3DTexture_Load(Texture2, Texture); ok(hr == DD_OK, "IDirect3DTexture_Load returned %08x\n", hr); diff --git a/dlls/ddraw/tests/ddrawmodes.c b/dlls/ddraw/tests/ddrawmodes.c index ea8939b600a..95e865715f0 100644 --- a/dlls/ddraw/tests/ddrawmodes.c +++ b/dlls/ddraw/tests/ddrawmodes.c @@ -286,7 +286,7 @@ static void testcooperativelevels_normal(void) rc = IDirectDraw_CreateSurface(lpDD, &surfacedesc, &surface, NULL); ok(rc == DDERR_NOEXCLUSIVEMODE, "IDirectDraw_CreateSurface returned %08x\n", rc); ok(surface == NULL, "Returned surface pointer is %p\n", surface); - if(surface) IDirectDrawSurface_Release(surface); + if(surface && surface != (IDirectDrawSurface *)0xdeadbeef) IDirectDrawSurface_Release(surface); /* Set the focus window */ rc = IDirectDraw_SetCooperativeLevel(lpDD, diff --git a/dlls/ddraw/texture.c b/dlls/ddraw/texture.c index 9a990d4e6ed..c3be68018c2 100644 --- a/dlls/ddraw/texture.c +++ b/dlls/ddraw/texture.c @@ -301,6 +301,11 @@ IDirect3DTextureImpl_Load(IDirect3DTexture2 *iface, ICOM_THIS_FROM(IDirectDrawSurfaceImpl, IDirect3DTexture2, iface); IDirectDrawSurfaceImpl *src_ptr = ICOM_OBJECT(IDirectDrawSurfaceImpl, IDirect3DTexture2, D3DTexture2); HRESULT ret_value = D3D_OK; + if(src_ptr == This) + { + TRACE("copying surface %p to surface %p, why?\n", src_ptr, This); + return ret_value; + } TRACE("(%p)->(%p)\n", This, src_ptr); EnterCriticalSection(&ddraw_cs); diff --git a/dlls/dinput/keyboard.c b/dlls/dinput/keyboard.c index 84d9f601b59..cb290f6f07a 100644 --- a/dlls/dinput/keyboard.c +++ b/dlls/dinput/keyboard.c @@ -270,7 +270,7 @@ static HRESULT WINAPI SysKeyboardAImpl_GetDeviceState( if (!This->base.acquired) return DIERR_NOTACQUIRED; - if (len != WINE_DINPUT_KEYBOARD_MAX_KEYS) + if (len != This->base.data_format.user_df->dwDataSize ) return DIERR_INVALIDPARAM; EnterCriticalSection(&This->base.crit); @@ -282,8 +282,8 @@ static HRESULT WINAPI SysKeyboardAImpl_GetDeviceState( TRACE(" - %02X: %02x\n", i, This->DInputKeyState[i]); } } - - memcpy(ptr, This->DInputKeyState, WINE_DINPUT_KEYBOARD_MAX_KEYS); + + fill_DataFormat(ptr, This->DInputKeyState, &This->base.data_format); LeaveCriticalSection(&This->base.crit); return DI_OK; diff --git a/dlls/dinput/tests/keyboard.c b/dlls/dinput/tests/keyboard.c index 440cd3c5b03..baac4db7bc2 100644 --- a/dlls/dinput/tests/keyboard.c +++ b/dlls/dinput/tests/keyboard.c @@ -116,13 +116,10 @@ static void acquire_tests(LPDIRECTINPUT pDI, HWND hwnd) ok(SUCCEEDED(hr), "IDirectInputDevice_SetDataFormat() failed: %s\n", DXGetErrorString8(hr)); hr = IDirectInputDevice_Acquire(pKeyboard); ok(SUCCEEDED(hr), "IDirectInputDevice_Acquire() failed: %s\n", DXGetErrorString8(hr)); - todo_wine - { - hr = IDirectInputDevice_GetDeviceState(pKeyboard, sizeof(custom_state), custom_state); - ok(SUCCEEDED(hr), "IDirectInputDevice_GetDeviceState(4,) failed: %s\n", DXGetErrorString8(hr)); - hr = IDirectInputDevice_GetDeviceState(pKeyboard, sizeof(kbd_state), kbd_state); - ok(hr == DIERR_INVALIDPARAM, "IDirectInputDevice_GetDeviceState(256,) should have failed: %s\n", DXGetErrorString8(hr)); - } + hr = IDirectInputDevice_GetDeviceState(pKeyboard, sizeof(custom_state), custom_state); + ok(SUCCEEDED(hr), "IDirectInputDevice_GetDeviceState(4,) failed: %s\n", DXGetErrorString8(hr)); + hr = IDirectInputDevice_GetDeviceState(pKeyboard, sizeof(kbd_state), kbd_state); + ok(hr == DIERR_INVALIDPARAM, "IDirectInputDevice_GetDeviceState(256,) should have failed: %s\n", DXGetErrorString8(hr)); if (pKeyboard) IUnknown_Release(pKeyboard); } diff --git a/dlls/dsound/capture.c b/dlls/dsound/capture.c index f445b4fb254..c9444a45cc4 100644 --- a/dlls/dsound/capture.c +++ b/dlls/dsound/capture.c @@ -860,6 +860,12 @@ IDirectSoundCaptureBufferImpl_Release( LPDIRECTSOUNDCAPTUREBUFFER8 iface ) if (This->notify) IDirectSoundNotify_Release((LPDIRECTSOUNDNOTIFY)This->notify); + /* If driver manages its own buffer, IDsCaptureDriverBuffer_Release + should have freed the buffer. Prevent freeing it again in + IDirectSoundCaptureBufferImpl_Create */ + if (!(This->device->drvdesc.dwFlags & DSDDESC_USESYSTEMMEMORY)) + This->device->buffer = NULL; + HeapFree(GetProcessHeap(), 0, This->notifies); HeapFree( GetProcessHeap(), 0, This ); TRACE("(%p) released\n", This); diff --git a/dlls/dxdiagn/container.c b/dlls/dxdiagn/container.c index b517dcedb34..9172fa76817 100644 --- a/dlls/dxdiagn/container.c +++ b/dlls/dxdiagn/container.c @@ -133,7 +133,7 @@ static HRESULT WINAPI IDxDiagContainerImpl_GetChildContainer(PDXDIAGCONTAINER if WCHAR* cur; HRESULT hr = E_INVALIDARG; - FIXME("(%p, %s, %p)\n", iface, debugstr_w(pwszContainer), ppInstance); + TRACE("(%p, %s, %p)\n", iface, debugstr_w(pwszContainer), ppInstance); if (NULL == ppInstance || NULL == pwszContainer) { return E_INVALIDARG; @@ -182,7 +182,7 @@ static HRESULT WINAPI IDxDiagContainerImpl_EnumPropNames(PDXDIAGCONTAINER iface, IDxDiagContainerImpl_Property* p = NULL; DWORD i = 0; - FIXME("(%p, %u, %s, %u)\n", iface, dwIndex, debugstr_w(pwszPropName), cchPropName); + TRACE("(%p, %u, %s, %u)\n", iface, dwIndex, debugstr_w(pwszPropName), cchPropName); if (NULL == pwszPropName) { return E_INVALIDARG; @@ -209,7 +209,8 @@ static HRESULT WINAPI IDxDiagContainerImpl_EnumPropNames(PDXDIAGCONTAINER iface, static HRESULT WINAPI IDxDiagContainerImpl_GetProp(PDXDIAGCONTAINER iface, LPCWSTR pwszPropName, VARIANT* pvarProp) { IDxDiagContainerImpl *This = (IDxDiagContainerImpl *)iface; IDxDiagContainerImpl_Property* p = NULL; - FIXME("(%p, %s, %p)\n", iface, debugstr_w(pwszPropName), pvarProp); + + TRACE("(%p, %s, %p)\n", iface, debugstr_w(pwszPropName), pvarProp); if (NULL == pvarProp || NULL == pwszPropName) { return E_INVALIDARG; @@ -231,7 +232,7 @@ HRESULT WINAPI IDxDiagContainerImpl_AddProp(PDXDIAGCONTAINER iface, LPCWSTR pwsz IDxDiagContainerImpl_Property* p = NULL; IDxDiagContainerImpl_Property* pNew = NULL; - FIXME("(%p, %s, %p)\n", iface, debugstr_w(pwszPropName), pVarProp); + TRACE("(%p, %s, %p)\n", iface, debugstr_w(pwszPropName), pVarProp); if (NULL == pVarProp || NULL == pwszPropName) { return E_INVALIDARG; @@ -265,7 +266,7 @@ HRESULT WINAPI IDxDiagContainerImpl_AddChildContainer(PDXDIAGCONTAINER iface, LP IDxDiagContainerImpl_SubContainer* p = NULL; IDxDiagContainerImpl_SubContainer* pNew = NULL; - FIXME("(%p, %s, %p)\n", iface, debugstr_w(pszContName), pSubCont); + TRACE("(%p, %s, %p)\n", iface, debugstr_w(pszContName), pSubCont); if (NULL == pSubCont || NULL == pszContName) { return E_INVALIDARG; diff --git a/dlls/fusion/assembly.c b/dlls/fusion/assembly.c index 8973af3d840..94ea5424e18 100644 --- a/dlls/fusion/assembly.c +++ b/dlls/fusion/assembly.c @@ -406,7 +406,11 @@ HRESULT assembly_release(ASSEMBLY *assembly) static LPSTR assembly_dup_str(ASSEMBLY *assembly, WORD index) { - return strdup((LPSTR)&assembly->strings[index]); + LPSTR str = (LPSTR)&assembly->strings[index]; + LPSTR cpy = HeapAlloc(GetProcessHeap(), 0, strlen(str)+1); + if (cpy) + strcpy(cpy, str); + return cpy; } HRESULT assembly_get_name(ASSEMBLY *assembly, LPSTR *name) @@ -431,8 +435,11 @@ HRESULT assembly_get_name(ASSEMBLY *assembly, LPSTR *name) HRESULT assembly_get_path(ASSEMBLY *assembly, LPSTR *path) { - *path = strdup(assembly->path); - if (!*path) + LPSTR cpy = HeapAlloc(GetProcessHeap(), 0, strlen(assembly->path)+1); + *path = cpy; + if (cpy) + strcpy(cpy, assembly->path); + else return E_OUTOFMEMORY; return S_OK; diff --git a/dlls/fusion/tests/asmcache.c b/dlls/fusion/tests/asmcache.c index a160b0a0703..a8900fda16c 100644 --- a/dlls/fusion/tests/asmcache.c +++ b/dlls/fusion/tests/asmcache.c @@ -918,10 +918,11 @@ static void test_InstallAssembly(void) ok(attr != INVALID_FILE_ATTRIBUTES, "Expected assembly to exist\n"); /* uninstall the assembly from the GAC */ + disp = 0xf00dbad; hr = IAssemblyCache_UninstallAssembly(cache, 0, wine, NULL, &disp); todo_wine { - ok(hr == S_OK, "Expected S_OK, got %d\n", S_OK); + ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); ok(disp == IASSEMBLYCACHE_UNINSTALL_DISPOSITION_UNINSTALLED, "Expected IASSEMBLYCACHE_UNINSTALL_DISPOSITION_UNINSTALLED, got %d\n", disp); } diff --git a/dlls/gdi32/enhmetafile.c b/dlls/gdi32/enhmetafile.c index 1041594a1d9..b20f442c430 100644 --- a/dlls/gdi32/enhmetafile.c +++ b/dlls/gdi32/enhmetafile.c @@ -2257,6 +2257,7 @@ BOOL WINAPI EnumEnhMetaFile( HPEN hPen = NULL; HBRUSH hBrush = NULL; HFONT hFont = NULL; + HRGN hRgn = NULL; enum_emh_data *info; SIZE vp_size, win_size; POINT vp_org, win_org; @@ -2311,11 +2312,18 @@ BOOL WINAPI EnumEnhMetaFile( GetWindowOrgEx(hdc, &win_org); mapMode = GetMapMode(hdc); - /* save the current pen, brush and font */ + /* save DC */ hPen = GetCurrentObject(hdc, OBJ_PEN); hBrush = GetCurrentObject(hdc, OBJ_BRUSH); hFont = GetCurrentObject(hdc, OBJ_FONT); + hRgn = CreateRectRgn(0, 0, 0, 0); + if (!GetClipRgn(hdc, hRgn)) + { + DeleteObject(hRgn); + hRgn = 0; + } + old_text_color = SetTextColor(hdc, RGB(0,0,0)); old_bk_color = SetBkColor(hdc, RGB(0xff, 0xff, 0xff)); old_align = SetTextAlign(hdc, 0); @@ -2410,10 +2418,12 @@ BOOL WINAPI EnumEnhMetaFile( SetBkColor(hdc, old_bk_color); SetTextColor(hdc, old_text_color); - /* restore pen, brush and font */ + /* restore DC */ SelectObject(hdc, hBrush); SelectObject(hdc, hPen); SelectObject(hdc, hFont); + ExtSelectClipRgn(hdc, hRgn, RGN_COPY); + DeleteObject(hRgn); SetWorldTransform(hdc, &savedXform); if (savedMode) @@ -2673,9 +2683,8 @@ HENHMETAFILE WINAPI SetWinMetaFileBits(UINT cbBuffer, HENHMETAFILE ret = NULL; HDC hdc = NULL, hdcdisp = NULL; RECT rc, *prcFrame = NULL; - gdi_mf_comment *mfcomment; - UINT mfcomment_size; LONG mm, xExt, yExt; + INT horzsize, vertsize, horzres, vertres; TRACE("(%d, %p, %p, %p)\n", cbBuffer, lpbBuffer, hdcRef, lpmfp); @@ -2736,49 +2745,49 @@ HENHMETAFILE WINAPI SetWinMetaFileBits(UINT cbBuffer, * Write the original METAFILE into the enhanced metafile. * It is encapsulated in a GDICOMMENT_WINDOWS_METAFILE record. */ - mfcomment_size = sizeof (gdi_mf_comment) + cbBuffer; - mfcomment = HeapAlloc(GetProcessHeap(), 0, mfcomment_size); - if(mfcomment) - { - mfcomment->ident = GDICOMMENT_IDENTIFIER; - mfcomment->iComment = GDICOMMENT_WINDOWS_METAFILE; - mfcomment->nVersion = 0x00000300; - mfcomment->nChecksum = 0; /* FIXME */ - mfcomment->fFlags = 0; - mfcomment->cbWinMetaFile = cbBuffer; - memcpy(&mfcomment[1], lpbBuffer, cbBuffer); - GdiComment(hdc, mfcomment_size, (BYTE*) mfcomment); - HeapFree(GetProcessHeap(), 0, mfcomment); - } - if (mm != MM_TEXT) - SetMapMode(hdc, mm); - - if (mm == MM_ISOTROPIC || mm == MM_ANISOTROPIC) { - INT horzsize, vertsize, horzres, vertres; + gdi_mf_comment *mfcomment; + UINT mfcomment_size; - horzsize = GetDeviceCaps(hdcRef, HORZSIZE); - vertsize = GetDeviceCaps(hdcRef, VERTSIZE); - horzres = GetDeviceCaps(hdcRef, HORZRES); - vertres = GetDeviceCaps(hdcRef, VERTRES); - - if (!xExt || !yExt) + mfcomment_size = sizeof (gdi_mf_comment) + cbBuffer; + mfcomment = HeapAlloc(GetProcessHeap(), 0, mfcomment_size); + if (mfcomment) { - /* Use the whole device surface */ - xExt = horzres; - yExt = vertres; - } - else - { - xExt = MulDiv(xExt, horzres, 100 * horzsize); - yExt = MulDiv(yExt, vertres, 100 * vertsize); + mfcomment->ident = GDICOMMENT_IDENTIFIER; + mfcomment->iComment = GDICOMMENT_WINDOWS_METAFILE; + mfcomment->nVersion = 0x00000300; + mfcomment->nChecksum = 0; /* FIXME */ + mfcomment->fFlags = 0; + mfcomment->cbWinMetaFile = cbBuffer; + memcpy(&mfcomment[1], lpbBuffer, cbBuffer); + GdiComment(hdc, mfcomment_size, (BYTE*) mfcomment); + HeapFree(GetProcessHeap(), 0, mfcomment); } + SetMapMode(hdc, mm); + } - /* set the initial viewport:window ratio as 1:1 */ - SetViewportExtEx(hdc, xExt, yExt, NULL); - SetWindowExtEx(hdc, xExt, yExt, NULL); + + horzsize = GetDeviceCaps(hdcRef, HORZSIZE); + vertsize = GetDeviceCaps(hdcRef, VERTSIZE); + horzres = GetDeviceCaps(hdcRef, HORZRES); + vertres = GetDeviceCaps(hdcRef, VERTRES); + + if (!xExt || !yExt) + { + /* Use the whole device surface */ + xExt = horzres; + yExt = vertres; } + else + { + xExt = MulDiv(xExt, horzres, 100 * horzsize); + yExt = MulDiv(yExt, vertres, 100 * vertsize); + } + + /* set the initial viewport:window ratio as 1:1 */ + SetViewportExtEx(hdc, xExt, yExt, NULL); + SetWindowExtEx(hdc, xExt, yExt, NULL); PlayMetaFile(hdc, hmf); diff --git a/dlls/gdi32/enhmfdrv/graphics.c b/dlls/gdi32/enhmfdrv/graphics.c index 4a695f240a0..28f34cd7afe 100644 --- a/dlls/gdi32/enhmfdrv/graphics.c +++ b/dlls/gdi32/enhmfdrv/graphics.c @@ -775,6 +775,13 @@ BOOL EMFDRV_ExtTextOut( PHYSDEV dev, INT x, INT y, UINT flags, } } + if (!lprect) + { + pemr->rclBounds.left = pemr->rclBounds.top = 0; + pemr->rclBounds.right = pemr->rclBounds.bottom = -1; + goto no_bounds; + } + switch (textAlign & (TA_LEFT | TA_RIGHT | TA_CENTER)) { case TA_CENTER: { pemr->rclBounds.left = x - (textWidth / 2) - 1; @@ -814,6 +821,7 @@ BOOL EMFDRV_ExtTextOut( PHYSDEV dev, INT x, INT y, UINT flags, } } +no_bounds: ret = EMFDRV_WriteRecord( dev, &pemr->emr ); if(ret) EMFDRV_UpdateBBox( dev, &pemr->rclBounds ); diff --git a/dlls/gdi32/metafile.c b/dlls/gdi32/metafile.c index 56404a00630..68ec2039a5d 100644 --- a/dlls/gdi32/metafile.c +++ b/dlls/gdi32/metafile.c @@ -396,6 +396,8 @@ BOOL MF_PlayMetaFile( HDC hdc, METAHEADER *mh) HPEN hPen; HBRUSH hBrush; HFONT hFont; + HPALETTE hPal; + HRGN hRgn; BOOL loaded = FALSE; if (!mh) return FALSE; @@ -405,10 +407,18 @@ BOOL MF_PlayMetaFile( HDC hdc, METAHEADER *mh) loaded = TRUE; } - /* save the current pen, brush and font */ + /* save DC */ hPen = GetCurrentObject(hdc, OBJ_PEN); hBrush = GetCurrentObject(hdc, OBJ_BRUSH); hFont = GetCurrentObject(hdc, OBJ_FONT); + hPal = GetCurrentObject(hdc, OBJ_PAL); + + hRgn = CreateRectRgn(0, 0, 0, 0); + if (!GetClipRgn(hdc, hRgn)) + { + DeleteObject(hRgn); + hRgn = 0; + } /* create the handle table */ ht = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, @@ -436,9 +446,12 @@ BOOL MF_PlayMetaFile( HDC hdc, METAHEADER *mh) PlayMetaFileRecord( hdc, ht, mr, mh->mtNoObjects ); } - SelectObject(hdc, hBrush); + /* restore DC */ SelectObject(hdc, hPen); - SelectObject(hdc, hFont); + SelectObject(hdc, hBrush); + SelectPalette(hdc, hPal, FALSE); + ExtSelectClipRgn(hdc, hRgn, RGN_COPY); + DeleteObject(hRgn); /* free objects in handle table */ for(i = 0; i < mh->mtNoObjects; i++) diff --git a/dlls/gdi32/tests/bitmap.c b/dlls/gdi32/tests/bitmap.c index f8be7c0e10d..06b16724bef 100644 --- a/dlls/gdi32/tests/bitmap.c +++ b/dlls/gdi32/tests/bitmap.c @@ -981,7 +981,8 @@ static void test_bitmap(void) hbmp = CreateBitmap(0x7ffffff, 1, 1, 1, NULL); if (!hbmp) { - ok(GetLastError() == ERROR_NOT_ENOUGH_MEMORY, + ok(GetLastError() == ERROR_NOT_ENOUGH_MEMORY /* XP */ || + GetLastError() == ERROR_INVALID_PARAMETER /* Win2k */, "expected ERROR_NOT_ENOUGH_MEMORY, got %u\n", GetLastError()); } else diff --git a/dlls/gdi32/tests/metafile.c b/dlls/gdi32/tests/metafile.c index d7eda2d6e0d..5f295bb70c1 100644 --- a/dlls/gdi32/tests/metafile.c +++ b/dlls/gdi32/tests/metafile.c @@ -975,6 +975,22 @@ static void dump_emf_record(const ENHMETARECORD *emr, const char *desc) printf ("};\n"); } +static void dump_EMREXTTEXTOUT(const EMREXTTEXTOUTW *eto) +{ + trace("rclBounds %d,%d - %d,%d\n", eto->rclBounds.left, eto->rclBounds.top, + eto->rclBounds.right, eto->rclBounds.bottom); + trace("iGraphicsMode %u\n", eto->iGraphicsMode); + trace("exScale: %f\n", eto->exScale); + trace("eyScale: %f\n", eto->eyScale); + trace("emrtext.ptlReference %d,%d\n", eto->emrtext.ptlReference.x, eto->emrtext.ptlReference.y); + trace("emrtext.nChars %u\n", eto->emrtext.nChars); + trace("emrtext.offString %#x\n", eto->emrtext.offString); + trace("emrtext.fOptions %#x\n", eto->emrtext.fOptions); + trace("emrtext.rcl %d,%d - %d,%d\n", eto->emrtext.rcl.left, eto->emrtext.rcl.top, + eto->emrtext.rcl.right, eto->emrtext.rcl.bottom); + trace("emrtext.offDx %#x\n", eto->emrtext.offDx); +} + static BOOL match_emf_record(const ENHMETARECORD *emr1, const ENHMETARECORD *emr2, const char *desc, BOOL ignore_scaling, BOOL todo) { @@ -1017,7 +1033,30 @@ static BOOL match_emf_record(const ENHMETARECORD *emr1, const ENHMETARECORD *emr emr1->iType == EMR_SETVIEWPORTEXTEX)) return TRUE; - diff = memcmp(emr1->dParm, emr2->dParm, emr1->nSize - sizeof(EMR)); + if (emr1->iType == EMR_EXTTEXTOUTW || emr1->iType == EMR_EXTTEXTOUTA) + { + EMREXTTEXTOUTW *eto1, *eto2; + + eto1 = HeapAlloc(GetProcessHeap(), 0, emr1->nSize); + memcpy(eto1, emr1, emr1->nSize); + eto2 = HeapAlloc(GetProcessHeap(), 0, emr2->nSize); + memcpy(eto2, emr2, emr2->nSize); + + /* different Windows versions setup DC scaling differently */ + eto1->exScale = eto1->eyScale = 0.0; + eto2->exScale = eto2->eyScale = 0.0; + + diff = memcmp(eto1, eto2, emr1->nSize); + if (diff) + { + dump_EMREXTTEXTOUT(eto1); + dump_EMREXTTEXTOUT(eto2); + } + HeapFree(GetProcessHeap(), 0, eto1); + HeapFree(GetProcessHeap(), 0, eto2); + } + else + diff = memcmp(emr1, emr2, emr1->nSize); if (diff && todo) { todo_wine @@ -1441,7 +1480,7 @@ static void test_emf_ExtTextOut_on_path(void) * are there, but their contents don't match for different reasons. */ if (compare_emf_bits(hMetafile, EMF_TEXTOUT_ON_PATH_BITS, sizeof(EMF_TEXTOUT_ON_PATH_BITS), - "emf_TextOut_on_path", FALSE, TRUE) != 0) + "emf_TextOut_on_path", FALSE, FALSE) != 0) { dump_emf_bits(hMetafile, "emf_TextOut_on_path"); dump_emf_records(hMetafile, "emf_TextOut_on_path"); @@ -1637,7 +1676,7 @@ static void test_emf_clipping(void) ok(hemf != 0, "CloseEnhMetaFile error %d\n", GetLastError()); if (compare_emf_bits(hemf, EMF_CLIPPING, sizeof(EMF_CLIPPING), - "emf_clipping", FALSE, TRUE) != 0) + "emf_clipping", FALSE, FALSE) != 0) { dump_emf_bits(hemf, "emf_clipping"); dump_emf_records(hemf, "emf_clipping"); @@ -1746,7 +1785,7 @@ static void test_mf_conversions(void) hemf = create_converted_emf(&mfp); if (compare_emf_bits(hemf, EMF_LINETO_MM_ANISOTROPIC_BITS, sizeof(EMF_LINETO_MM_ANISOTROPIC_BITS), - "emf_LineTo MM_ANISOTROPIC", TRUE, TRUE) != 0) + "emf_LineTo MM_ANISOTROPIC", TRUE, FALSE) != 0) { dump_emf_bits(hemf, "emf_LineTo MM_ANISOTROPIC"); dump_emf_records(hemf, "emf_LineTo MM_ANISOTROPIC"); @@ -1771,7 +1810,7 @@ static void test_mf_conversions(void) hemf = create_converted_emf(&mfp); if (compare_emf_bits(hemf, EMF_LINETO_MM_TEXT_BITS, sizeof(EMF_LINETO_MM_TEXT_BITS), - "emf_LineTo MM_TEXT", TRUE, TRUE) != 0) + "emf_LineTo MM_TEXT", TRUE, FALSE) != 0) { dump_emf_bits(hemf, "emf_LineTo MM_TEXT"); dump_emf_records(hemf, "emf_LineTo MM_TEXT"); @@ -1791,7 +1830,7 @@ static void test_mf_conversions(void) hemf = create_converted_emf(NULL); if (compare_emf_bits(hemf, EMF_LINETO_BITS, sizeof(EMF_LINETO_BITS), - "emf_LineTo NULL", TRUE, TRUE) != 0) + "emf_LineTo NULL", TRUE, FALSE) != 0) { dump_emf_bits(hemf, "emf_LineTo NULL"); dump_emf_records(hemf, "emf_LineTo NULL"); diff --git a/dlls/kernel32/tests/sync.c b/dlls/kernel32/tests/sync.c index 7c9967d513a..8d7191f004e 100644 --- a/dlls/kernel32/tests/sync.c +++ b/dlls/kernel32/tests/sync.c @@ -26,6 +26,9 @@ #include "wine/test.h" +static HANDLE (WINAPI *pCreateWaitableTimerA)(SECURITY_ATTRIBUTES*,BOOL,LPCSTR); +static HANDLE (WINAPI *pOpenWaitableTimerA)(DWORD,BOOL,LPCSTR); + static void test_signalandwait(void) { DWORD (WINAPI *pSignalObjectAndWait)(HANDLE, HANDLE, DWORD, BOOL); @@ -376,32 +379,38 @@ static void test_waitable_timer(void) { HANDLE handle, handle2; + if (!pCreateWaitableTimerA || !pOpenWaitableTimerA) + { + skip("{Create,Open}WaitableTimerA() is not available\n"); + return; + } + /* test case sensitivity */ SetLastError(0xdeadbeef); - handle = CreateWaitableTimerA(NULL, FALSE, __FILE__ ": Test WaitableTimer"); + handle = pCreateWaitableTimerA(NULL, FALSE, __FILE__ ": Test WaitableTimer"); ok(handle != NULL, "CreateWaitableTimer failed with error %u\n", GetLastError()); ok(GetLastError() == 0, "wrong error %u\n", GetLastError()); SetLastError(0xdeadbeef); - handle2 = CreateWaitableTimerA(NULL, FALSE, __FILE__ ": Test WaitableTimer"); + handle2 = pCreateWaitableTimerA(NULL, FALSE, __FILE__ ": Test WaitableTimer"); ok( handle2 != NULL, "CreateWaitableTimer failed with error %d\n", GetLastError()); ok( GetLastError() == ERROR_ALREADY_EXISTS, "wrong error %u\n", GetLastError()); CloseHandle( handle2 ); SetLastError(0xdeadbeef); - handle2 = CreateWaitableTimerA(NULL, FALSE, __FILE__ ": TEST WAITABLETIMER"); + handle2 = pCreateWaitableTimerA(NULL, FALSE, __FILE__ ": TEST WAITABLETIMER"); ok( handle2 != NULL, "CreateWaitableTimer failed with error %d\n", GetLastError()); ok( GetLastError() == 0, "wrong error %u\n", GetLastError()); CloseHandle( handle2 ); SetLastError(0xdeadbeef); - handle2 = OpenWaitableTimerA( TIMER_ALL_ACCESS, FALSE, __FILE__ ": Test WaitableTimer"); + handle2 = pOpenWaitableTimerA( TIMER_ALL_ACCESS, FALSE, __FILE__ ": Test WaitableTimer"); ok( handle2 != NULL, "OpenWaitableTimer failed with error %d\n", GetLastError()); CloseHandle( handle2 ); SetLastError(0xdeadbeef); - handle2 = OpenWaitableTimerA( TIMER_ALL_ACCESS, FALSE, __FILE__ ": TEST WAITABLETIMER"); + handle2 = pOpenWaitableTimerA( TIMER_ALL_ACCESS, FALSE, __FILE__ ": TEST WAITABLETIMER"); ok( !handle2, "OpenWaitableTimer succeeded\n"); ok( GetLastError() == ERROR_FILE_NOT_FOUND, "wrong error %u\n", GetLastError()); @@ -519,6 +528,10 @@ static void test_iocp_callback(void) START_TEST(sync) { + HMODULE hdll = GetModuleHandle("kernel32"); + pCreateWaitableTimerA = (void*)GetProcAddress(hdll, "CreateWaitableTimerA"); + pOpenWaitableTimerA = (void*)GetProcAddress(hdll, "OpenWaitableTimerA"); + test_signalandwait(); test_mutex(); test_slist(); diff --git a/dlls/kernel32/tests/toolhelp.c b/dlls/kernel32/tests/toolhelp.c index 48b6a6b790f..357f82d89a7 100644 --- a/dlls/kernel32/tests/toolhelp.c +++ b/dlls/kernel32/tests/toolhelp.c @@ -102,7 +102,6 @@ static void test_process(DWORD curr_pid, DWORD sub_pcs_pid) { HANDLE hSnapshot; PROCESSENTRY32 pe; - THREADENTRY32 te; MODULEENTRY32 me; unsigned found = 0; int num = 0; @@ -144,9 +143,6 @@ static void test_process(DWORD curr_pid, DWORD sub_pcs_pid) * interesting to be there, especially not the just forked off child */ ok (childpos !=0, "child is not expected to be at position 0.\n"); - te.dwSize = sizeof(te); - ok(!pThread32First( hSnapshot, &te ), "shouldn't return a thread\n"); - me.dwSize = sizeof(me); ok(!pModule32First( hSnapshot, &me ), "shouldn't return a module\n"); @@ -157,7 +153,6 @@ static void test_process(DWORD curr_pid, DWORD sub_pcs_pid) static void test_thread(DWORD curr_pid, DWORD sub_pcs_pid) { HANDLE hSnapshot; - PROCESSENTRY32 pe; THREADENTRY32 te; MODULEENTRY32 me; int num = 0; @@ -198,9 +193,6 @@ static void test_thread(DWORD curr_pid, DWORD sub_pcs_pid) ok(curr_found == 1, "couldn't find self in thread list\n"); ok(sub_found == 2, "couldn't find sub-process thread's in thread list\n"); - pe.dwSize = sizeof(pe); - ok(!pProcess32First( hSnapshot, &pe ), "shouldn't return a process\n"); - me.dwSize = sizeof(me); ok(!pModule32First( hSnapshot, &me ), "shouldn't return a module\n"); diff --git a/dlls/msftedit/msftedit_main.c b/dlls/msftedit/msftedit_main.c index 58a8b606109..b505999cdad 100644 --- a/dlls/msftedit/msftedit_main.c +++ b/dlls/msftedit/msftedit_main.c @@ -45,14 +45,20 @@ WINE_DEFAULT_DEBUG_CHANNEL(msftedit); */ BOOL WINAPI DllMain(HINSTANCE inst, DWORD reason, LPVOID reserved) { + static const WCHAR riched20W[] = {'r','i','c','h','e','d','2','0','.','d','l','l',0}; + static HMODULE richedit; + switch(reason) { case DLL_WINE_PREATTACH: return FALSE; /* prefer native version */ case DLL_PROCESS_ATTACH: + /* explicitly load riched20 since it creates the window classes at dll attach time */ + richedit = LoadLibraryW( riched20W ); DisableThreadLibraryCalls(inst); break; case DLL_PROCESS_DETACH: + FreeLibrary( richedit ); break; } return TRUE; diff --git a/dlls/mshtml/Fi.rc b/dlls/mshtml/Fi.rc index 8ca063b06e8..d1d389a8ba5 100644 --- a/dlls/mshtml/Fi.rc +++ b/dlls/mshtml/Fi.rc @@ -25,4 +25,6 @@ STRINGTABLE DISCARDABLE { IDS_HTMLDISABLED "HTML:n näyttäminen on tällähetkellä poistettu käytöstä." IDS_HTMLDOCUMENT "HTML Dokumentti" + IDS_DOWNLOADING "Downloading..." + IDS_INSTALLING "Installing..." } diff --git a/dlls/mshtml/Hu.rc b/dlls/mshtml/Hu.rc index bb2d3308dc8..7f3d25446ad 100644 --- a/dlls/mshtml/Hu.rc +++ b/dlls/mshtml/Hu.rc @@ -23,4 +23,6 @@ STRINGTABLE DISCARDABLE { IDS_HTMLDISABLED "A HTML rajzolás jelenleg le van tiltva." IDS_HTMLDOCUMENT "HTML Dokumentum" + IDS_DOWNLOADING "Downloading..." + IDS_INSTALLING "Installing..." } diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c index c7d9eb82951..fa9e16feea8 100644 --- a/dlls/mshtml/htmldoc.c +++ b/dlls/mshtml/htmldoc.c @@ -1347,21 +1347,21 @@ static HRESULT WINAPI DocDispatchEx_QueryInterface(IDispatchEx *iface, REFIID ri { HTMLDocument *This = DISPEX_THIS(iface); - return IHTMLWindow2_QueryInterface(HTMLDOC(This), riid, ppv); + return IHTMLDocument2_QueryInterface(HTMLDOC(This), riid, ppv); } static ULONG WINAPI DocDispatchEx_AddRef(IDispatchEx *iface) { HTMLDocument *This = DISPEX_THIS(iface); - return IHTMLWindow2_AddRef(HTMLDOC(This)); + return IHTMLDocument2_AddRef(HTMLDOC(This)); } static ULONG WINAPI DocDispatchEx_Release(IDispatchEx *iface) { HTMLDocument *This = DISPEX_THIS(iface); - return IHTMLWindow2_Release(HTMLDOC(This)); + return IHTMLDocument2_Release(HTMLDOC(This)); } static HRESULT WINAPI DocDispatchEx_GetTypeInfoCount(IDispatchEx *iface, UINT *pctinfo) diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c index c46f05e25d5..6e1d092135b 100644 --- a/dlls/mshtml/htmlwindow.c +++ b/dlls/mshtml/htmlwindow.c @@ -963,7 +963,7 @@ static ULONG WINAPI WindowDispEx_Release(IDispatchEx *iface) { HTMLWindow *This = DISPEX_THIS(iface); - return IHTMLWindow2_AddRef(HTMLWINDOW2(This)); + return IHTMLWindow2_Release(HTMLWINDOW2(This)); } static HRESULT WINAPI WindowDispEx_GetTypeInfoCount(IDispatchEx *iface, UINT *pctinfo) diff --git a/dlls/mshtml/task.c b/dlls/mshtml/task.c index 99e2573be12..55ca882cc01 100644 --- a/dlls/mshtml/task.c +++ b/dlls/mshtml/task.c @@ -28,6 +28,7 @@ #include "winuser.h" #include "ole2.h" #include "mshtmcid.h" +#include "shlguid.h" #include "wine/debug.h" @@ -196,6 +197,27 @@ static void set_downloading(HTMLDocument *doc) } } +/* Calls undocumented 69 cmd of CGID_Explorer */ +static void call_explorer_69(HTMLDocument *doc) +{ + IOleCommandTarget *olecmd; + VARIANT var; + HRESULT hres; + + if(!doc->client) + return; + + hres = IOleClientSite_QueryInterface(doc->client, &IID_IOleCommandTarget, (void**)&olecmd); + if(FAILED(hres)) + return; + + VariantInit(&var); + hres = IOleCommandTarget_Exec(olecmd, &CGID_Explorer, 69, 0, NULL, &var); + IOleCommandTarget_Release(olecmd); + if(SUCCEEDED(hres) && V_VT(&var) != VT_NULL) + FIXME("handle result\n"); +} + static void set_parsecomplete(HTMLDocument *doc) { IOleCommandTarget *olecmd = NULL; @@ -205,7 +227,9 @@ static void set_parsecomplete(HTMLDocument *doc) if(doc->usermode == EDITMODE) init_editor(doc); + call_explorer_69(doc); call_property_onchanged(&doc->cp_propnotif, 1005); + call_explorer_69(doc); doc->readystate = READYSTATE_INTERACTIVE; call_property_onchanged(&doc->cp_propnotif, DISPID_READYSTATE); @@ -226,6 +250,7 @@ static void set_parsecomplete(HTMLDocument *doc) IOleCommandTarget_Exec(olecmd, NULL, OLECMDID_SETDOWNLOADSTATE, OLECMDEXECOPT_DONTPROMPTUSER, &state, NULL); + IOleCommandTarget_Exec(olecmd, &CGID_ShellDocView, 103, 0, NULL, NULL); IOleCommandTarget_Exec(olecmd, &CGID_MSHTML, IDM_PARSECOMPLETE, 0, NULL, NULL); IOleCommandTarget_Exec(olecmd, NULL, OLECMDID_HTTPEQUIV_DONE, 0, NULL, NULL); diff --git a/dlls/mshtml/tests/htmldoc.c b/dlls/mshtml/tests/htmldoc.c index 6c1640b0ce7..d46e11a880d 100644 --- a/dlls/mshtml/tests/htmldoc.c +++ b/dlls/mshtml/tests/htmldoc.c @@ -99,10 +99,12 @@ DEFINE_EXPECT(Exec_SETDOWNLOADSTATE_0); DEFINE_EXPECT(Exec_SETDOWNLOADSTATE_1); DEFINE_EXPECT(Exec_ShellDocView_37); DEFINE_EXPECT(Exec_ShellDocView_84); +DEFINE_EXPECT(Exec_ShellDocView_103); DEFINE_EXPECT(Exec_UPDATECOMMANDS); DEFINE_EXPECT(Exec_SETTITLE); DEFINE_EXPECT(Exec_HTTPEQUIV); DEFINE_EXPECT(Exec_MSHTML_PARSECOMPLETE); +DEFINE_EXPECT(Exec_Explorer_69); DEFINE_EXPECT(Invoke_AMBIENT_USERMODE); DEFINE_EXPECT(Invoke_AMBIENT_DLCONTROL); DEFINE_EXPECT(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED); @@ -2069,7 +2071,8 @@ static HRESULT WINAPI OleCommandTarget_QueryStatus(IOleCommandTarget *iface, con static HRESULT WINAPI OleCommandTarget_Exec(IOleCommandTarget *iface, const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut) { - test_readyState(NULL); + if(!pguidCmdGroup || !IsEqualGUID(pguidCmdGroup, &CGID_Explorer)) + test_readyState(NULL); if(!pguidCmdGroup) { switch(nCmdID) { @@ -2168,12 +2171,21 @@ static HRESULT WINAPI OleCommandTarget_Exec(IOleCommandTarget *iface, const GUID case 84: CHECK_EXPECT2(Exec_ShellDocView_84); - ok(pvaIn == NULL, "pvaIn == NULL\n"); - ok(pvaOut != NULL, "pvaOut=%p, expected NULL\n", pvaOut); + ok(pvaIn == NULL, "pvaIn != NULL\n"); + ok(pvaOut != NULL, "pvaOut == NULL\n"); if(pvaIn) ok(V_VT(pvaOut) == VT_EMPTY, "V_VT(pvaOut)=%d\n", V_VT(pvaOut)); return E_NOTIMPL; + + case 103: + CHECK_EXPECT2(Exec_ShellDocView_103); + + ok(pvaIn == NULL, "pvaIn != NULL\n"); + ok(pvaOut == NULL, "pvaOut != NULL\n"); + + return E_NOTIMPL; + default: ok(0, "unexpected command %d\n", nCmdID); return E_FAIL; @@ -2198,13 +2210,31 @@ static HRESULT WINAPI OleCommandTarget_Exec(IOleCommandTarget *iface, const GUID return E_FAIL; /* TODO */ if(IsEqualGUID(&CGID_Explorer, pguidCmdGroup)) { - ok(0, "unexpected cmd %d of CGID_Explorer\n", nCmdID); + ok(nCmdexecopt == 0, "nCmdexecopts=%08x\n", nCmdexecopt); + + switch(nCmdID) { + case 69: + CHECK_EXPECT2(Exec_Explorer_69); + ok(pvaIn == NULL, "pvaIn != NULL\n"); + ok(pvaOut != NULL, "pvaOut == NULL\n"); + return E_NOTIMPL; + default: + ok(0, "unexpected cmd %d of CGID_Explorer\n", nCmdID); + } return E_NOTIMPL; } if(IsEqualGUID(&CGID_DocHostCommandHandler, pguidCmdGroup)) { - ok(0, "unexpected cmd %d of CGID_DocHostCommandHandler\n", nCmdID); - return E_NOTIMPL; + switch (nCmdID) { + case OLECMDID_PAGEACTIONBLOCKED: /* win2k3 */ + SET_EXPECT(SetStatusText); + ok(pvaIn == NULL, "pvaIn != NULL\n"); + ok(pvaOut == NULL, "pvaOut != NULL\n"); + return S_OK; + default: + ok(0, "unexpected command %d\n", nCmdID); + return E_FAIL; + } } ok(0, "unexpected pguidCmdGroup: %s\n", debugstr_guid(pguidCmdGroup)); @@ -2688,10 +2718,12 @@ static void test_download(BOOL verb_done, BOOL css_dwl, BOOL css_try_dwl) SET_EXPECT(Protocol_Read); SET_EXPECT(UnlockRequest); } + SET_EXPECT(Exec_Explorer_69); SET_EXPECT(OnChanged_1005); SET_EXPECT(OnChanged_READYSTATE); SET_EXPECT(Exec_SETPROGRESSPOS); SET_EXPECT(Exec_SETDOWNLOADSTATE_0); + SET_EXPECT(Exec_ShellDocView_103); SET_EXPECT(Exec_MSHTML_PARSECOMPLETE); SET_EXPECT(Exec_HTTPEQUIV_DONE); expect_status_text = (LPWSTR)0xdeadbeef; /* TODO */ @@ -2733,10 +2765,12 @@ static void test_download(BOOL verb_done, BOOL css_dwl, BOOL css_try_dwl) nogecko = TRUE; } } + SET_CALLED(Exec_Explorer_69); CHECK_CALLED(OnChanged_1005); CHECK_CALLED(OnChanged_READYSTATE); CHECK_CALLED(Exec_SETPROGRESSPOS); CHECK_CALLED(Exec_SETDOWNLOADSTATE_0); + SET_CALLED(Exec_ShellDocView_103); CHECK_CALLED(Exec_MSHTML_PARSECOMPLETE); CHECK_CALLED(Exec_HTTPEQUIV_DONE); diff --git a/dlls/msi/action.c b/dlls/msi/action.c index 02beb0cfb4d..ee9a13baaa0 100644 --- a/dlls/msi/action.c +++ b/dlls/msi/action.c @@ -2003,7 +2003,7 @@ static LPWSTR msi_get_disk_file_version( LPCWSTR filename ) { static const WCHAR name_fmt[] = {'%','u','.','%','u','.','%','u','.','%','u',0}; - static WCHAR name[] = {'\\',0}; + static const WCHAR name[] = {'\\',0}; VS_FIXEDFILEINFO *lpVer; WCHAR filever[0x100]; LPVOID version; diff --git a/dlls/msi/automation.c b/dlls/msi/automation.c index 7f59b4ec844..e919b0d240c 100644 --- a/dlls/msi/automation.c +++ b/dlls/msi/automation.c @@ -405,7 +405,7 @@ static HRESULT WINAPI AutomationObject_Invoke( (hr == DISP_E_PARAMNOTFOUND || hr == DISP_E_EXCEPTION)) { static const WCHAR szComma[] = { ',',0 }; - static WCHAR szExceptionSource[] = {'M','s','i',' ','A','P','I',' ','E','r','r','o','r',0}; + static const WCHAR szExceptionSource[] = {'M','s','i',' ','A','P','I',' ','E','r','r','o','r',0}; WCHAR szExceptionDescription[MAX_PATH]; BSTR bstrParamNames[MAX_FUNC_PARAMS]; unsigned namesNo, i; diff --git a/dlls/msi/database.c b/dlls/msi/database.c index 875d2d0b681..eaf8ebdec07 100644 --- a/dlls/msi/database.c +++ b/dlls/msi/database.c @@ -83,7 +83,7 @@ UINT MSI_OpenDatabaseW(LPCWSTR szDBPath, LPCWSTR szPersist, MSIDATABASE **pdb) WCHAR path[MAX_PATH]; static const WCHAR backslash[] = {'\\',0}; - static WCHAR szTables[] = { '_','T','a','b','l','e','s',0 }; + static const WCHAR szTables[] = { '_','T','a','b','l','e','s',0 }; TRACE("%s %s\n",debugstr_w(szDBPath),debugstr_w(szPersist) ); diff --git a/dlls/msvcrt/console.c b/dlls/msvcrt/console.c index 1e6583228be..ab1cd94e413 100644 --- a/dlls/msvcrt/console.c +++ b/dlls/msvcrt/console.c @@ -77,6 +77,24 @@ int CDECL _cputs(const char* str) return retval; } +#define NORMAL_CHAR 0 +#define ALT_CHAR 1 +#define CTRL_CHAR 2 +#define SHIFT_CHAR 3 + +static const struct {unsigned vk; unsigned ch[4][2];} enh_map[] = { + {0x47, {{0xE0, 0x47}, {0x00, 0x97}, {0xE0, 0x77}, {0xE0, 0x47}}}, + {0x48, {{0xE0, 0x48}, {0x00, 0x98}, {0xE0, 0x8D}, {0xE0, 0x48}}}, + {0x49, {{0xE0, 0x49}, {0x00, 0x99}, {0xE0, 0x86}, {0xE0, 0x49}}}, + {0x4B, {{0xE0, 0x4B}, {0x00, 0x9B}, {0xE0, 0x73}, {0xE0, 0x4B}}}, + {0x4D, {{0xE0, 0x4D}, {0x00, 0x9D}, {0xE0, 0x74}, {0xE0, 0x4D}}}, + {0x4F, {{0xE0, 0x4F}, {0x00, 0x9F}, {0xE0, 0x75}, {0xE0, 0x4F}}}, + {0x50, {{0xE0, 0x50}, {0x00, 0xA0}, {0xE0, 0x91}, {0xE0, 0x50}}}, + {0x51, {{0xE0, 0x51}, {0x00, 0xA1}, {0xE0, 0x76}, {0xE0, 0x51}}}, + {0x52, {{0xE0, 0x52}, {0x00, 0xA2}, {0xE0, 0x92}, {0xE0, 0x52}}}, + {0x53, {{0xE0, 0x53}, {0x00, 0xA3}, {0xE0, 0x93}, {0xE0, 0x53}}}, +}; + /********************************************************************* * _getch (MSVCRT.@) */ @@ -103,13 +121,39 @@ int CDECL _getch(void) do { if (ReadConsoleInputA(MSVCRT_console_in, &ir, 1, &count)) { + int i; /* Only interested in ASCII chars */ if (ir.EventType == KEY_EVENT && - ir.Event.KeyEvent.bKeyDown && - ir.Event.KeyEvent.uChar.AsciiChar) + ir.Event.KeyEvent.bKeyDown) { - retval = ir.Event.KeyEvent.uChar.AsciiChar; - break; + if (ir.Event.KeyEvent.uChar.AsciiChar) + { + retval = ir.Event.KeyEvent.uChar.AsciiChar; + break; + } + for (i = 0; i < sizeof(enh_map) / sizeof(enh_map[0]); i++) + { + if (ir.Event.KeyEvent.wVirtualScanCode == enh_map[i].vk) break; + } + if (i < sizeof(enh_map) / sizeof(enh_map[0])) + { + unsigned idx; + + if (ir.Event.KeyEvent.wVirtualScanCode & (LEFT_ALT_PRESSED | RIGHT_ALT_PRESSED)) + idx = ALT_CHAR; + else if (ir.Event.KeyEvent.wVirtualScanCode & (LEFT_CTRL_PRESSED | RIGHT_CTRL_PRESSED) ) + idx = CTRL_CHAR; + else if (ir.Event.KeyEvent.wVirtualScanCode & SHIFT_PRESSED) + idx = SHIFT_CHAR; + else + idx = NORMAL_CHAR; + + retval = enh_map[i].ch[idx][0]; + __MSVCRT_console_buffer = enh_map[i].ch[idx][1]; + break; + } + WARN("Unmapped char keyState=%x vk=%x\n", + ir.Event.KeyEvent.dwControlKeyState, ir.Event.KeyEvent.wVirtualScanCode); } } else diff --git a/dlls/msvcrt/tests/Makefile.in b/dlls/msvcrt/tests/Makefile.in index 04ac448ccfb..74199e15d63 100644 --- a/dlls/msvcrt/tests/Makefile.in +++ b/dlls/msvcrt/tests/Makefile.in @@ -3,7 +3,8 @@ TOPOBJDIR = ../../.. SRCDIR = @srcdir@ VPATH = @srcdir@ TESTDLL = msvcrt.dll -IMPORTS = msvcrt kernel32 +APPMODE = -mno-cygwin +IMPORTS = kernel32 MODCFLAGS = @BUILTINFLAG@ EXTRAINCL = -I$(TOPSRCDIR)/include/msvcrt -I$(SRCDIR)/.. diff --git a/dlls/msvcrt/tests/cpp.c b/dlls/msvcrt/tests/cpp.c index ef80cac2c4f..f642bcd0dd4 100644 --- a/dlls/msvcrt/tests/cpp.c +++ b/dlls/msvcrt/tests/cpp.c @@ -301,6 +301,7 @@ static void test_exception(void) /* Operator equals */ memset(&e2, 0, sizeof(e2)); + call_func1(pexception_default_ctor, &e2); pe = call_func2(pexception_opequals, &e2, &e); ok(e2.vtable != NULL, "Null exception vtable for e2\n"); ok(e2.name && e2.name != e.name && !strcmp(e2.name, "An exception name"), "Bad exception name for e2\n"); @@ -425,6 +426,7 @@ static void test_bad_typeid(void) /* Operator equals */ memset(&e2, 1, sizeof(e2)); + call_func1(pexception_default_ctor, &e2); pe = call_func2(pbad_typeid_opequals, &e2, &e); ok(e2.vtable != NULL, "Null bad_typeid vtable for e2\n"); ok(e2.name && e2.name != e.name && !strcmp(e2.name, "A bad_typeid name"), "Bad bad_typeid name for e2\n"); @@ -552,6 +554,7 @@ static void test_bad_cast(void) /* Operator equals */ memset(&e2, 1, sizeof(e2)); + call_func1(pexception_default_ctor, &e2); pe = call_func2(pbad_cast_opequals, &e2, &e); ok(e2.vtable != NULL, "Null bad_cast vtable for e2\n"); ok(e2.name && e2.name != e.name && !strcmp(e2.name, "A bad_cast name"), "Bad bad_cast name for e2\n"); @@ -653,6 +656,7 @@ static void test___non_rtti_object(void) /* Operator equals */ memset(&e2, 1, sizeof(e2)); + call_func1(pexception_default_ctor, &e2); pe = call_func2(p__non_rtti_object_opequals, &e2, &e); ok(e2.vtable != NULL, "Null __non_rtti_object vtable for e2\n"); ok(e2.name && e2.name != e.name && !strcmp(e2.name, "A __non_rtti_object name"), "Bad __non_rtti_object name for e2\n"); @@ -813,7 +817,11 @@ static void test_rtti(void) bti = p__RTtypeid(&b); casted = p__RTDynamicCast(&b, 0, NULL, ti, 0); - ok (casted == (void*)&b, "failed cast from bad_cast to exception\n"); + if (casted) + { + /* New versions do not allow this conversion due to compiler changes */ + ok (casted == (void*)&b, "failed cast from bad_typeid to exception\n"); + } /* dynamic_cast down */ casted = p__RTDynamicCast(&e, 0, NULL, bti, 0); diff --git a/dlls/msvcrt/tests/file.c b/dlls/msvcrt/tests/file.c index aa58a329c65..ec22d81a043 100644 --- a/dlls/msvcrt/tests/file.c +++ b/dlls/msvcrt/tests/file.c @@ -783,8 +783,8 @@ static void test_fopen_fclose_fcloseall( void ) ok(stream3 != NULL, "The file '%s' should be opened now\n", fname3 ); errno = 0xfaceabad; stream4 = fopen("", "w+"); - ok(stream4 == NULL && errno == ENOENT, - "filename is empty, errno = %d (expected 2)\n", errno); + ok(stream4 == NULL && (errno == EINVAL || errno == ENOENT), + "filename is empty, errno = %d (expected 2 or 22)\n", errno); errno = 0xfaceabad; stream4 = fopen(NULL, "w+"); ok(stream4 == NULL && (errno == EINVAL || errno == ENOENT), diff --git a/dlls/msvcrt/tests/printf.c b/dlls/msvcrt/tests/printf.c index 7e07241f9b8..2cd08a78c7d 100644 --- a/dlls/msvcrt/tests/printf.c +++ b/dlls/msvcrt/tests/printf.c @@ -221,8 +221,15 @@ static void test_sprintf( void ) format = "%I32d"; r = sprintf(buffer,format,1); - ok(!strcmp(buffer,"1"),"I32d failed\n"); - ok( r==1, "return count wrong\n"); + if (r == 1) + { + ok(!strcmp(buffer,"1"),"I32d failed, got '%s'\n",buffer); + } + else + { + /* Older versions don't grok I32 format */ + ok(r == 4 && !strcmp(buffer,"I32d"),"I32d failed, got '%s',%d\n",buffer,r); + } format = "%I64D"; r = sprintf(buffer,format,(LONGLONG)-1); diff --git a/dlls/msvcrt/tests/string.c b/dlls/msvcrt/tests/string.c index 3da32d863b8..5247515037b 100644 --- a/dlls/msvcrt/tests/string.c +++ b/dlls/msvcrt/tests/string.c @@ -589,8 +589,11 @@ static void test_wcscpy_s(void) /* Test invalid size */ szDest[0] = 'A'; ret = p_wcscpy_s(szDest, 0, szLongText); - ok(ret == ERANGE, "expected ERANGE got %d\n", ret); - ok(szDest[0] == 0, "szDest[0] not 0\n"); + /* Later versions changed the return value for this case to EINVAL, + * and don't modify the result if the dest size is 0. + */ + ok(ret == ERANGE || ret == EINVAL, "expected ERANGE/EINVAL got %d\n", ret); + ok(szDest[0] == 0 || ret == EINVAL, "szDest[0] not 0\n"); /* Copy same buffer size */ ret = p_wcscpy_s(szDest, 18, szLongText); @@ -600,7 +603,7 @@ static void test_wcscpy_s(void) /* Copy smaller buffer size */ szDest[0] = 'A'; ret = p_wcscpy_s(szDestShort, 8, szLongText); - ok(ret == EINVAL, "expected EINVAL got %d\n", ret); + ok(ret == ERANGE || ret == EINVAL, "expected ERANGE/EINVAL got %d\n", ret); ok(szDestShort[0] == 0, "szDestShort[0] not 0\n"); } diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c index c6f3e954c44..14daf90ca3c 100644 --- a/dlls/msvcrt/wcs.c +++ b/dlls/msvcrt/wcs.c @@ -979,27 +979,21 @@ INT CDECL MSVCRT_wcscpy_s( MSVCRT_wchar_t* wcDest, MSVCRT_size_t numElement, con { INT size = 0; - if(!wcDest) + if(!wcDest || !numElement) return MSVCRT_EINVAL; + wcDest[0] = 0; + if(!wcSrc) { - wcDest[0] = 0; return MSVCRT_EINVAL; } - if(numElement == 0) - { - wcDest[0] = 0; - return MSVCRT_ERANGE; - } - size = strlenW(wcSrc) + 1; if(size > numElement) { - wcDest[0] = 0; - return MSVCRT_EINVAL; + return MSVCRT_ERANGE; } if(size > numElement) diff --git a/dlls/msvcrtd/tests/Makefile.in b/dlls/msvcrtd/tests/Makefile.in index 9045ee88b39..7f52bfa3ab4 100644 --- a/dlls/msvcrtd/tests/Makefile.in +++ b/dlls/msvcrtd/tests/Makefile.in @@ -3,7 +3,8 @@ TOPOBJDIR = ../../.. SRCDIR = @srcdir@ VPATH = @srcdir@ TESTDLL = msvcrtd.dll -IMPORTS = msvcrt kernel32 +APPMODE = -mno-cygwin +IMPORTS = kernel32 EXTRAINCL = -I$(TOPSRCDIR)/include/msvcrt MODCFLAGS = @BUILTINFLAG@ diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index bd45a77d72e..cd502159f77 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -477,10 +477,6 @@ static void test_domdoc( void ) ok( b == VARIANT_TRUE, "failed to load XML string\n"); SysFreeString( str ); - /* try with a null out pointer */ - r = IXMLDOMDocument_get_documentElement( doc, NULL ); - ok( r == E_INVALIDARG, "should be no document element\n"); - /* check if nodename is correct */ r = IXMLDOMDocument_get_nodeName( doc, NULL ); ok ( r == E_INVALIDARG, "get_nodeName (NULL) wrong code\n"); @@ -937,7 +933,7 @@ static void test_domnode( void ) V_I4(&var) = 0x1234; r = IXMLDOMElement_getAttribute( element, str, &var ); ok( r == E_FAIL, "getAttribute ret %08x\n", r ); - ok( V_VT(&var) == VT_NULL, "vt = %x\n", V_VT(&var)); + ok( V_VT(&var) == VT_NULL || V_VT(&var) == VT_EMPTY, "vt = %x\n", V_VT(&var)); VariantClear(&var); SysFreeString( str ); diff --git a/dlls/netapi32/tests/access.c b/dlls/netapi32/tests/access.c index b1036a9d787..eae713f6e3b 100644 --- a/dlls/netapi32/tests/access.c +++ b/dlls/netapi32/tests/access.c @@ -296,7 +296,8 @@ static void run_userhandling_tests(void) ret = pNetUserChangePassword(NULL, sNonexistentUser, sTestUserOldPass, sTestUserNewPass); - ok(ret == NERR_UserNotFound || ret == ERROR_INVALID_PASSWORD, + ok(ret == NERR_UserNotFound || ret == ERROR_INVALID_PASSWORD || + ret == ERROR_CANT_ACCESS_DOMAIN_INFO, "Changing password for nonexistent user returned 0x%08x.\n", ret); ret = pNetUserChangePassword(NULL, sTestUserName, sTestUserOldPass, @@ -304,12 +305,13 @@ static void run_userhandling_tests(void) /* Apparently NERR_PasswordTooShort can be returned on windows xp if a * strict password policy is enforced */ - ok(ret == NERR_Success || ret == NERR_PasswordTooShort, + ok(ret == NERR_Success || ret == NERR_PasswordTooShort || + ret == ERROR_CANT_ACCESS_DOMAIN_INFO || ret == ERROR_INVALID_PASSWORD, "Changing old password to old password returned 0x%08x.\n", ret); ret = pNetUserChangePassword(NULL, sTestUserName, sTestUserNewPass, sTestUserOldPass); - ok(ret == ERROR_INVALID_PASSWORD, + ok(ret == ERROR_INVALID_PASSWORD || ret == ERROR_CANT_ACCESS_DOMAIN_INFO, "Trying to change password giving an invalid password returned 0x%08x.\n", ret); ret = pNetUserChangePassword(NULL, sTestUserName, sTestUserOldPass, @@ -319,7 +321,8 @@ static void run_userhandling_tests(void) ret = pNetUserChangePassword(NULL, sTestUserName, sTestUserOldPass, sTestUserNewPass); - ok(ret == NERR_Success, "Changing the password correctly returned 0x%08x.\n", ret); + ok(ret == NERR_Success || ret == ERROR_CANT_ACCESS_DOMAIN_INFO || + ret == ERROR_INVALID_PASSWORD, "Changing the password correctly returned 0x%08x.\n", ret); ret = pNetUserDel(NULL, sTestUserName); ok(ret == NERR_Success, "Deleting the user failed.\n"); diff --git a/dlls/ole32/tests/compobj.c b/dlls/ole32/tests/compobj.c index 24d790ade10..b2aaa226eb5 100644 --- a/dlls/ole32/tests/compobj.c +++ b/dlls/ole32/tests/compobj.c @@ -944,7 +944,9 @@ static void test_CoFreeUnusedLibraries(void) ok(is_module_loaded("urlmon.dll"), "urlmon.dll should be loaded\n"); - IUnknown_Release(pUnk); + ok(pUnk != NULL, "Expected a valid pointer\n"); + if (pUnk) + IUnknown_Release(pUnk); ok(is_module_loaded("urlmon.dll"), "urlmon.dll should be loaded\n"); diff --git a/dlls/oleaut32/tests/olefont.c b/dlls/oleaut32/tests/olefont.c index e35051754c6..cbf85e1aedb 100644 --- a/dlls/oleaut32/tests/olefont.c +++ b/dlls/oleaut32/tests/olefont.c @@ -812,13 +812,16 @@ START_TEST(olefont) /* Test various size operations and conversions. */ /* Add more as needed. */ - test_ifont_sizes(180000, 0, 72, 2540, -18, "default"); - test_ifont_sizes(180000, 0, 144, 2540, -36, "ratio1"); /* change ratio */ - test_ifont_sizes(180000, 0, 72, 1270, -36, "ratio2"); /* 2nd part of ratio */ + if (0) /* FIXME: failing tests */ + { + test_ifont_sizes(180000, 0, 72, 2540, -18, "default"); + test_ifont_sizes(180000, 0, 144, 2540, -36, "ratio1"); /* change ratio */ + test_ifont_sizes(180000, 0, 72, 1270, -36, "ratio2"); /* 2nd part of ratio */ - /* These depend on details of how IFont rounds sizes internally. */ - test_ifont_sizes(0, 0, 72, 2540, 0, "zero size"); /* zero size */ - test_ifont_sizes(186000, 0, 72, 2540, -19, "rounding"); /* test rounding */ + /* These depend on details of how IFont rounds sizes internally. */ + test_ifont_sizes(0, 0, 72, 2540, 0, "zero size"); /* zero size */ + test_ifont_sizes(186000, 0, 72, 2540, -19, "rounding"); /* test rounding */ + } test_font_events_disp(); test_GetIDsOfNames(); diff --git a/dlls/oleaut32/tests/vartype.c b/dlls/oleaut32/tests/vartype.c index acd393a9f6f..e436d8cea83 100644 --- a/dlls/oleaut32/tests/vartype.c +++ b/dlls/oleaut32/tests/vartype.c @@ -498,6 +498,7 @@ static HRESULT (WINAPI *pVarBoolFromUI8)(ULONG64,VARIANT_BOOL*); static HRESULT (WINAPI *pVarBstrFromR4)(FLOAT,LCID,ULONG,BSTR*); static HRESULT (WINAPI *pVarBstrFromDate)(DATE,LCID,ULONG,BSTR*); +static HRESULT (WINAPI *pVarBstrFromCy)(CY,LCID,ULONG,BSTR*); static HRESULT (WINAPI *pVarBstrFromDec)(DECIMAL*,LCID,ULONG,BSTR*); static HRESULT (WINAPI *pVarBstrCmp)(BSTR,BSTR,LCID,ULONG); @@ -1097,7 +1098,7 @@ static void test_VarUI1FromDisp(void) dispatch.vt = VT_UI1; dispatch.bFailInvoke = FALSE; - hres = VarUI1FromDisp((IDispatch*)&dispatch, in, &out); + hres = pVarUI1FromDisp((IDispatch*)&dispatch, in, &out); trace("0x%08x\n", hres); hres = VariantChangeTypeEx(&vDst, &vSrc, in, 0, VT_UI1); @@ -1105,7 +1106,7 @@ static void test_VarUI1FromDisp(void) dispatch.bFailInvoke = TRUE; - hres = VarUI1FromDisp((IDispatch*)&dispatch, in, &out); + hres = pVarUI1FromDisp((IDispatch*)&dispatch, in, &out); trace("0x%08x\n", hres); hres = VariantChangeTypeEx(&vDst, &vSrc, in, 0, VT_UI1); @@ -4800,9 +4801,71 @@ static void test_VarBstrFromDate(void) BSTR_DATE(2958465.0, "12/31/9999"); } +#define BSTR_CY(l, a, b, e) \ + S(l).Lo = b; S(l).Hi = a; \ + hres = pVarBstrFromCy(l, lcid, LOCALE_NOUSEROVERRIDE, &bstr);\ + ok(hres == S_OK, "got hres 0x%08x\n", hres);\ + if (hres== S_OK && bstr)\ + {\ + ok(lstrcmpW(bstr, e) == 0, "invalid number (got %s)\n", wtoascii(bstr));\ + } + +static void test_VarBstrFromCy(void) +{ + LCID lcid; + HRESULT hres; + BSTR bstr = NULL; + CY l; + + static const WCHAR szZero[] = {'0', '\0'}; + static const WCHAR szOne[] = {'1', '\0'}; + static const WCHAR szOnePointFive[] = {'1','.','5','\0'}; + static const WCHAR szMinusOnePointFive[] = {'-','1','.','5','\0'}; + static const WCHAR szBigNum1[] = {'4','2','9','4','9','6','.','7','2','9','5','\0'}; /* (1 << 32) - 1 / 1000 */ + static const WCHAR szBigNum2[] = {'4','2','9','4','9','6','.','7','2','9','6','\0'}; /* (1 << 32) / 1000 */ + static const WCHAR szBigNum3[] = {'9','2','2','3','3','7','2','0','3','6','8','5','4','7','7','.','5','8','0','7','\0'}; /* ((1 << 63) - 1)/10000 */ + + static const WCHAR szSmallNumber_English[] = {'0','.','0','0','0','9','\0'}; + static const WCHAR szSmallNumber_Spanish[] = {'0',',','0','0','0','9','\0'}; + + CHECKPTR(VarBstrFromCy); + lcid = MAKELCID(MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US),SORT_DEFAULT); + + /* check zero */ + BSTR_CY(l, 0,0, szZero); + + /* check one */ + BSTR_CY(l, 0, 10000, szOne); + + /* check one point five */ + BSTR_CY(l, 0, 15000, szOnePointFive); + + /* check minus one point five */ + BSTR_CY(l, 0xffffffff, ((15000)^0xffffffff)+1, szMinusOnePointFive); + + /* check bignum (1) */ + BSTR_CY(l, 0, 0xffffffff, szBigNum1); + + /* check bignum (2) */ + BSTR_CY(l, 1,0, szBigNum2); + + /* check bignum (3) */ + BSTR_CY(l, 0x7fffffff,0xffffffff, szBigNum3); + + /* check leading zeros and decimal sep. for English locale */ + BSTR_CY(l, 0,9, szSmallNumber_English); + + lcid = MAKELCID(MAKELANGID(LANG_SPANISH, SUBLANG_DEFAULT), SORT_DEFAULT); + + /* check leading zeros and decimal sep. for Spanish locale */ + BSTR_CY(l, 0,9, szSmallNumber_Spanish); +} + +#undef BSTR_CY + #define BSTR_DEC(l, a, b, c, d, e) \ SETDEC(l, a,b,c,d);\ - hres = VarBstrFromDec(&l, lcid, LOCALE_NOUSEROVERRIDE, &bstr);\ + hres = pVarBstrFromDec(&l, lcid, LOCALE_NOUSEROVERRIDE, &bstr);\ ok(hres == S_OK, "got hres 0x%08x\n", hres);\ if (hres== S_OK && bstr)\ {\ @@ -4811,7 +4874,7 @@ static void test_VarBstrFromDate(void) #define BSTR_DEC64(l, a, b, c, x, d, e) \ SETDEC64(l, a,b,c,x,d);\ - hres = VarBstrFromDec(&l, lcid, LOCALE_NOUSEROVERRIDE, &bstr);\ + hres = pVarBstrFromDec(&l, lcid, LOCALE_NOUSEROVERRIDE, &bstr);\ ok(hres == S_OK, "got hres 0x%08x\n", hres);\ if (hres== S_OK && bstr)\ {\ @@ -6042,6 +6105,7 @@ START_TEST(vartype) test_VarBstrFromR4(); test_VarBstrFromDate(); + test_VarBstrFromCy(); test_VarBstrFromDec(); test_VarBstrCmp(); test_SysStringLen(); diff --git a/dlls/oleaut32/vartype.c b/dlls/oleaut32/vartype.c index 7531508ca6b..daeac853873 100644 --- a/dlls/oleaut32/vartype.c +++ b/dlls/oleaut32/vartype.c @@ -6529,7 +6529,7 @@ HRESULT WINAPI VarBstrFromCy(CY cyIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut) *pbstrOut = SysAllocString(cybuff); } else - *pbstrOut = SysAllocString(buff); + *pbstrOut = VARIANT_BstrReplaceDecimal(buff,lcid,dwFlags); return *pbstrOut ? S_OK : E_OUTOFMEMORY; } diff --git a/dlls/opengl32/tests/opengl.c b/dlls/opengl32/tests/opengl.c index ad058221277..46ded06c4c3 100644 --- a/dlls/opengl32/tests/opengl.c +++ b/dlls/opengl32/tests/opengl.c @@ -182,6 +182,7 @@ static void test_setpixelformat(HDC winhdc) int nCfgs; int pf; int i; + HWND hwnd; PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR), 1, /* version */ @@ -226,6 +227,42 @@ static void test_setpixelformat(HDC winhdc) if(i == pf) ok(res, "Failed to set the same pixel format\n"); else ok(!res, "Unexpectedly set an alternate pixel format\n"); } + + hwnd = CreateWindow("static", "Title", WS_OVERLAPPEDWINDOW, + 10, 10, 200, 200, NULL, NULL, NULL, NULL); + ok(hwnd != NULL, "err: %d\n", GetLastError()); + if (hwnd) + { + HDC hdc = GetDC( hwnd ); + pf = ChoosePixelFormat( hdc, &pfd ); + ok( pf != 0, "ChoosePixelFormat failed\n" ); + res = SetPixelFormat( hdc, pf, &pfd ); + ok( res != 0, "SetPixelFormat failed\n" ); + i = GetPixelFormat( hdc ); + ok( i == pf, "GetPixelFormat returned wrong format %d/%d\n", i, pf ); + ReleaseDC( hwnd, hdc ); + hdc = GetWindowDC( hwnd ); + i = GetPixelFormat( hdc ); + ok( i == pf, "GetPixelFormat returned wrong format %d/%d\n", i, pf ); + ReleaseDC( hwnd, hdc ); + DestroyWindow( hwnd ); + } + + hwnd = CreateWindow("static", "Title", WS_OVERLAPPEDWINDOW, + 10, 10, 200, 200, NULL, NULL, NULL, NULL); + ok(hwnd != NULL, "err: %d\n", GetLastError()); + if (hwnd) + { + HDC hdc = GetWindowDC( hwnd ); + pf = ChoosePixelFormat( hdc, &pfd ); + ok( pf != 0, "ChoosePixelFormat failed\n" ); + res = SetPixelFormat( hdc, pf, &pfd ); + ok( res != 0, "SetPixelFormat failed\n" ); + i = GetPixelFormat( hdc ); + ok( i == pf, "GetPixelFormat returned wrong format %d/%d\n", i, pf ); + ReleaseDC( hwnd, hdc ); + DestroyWindow( hwnd ); + } } static void test_colorbits(HDC hdc) diff --git a/dlls/rpcrt4/tests/rpc.c b/dlls/rpcrt4/tests/rpc.c index 9fd99938da7..176ae0c76f0 100644 --- a/dlls/rpcrt4/tests/rpc.c +++ b/dlls/rpcrt4/tests/rpc.c @@ -643,6 +643,10 @@ static void test_I_RpcExceptionFilter(void) ok(retval == EXCEPTION_CONTINUE_SEARCH, "I_RpcExceptionFilter(0x%x) should have returned %d instead of %d\n", exception, EXCEPTION_CONTINUE_SEARCH, retval); break; + case STATUS_IN_PAGE_ERROR: + case STATUS_HANDLE_NOT_CLOSABLE: + trace("I_RpcExceptionFilter(0x%x) returned %d\n", exception, retval); + break; default: ok(retval == EXCEPTION_EXECUTE_HANDLER, "I_RpcExceptionFilter(0x%x) should have returned %d instead of %d\n", exception, EXCEPTION_EXECUTE_HANDLER, retval); diff --git a/dlls/setupapi/tests/devinst.c b/dlls/setupapi/tests/devinst.c index f3d7415202d..cd72db42168 100644 --- a/dlls/setupapi/tests/devinst.c +++ b/dlls/setupapi/tests/devinst.c @@ -57,6 +57,9 @@ static BOOL (WINAPI *pSetupDiSetDeviceRegistryPropertyW)(HDEVINFO, PSP_DEVIN static BOOL (WINAPI *pSetupDiGetDeviceRegistryPropertyA)(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD); static BOOL (WINAPI *pSetupDiGetDeviceRegistryPropertyW)(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD); +/* This is a unique guid for testing purposes */ +static GUID guid = {0x6a55b5a4, 0x3f65, 0x11db, {0xb7,0x04,0x00,0x11,0x95,0x5c,0x2b,0xdb}}; + static void init_function_pointers(void) { hSetupAPI = GetModuleHandleA("setupapi.dll"); @@ -86,6 +89,33 @@ static void init_function_pointers(void) pSetupDiGetDeviceRegistryPropertyW = (void *)GetProcAddress(hSetupAPI, "SetupDiGetDeviceRegistryPropertyW"); } +static BOOL remove_device(void) +{ + HDEVINFO set; + SP_DEVINFO_DATA devInfo = { sizeof(devInfo), { 0 } }; + BOOL ret; + + SetLastError(0xdeadbeef); + set = pSetupDiGetClassDevsA(&guid, NULL, 0, 0); + ok(set != INVALID_HANDLE_VALUE, "SetupDiGetClassDevsA failed: %08x\n", + GetLastError()); + + SetLastError(0xdeadbeef); + ok(pSetupDiEnumDeviceInfo(set, 0, &devInfo), + "SetupDiEnumDeviceInfo failed: %08x\n", GetLastError()); + + SetLastError(0xdeadbeef); + ret = pSetupDiCallClassInstaller(DIF_REMOVE, set, &devInfo); + todo_wine + ok(ret, "SetupDiCallClassInstaller(DIF_REMOVE...) failed: %08x\n", GetLastError()); + + SetLastError(0xdeadbeef); + ok(pSetupDiDestroyDeviceInfoList(set), + "SetupDiDestroyDeviceInfoList failed: %08x\n", GetLastError()); + + return ret; +} + /* RegDeleteTreeW from dlls/advapi32/registry.c */ LSTATUS WINAPI devinst_RegDeleteTreeW(HKEY hKey, LPCWSTR lpszSubKey) { @@ -194,9 +224,6 @@ static void test_SetupDiCreateDeviceInfoListEx(void) static void test_SetupDiOpenClassRegKeyExA(void) { - /* This is a unique guid for testing purposes */ - GUID guid = {0x6a55b5a4, 0x3f65, 0x11db, {0xb7,0x04, - 0x00,0x11,0x95,0x5c,0x2b,0xdb}}; static const CHAR guidString[] = "{6a55b5a4-3f65-11db-b704-0011955c2bdb}"; HKEY hkey; @@ -226,6 +253,8 @@ static void test_SetupDiOpenClassRegKeyExA(void) } else trace("failed to create registry key for test\n"); + + RegCloseKey(hkey); } else trace("failed to open classes key\n"); @@ -338,8 +367,12 @@ static void testCreateDeviceInfo(void) { BOOL ret; HDEVINFO set; - GUID guid = {0x6a55b5a4, 0x3f65, 0x11db, {0xb7,0x04, - 0x00,0x11,0x95,0x5c,0x2b,0xdb}}; + HKEY key; + LONG res; + static const WCHAR bogus[] = {'S','y','s','t','e','m','\\', + 'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\', + 'E','n','u','m','\\','R','o','o','t','\\', + 'L','E','G','A','C','Y','_','B','O','G','U','S',0}; if (!pSetupDiCreateDeviceInfoList || !pSetupDiEnumDeviceInfo || !pSetupDiDestroyDeviceInfoList || !pSetupDiCreateDeviceInfoA) @@ -377,12 +410,21 @@ static void testCreateDeviceInfo(void) { SP_DEVINFO_DATA devInfo = { 0 }; DWORD i; + static GUID deadbeef = + {0xdeadbeef, 0xdead, 0xbeef, {0xde,0xad,0xbe,0xef,0xde,0xad,0xbe,0xef}}; + /* No GUID given */ SetLastError(0xdeadbeef); ret = pSetupDiCreateDeviceInfoA(set, "Root\\LEGACY_BOGUS\\0000", NULL, NULL, NULL, 0, NULL); ok(!ret && GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %08x\n", GetLastError()); + /* We can't add device information to the set with a different GUID */ + SetLastError(0xdeadbeef); + ret = pSetupDiCreateDeviceInfoA(set, "Root\\LEGACY_BOGUS\\0000", + &deadbeef, NULL, NULL, 0, NULL); + ok(!ret && GetLastError() == ERROR_CLASS_MISMATCH, + "Expected ERROR_CLASS_MISMATCH, got %08x\n", GetLastError()); /* Finally, with all three required parameters, this succeeds: */ ret = pSetupDiCreateDeviceInfoA(set, "Root\\LEGACY_BOGUS\\0000", &guid, NULL, NULL, 0, NULL); @@ -399,10 +441,10 @@ static void testCreateDeviceInfo(void) DICD_GENERATE_ID, &devInfo); ok(!ret && GetLastError() == ERROR_INVALID_USER_BUFFER, "Expected ERROR_INVALID_USER_BUFFER, got %08x\n", GetLastError()); + /* and this finally succeeds. */ devInfo.cbSize = sizeof(devInfo); ret = pSetupDiCreateDeviceInfoA(set, "LEGACY_BOGUS", &guid, NULL, NULL, DICD_GENERATE_ID, &devInfo); - /* and this finally succeeds. */ ok(ret, "SetupDiCreateDeviceInfoA failed: %08x\n", GetLastError()); /* There were three devices added, however - the second failure just * resulted in the SP_DEVINFO_DATA not getting copied. @@ -416,14 +458,49 @@ static void testCreateDeviceInfo(void) "SetupDiEnumDeviceInfo failed: %08x\n", GetLastError()); pSetupDiDestroyDeviceInfoList(set); } + + /* The bogus registry key shouldn't be there after this test. The only + * reasons this key would still be present: + * + * - We are running on Wine which has to be fixed + * - We have leftovers from old tests + */ + res = RegOpenKeyW(HKEY_LOCAL_MACHINE, bogus, &key); + todo_wine + ok(res == ERROR_FILE_NOT_FOUND, "Expected key to not exist\n"); + if (res == ERROR_SUCCESS) + { + DWORD subkeys; + + /* Check if we have subkeys */ + RegQueryInfoKey(key, NULL, NULL, NULL, &subkeys, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + if (subkeys > 0) + { + int i; + + /* Leftovers from old tests */ + trace("Going to remove %d devices\n", subkeys); + for (i = 0; i < subkeys; i++) + { + BOOL ret; + + ret = remove_device(); + ok(ret, "Expected a device to be removed\n"); + } + } + else + { + /* Wine doesn't delete the bogus key itself currently */ + trace("We are most likely on Wine\n"); + RegDeleteKeyW(HKEY_LOCAL_MACHINE, bogus); + } + } } static void testGetDeviceInstanceId(void) { BOOL ret; HDEVINFO set; - GUID guid = {0x6a55b5a4, 0x3f65, 0x11db, {0xb7,0x04, - 0x00,0x11,0x95,0x5c,0x2b,0xdb}}; SP_DEVINFO_DATA devInfo = { 0 }; if (!pSetupDiCreateDeviceInfoList || !pSetupDiDestroyDeviceInfoList || @@ -492,8 +569,6 @@ static void testGetDeviceInstanceId(void) static void testRegisterDeviceInfo(void) { BOOL ret; - GUID guid = {0x6a55b5a4, 0x3f65, 0x11db, {0xb7,0x04, - 0x00,0x11,0x95,0x5c,0x2b,0xdb}}; HDEVINFO set; if (!pSetupDiCreateDeviceInfoList || !pSetupDiDestroyDeviceInfoList || @@ -548,9 +623,18 @@ static void testRegisterDeviceInfo(void) static void testCreateDeviceInterface(void) { BOOL ret; - GUID guid = {0x6a55b5a4, 0x3f65, 0x11db, {0xb7,0x04, - 0x00,0x11,0x95,0x5c,0x2b,0xdb}}; HDEVINFO set; + HKEY key; + static const WCHAR bogus[] = {'S','y','s','t','e','m','\\', + 'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\', + 'E','n','u','m','\\','R','o','o','t','\\', + 'L','E','G','A','C','Y','_','B','O','G','U','S',0}; + static const WCHAR devclass[] = {'S','y','s','t','e','m','\\', + 'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\', + 'C','o','n','t','r','o','l','\\','D','e','v','i','c','e','C','l','a','s','s','e','s','\\', + '{','6','a','5','5','b','5','a','4','-','3','f','6','5','-', + '1','1','d','b','-','b','7','0','4','-', + '0','0','1','1','9','5','5','c','2','b','d','b','}',0}; if (!pSetupDiCreateDeviceInfoList || !pSetupDiDestroyDeviceInfoList || !pSetupDiCreateDeviceInfoA || !pSetupDiCreateDeviceInterfaceA || @@ -615,15 +699,41 @@ static void testCreateDeviceInterface(void) ok(GetLastError() == ERROR_NO_MORE_ITEMS, "SetupDiEnumDeviceInterfaces failed: %08x\n", GetLastError()); pSetupDiDestroyDeviceInfoList(set); + + /* Cleanup */ + /* FIXME: On Wine we still have the bogus entry in Enum\Root and + * subkeys, as well as the deviceclass key with subkeys. + * Only do the RegDeleteKey, once Wine is fixed. + */ + if (!RegOpenKeyW(HKEY_LOCAL_MACHINE, bogus, &key)) + { + /* Wine doesn't delete the information currently */ + trace("We are most likely on Wine\n"); + devinst_RegDeleteTreeW(HKEY_LOCAL_MACHINE, bogus); + devinst_RegDeleteTreeW(HKEY_LOCAL_MACHINE, devclass); + } + else + { + ok(!RegDeleteKeyW(HKEY_LOCAL_MACHINE, devclass), + "Couldn't delete deviceclass key\n"); + } } } static void testGetDeviceInterfaceDetail(void) { BOOL ret; - GUID guid = {0x6a55b5a4, 0x3f65, 0x11db, {0xb7,0x04, - 0x00,0x11,0x95,0x5c,0x2b,0xdb}}; HDEVINFO set; + static const WCHAR bogus[] = {'S','y','s','t','e','m','\\', + 'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\', + 'E','n','u','m','\\','R','o','o','t','\\', + 'L','E','G','A','C','Y','_','B','O','G','U','S',0}; + static const WCHAR devclass[] = {'S','y','s','t','e','m','\\', + 'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\', + 'C','o','n','t','r','o','l','\\','D','e','v','i','c','e','C','l','a','s','s','e','s','\\', + '{','6','a','5','5','b','5','a','4','-','3','f','6','5','-', + '1','1','d','b','-','b','7','0','4','-', + '0','0','1','1','9','5','5','c','2','b','d','b','}',0}; if (!pSetupDiCreateDeviceInfoList || !pSetupDiDestroyDeviceInfoList || !pSetupDiCreateDeviceInfoA || !pSetupDiCreateDeviceInterfaceA || @@ -644,6 +754,7 @@ static void testGetDeviceInterfaceDetail(void) SP_DEVICE_INTERFACE_DATA interfaceData = { sizeof(interfaceData), { 0 } }; DWORD size = 0; + HKEY key; SetLastError(0xdeadbeef); ret = pSetupDiGetDeviceInterfaceDetailA(set, NULL, NULL, 0, NULL, @@ -722,6 +833,24 @@ static void testGetDeviceInterfaceDetail(void) HeapFree(GetProcessHeap(), 0, buf); } pSetupDiDestroyDeviceInfoList(set); + + /* Cleanup */ + /* FIXME: On Wine we still have the bogus entry in Enum\Root and + * subkeys, as well as the deviceclass key with subkeys. + * Only do the RegDeleteKey, once Wine is fixed. + */ + if (!RegOpenKeyW(HKEY_LOCAL_MACHINE, bogus, &key)) + { + /* Wine doesn't delete the information currently */ + trace("We are most likely on Wine\n"); + devinst_RegDeleteTreeW(HKEY_LOCAL_MACHINE, bogus); + devinst_RegDeleteTreeW(HKEY_LOCAL_MACHINE, devclass); + } + else + { + ok(!RegDeleteKeyW(HKEY_LOCAL_MACHINE, devclass), + "Couldn't delete deviceclass key\n"); + } } } @@ -733,10 +862,13 @@ static void testDevRegKey(void) '{','6','a','5','5','b','5','a','4','-','3','f','6','5','-', '1','1','d','b','-','b','7','0','4','-', '0','0','1','1','9','5','5','c','2','b','d','b','}',0}; + static const WCHAR bogus[] = {'S','y','s','t','e','m','\\', + 'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\', + 'E','n','u','m','\\','R','o','o','t','\\', + 'L','E','G','A','C','Y','_','B','O','G','U','S',0}; BOOL ret; - GUID guid = {0x6a55b5a4, 0x3f65, 0x11db, {0xb7,0x04, - 0x00,0x11,0x95,0x5c,0x2b,0xdb}}; HDEVINFO set; + HKEY key = NULL; if (!pSetupDiCreateDeviceInfoList || !pSetupDiDestroyDeviceInfoList || !pSetupDiCreateDeviceInfoA || !pSetupDiOpenDevRegKey || @@ -746,20 +878,44 @@ static void testDevRegKey(void) skip("No SetupDiOpenDevRegKey\n"); return; } + + /* Check if we are on win9x */ + SetLastError(0xdeadbeef); + key = pSetupDiCreateDevRegKeyW(NULL, NULL, 0, 0, 0, NULL, NULL); + if (key == INVALID_HANDLE_VALUE && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED) + { + skip("We are on win9x where the tests introduce issues\n"); + return; + } + ok(key == INVALID_HANDLE_VALUE, + "Expected INVALID_HANDLE_VALUE, got %p\n", key); + ok(GetLastError() == ERROR_INVALID_HANDLE, + "Expected ERROR_INVALID_HANDLE, got %08x\n", GetLastError()); + set = pSetupDiCreateDeviceInfoList(&guid, NULL); ok(set != NULL, "SetupDiCreateDeviceInfoList failed: %d\n", GetLastError()); if (set) { SP_DEVINFO_DATA devInfo = { sizeof(devInfo), { 0 } }; - HKEY key = INVALID_HANDLE_VALUE; + LONG res; + /* The device info key shouldn't be there */ + res = RegOpenKeyW(HKEY_LOCAL_MACHINE, bogus, &key); + ok(res != ERROR_SUCCESS, "Expected key to not exist\n"); + RegCloseKey(key); + /* Create the device information */ ret = pSetupDiCreateDeviceInfoA(set, "ROOT\\LEGACY_BOGUS\\0000", &guid, NULL, NULL, 0, &devInfo); ok(ret, "SetupDiCreateDeviceInfoA failed: %08x\n", GetLastError()); + /* The device info key should have been created */ + ok(!RegOpenKeyW(HKEY_LOCAL_MACHINE, bogus, &key), + "Expected registry key to exist\n"); + RegCloseKey(key); SetLastError(0xdeadbeef); key = pSetupDiOpenDevRegKey(NULL, NULL, 0, 0, 0, 0); - ok(key == INVALID_HANDLE_VALUE && - GetLastError() == ERROR_INVALID_HANDLE, + ok(!key || key == INVALID_HANDLE_VALUE, + "Expected INVALID_HANDLE_VALUE or a NULL key (NT4)\n"); + ok(GetLastError() == ERROR_INVALID_HANDLE, "Expected ERROR_INVALID_HANDLE, got %d\n", GetLastError()); SetLastError(0xdeadbeef); key = pSetupDiOpenDevRegKey(set, NULL, 0, 0, 0, 0); @@ -807,11 +963,21 @@ static void testDevRegKey(void) GetLastError() == ERROR_KEY_DOES_NOT_EXIST, "Expected ERROR_KEY_DOES_NOT_EXIST_EXIST, got %08x\n", GetLastError()); SetLastError(0xdeadbeef); + /* The class key shouldn't be there */ + res = RegOpenKeyW(HKEY_LOCAL_MACHINE, classKey, &key); + todo_wine + ok(res != ERROR_SUCCESS, "Expected key to not exist\n"); + RegCloseKey(key); + /* Create the device reg key */ key = pSetupDiCreateDevRegKeyW(set, &devInfo, DICS_FLAG_GLOBAL, 0, DIREG_DRV, NULL, NULL); ok(key != INVALID_HANDLE_VALUE, "SetupDiCreateDevRegKey failed: %08x\n", GetLastError()); RegCloseKey(key); + /* The class key should have been created */ + ok(!RegOpenKeyW(HKEY_LOCAL_MACHINE, classKey, &key), + "Expected registry key to exist\n"); + RegCloseKey(key); SetLastError(0xdeadbeef); key = pSetupDiOpenDevRegKey(set, &devInfo, DICS_FLAG_GLOBAL, 0, DIREG_DRV, 0); @@ -824,21 +990,52 @@ static void testDevRegKey(void) DIREG_DRV, KEY_READ); ok(key != INVALID_HANDLE_VALUE, "SetupDiOpenDevRegKey failed: %08x\n", GetLastError()); - ret = pSetupDiCallClassInstaller(DIF_REMOVE, set, &devInfo); pSetupDiDestroyDeviceInfoList(set); + + /* Cleanup */ + ret = remove_device(); + todo_wine + ok(ret, "Expected the device to be removed: %08x\n", GetLastError()); + + /* FIXME: Only do the RegDeleteKey, once Wine is fixed */ + if (!ret) + { + /* Wine doesn't delete the information currently */ + trace("We are most likely on Wine\n"); + devinst_RegDeleteTreeW(HKEY_LOCAL_MACHINE, bogus); + devinst_RegDeleteTreeW(HKEY_LOCAL_MACHINE, classKey); + } + else + { + /* There should only be a class key entry, so a simple + * RegDeleteKey should work + * + * This could fail if it's the first time for this new test + * after running the old tests. + */ + ok(!RegDeleteKeyW(HKEY_LOCAL_MACHINE, classKey), + "Couldn't delete classkey\n"); + } } - devinst_RegDeleteTreeW(HKEY_LOCAL_MACHINE, classKey); } static void testRegisterAndGetDetail(void) { HDEVINFO set; BOOL ret; - GUID guid = {0x6a55b5a4, 0x3f65, 0x11db, {0xb7,0x04, - 0x00,0x11,0x95,0x5c,0x2b,0xdb}}; SP_DEVINFO_DATA devInfo = { sizeof(SP_DEVINFO_DATA), { 0 } }; SP_DEVICE_INTERFACE_DATA interfaceData = { sizeof(interfaceData), { 0 } }; DWORD dwSize = 0; + static const WCHAR bogus[] = {'S','y','s','t','e','m','\\', + 'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\', + 'E','n','u','m','\\','R','o','o','t','\\', + 'L','E','G','A','C','Y','_','B','O','G','U','S',0}; + static const WCHAR devclass[] = {'S','y','s','t','e','m','\\', + 'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\', + 'C','o','n','t','r','o','l','\\','D','e','v','i','c','e','C','l','a','s','s','e','s','\\', + '{','6','a','5','5','b','5','a','4','-','3','f','6','5','-', + '1','1','d','b','-','b','7','0','4','-', + '0','0','1','1','9','5','5','c','2','b','d','b','}',0}; SetLastError(0xdeadbeef); set = pSetupDiGetClassDevsA(&guid, NULL, 0, DIGCF_ALLCLASSES); @@ -884,6 +1081,10 @@ static void testRegisterAndGetDetail(void) ret = pSetupDiGetDeviceInterfaceDetailA(set, &interfaceData, detail, dwSize, &dwSize, NULL); ok(ret, "SetupDiGetDeviceInterfaceDetailA failed: %08x\n", GetLastError()); + /* FIXME: This one only worked because old data wasn't removed properly. As soon + * as all the tests are cleaned up correctly this has to be (or should be) fixed + */ + todo_wine ok(!lstrcmpiA(path, detail->DevicePath), "Unexpected path %s\n", detail->DevicePath); HeapFree(GetProcessHeap(), 0, detail); @@ -891,13 +1092,33 @@ static void testRegisterAndGetDetail(void) } pSetupDiDestroyDeviceInfoList(set); + + /* Cleanup */ + ret = remove_device(); + todo_wine + ok(ret, "Expected the device to be removed: %08x\n", GetLastError()); + + /* FIXME: Only do the RegDeleteKey, once Wine is fixed */ + if (!ret) + { + /* Wine doesn't delete the information currently */ + trace("We are most likely on Wine\n"); + devinst_RegDeleteTreeW(HKEY_LOCAL_MACHINE, bogus); + devinst_RegDeleteTreeW(HKEY_LOCAL_MACHINE, devclass); + } + else + { + /* There should only be a class key entry, so a simple + * RegDeleteKey should work + */ + ok(!RegDeleteKeyW(HKEY_LOCAL_MACHINE, devclass), + "Couldn't delete classkey\n"); + } } static void testDeviceRegistryPropertyA() { HDEVINFO set; - GUID guid = {0x6a55b5a4, 0x3f65, 0x11db, {0xb7,0x04, - 0x00,0x11,0x95,0x5c,0x2b,0xdb}}; SP_DEVINFO_DATA devInfo = { sizeof(SP_DEVINFO_DATA), { 0 } }; CHAR devName[] = "LEGACY_BOGUS"; CHAR friendlyName[] = "Bogus"; @@ -906,6 +1127,10 @@ static void testDeviceRegistryPropertyA() DWORD size; DWORD regType; BOOL ret; + LONG res; + HKEY key; + static const CHAR bogus[] = + "System\\CurrentControlSet\\Enum\\Root\\LEGACY_BOGUS"; SetLastError(0xdeadbeef); set = pSetupDiGetClassDevsA(&guid, NULL, 0, DIGCF_DEVICEINTERFACE); @@ -982,13 +1207,22 @@ static void testDeviceRegistryPropertyA() ok(!ret && GetLastError() == ERROR_INVALID_DATA, "Expected ERROR_INVALID_DATA, got %08x\n", GetLastError()); pSetupDiDestroyDeviceInfoList(set); + + res = RegOpenKeyA(HKEY_LOCAL_MACHINE, bogus, &key); + todo_wine + ok(res == ERROR_FILE_NOT_FOUND, "Expected key to not exist\n"); + /* FIXME: Remove when Wine is fixed */ + if (res == ERROR_SUCCESS) + { + /* Wine doesn't delete the information currently */ + trace("We are most likely on Wine\n"); + RegDeleteKeyA(HKEY_LOCAL_MACHINE, bogus); + } } static void testDeviceRegistryPropertyW() { HDEVINFO set; - GUID guid = {0x6a55b5a4, 0x3f65, 0x11db, {0xb7,0x04, - 0x00,0x11,0x95,0x5c,0x2b,0xdb}}; SP_DEVINFO_DATA devInfo = { sizeof(SP_DEVINFO_DATA), { 0 } }; WCHAR devName[] = {'L','E','G','A','C','Y','_','B','O','G','U','S',0}; WCHAR friendlyName[] = {'B','o','g','u','s',0}; @@ -997,6 +1231,12 @@ static void testDeviceRegistryPropertyW() DWORD size; DWORD regType; BOOL ret; + LONG res; + HKEY key; + static const WCHAR bogus[] = {'S','y','s','t','e','m','\\', + 'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\', + 'E','n','u','m','\\','R','o','o','t','\\', + 'L','E','G','A','C','Y','_','B','O','G','U','S',0}; SetLastError(0xdeadbeef); set = pSetupDiGetClassDevsW(&guid, NULL, 0, DIGCF_DEVICEINTERFACE); @@ -1078,6 +1318,17 @@ static void testDeviceRegistryPropertyW() ok(!ret && GetLastError() == ERROR_INVALID_DATA, "Expected ERROR_INVALID_DATA, got %08x\n", GetLastError()); pSetupDiDestroyDeviceInfoList(set); + + res = RegOpenKeyW(HKEY_LOCAL_MACHINE, bogus, &key); + todo_wine + ok(res == ERROR_FILE_NOT_FOUND, "Expected key to not exist\n"); + /* FIXME: Remove when Wine is fixed */ + if (res == ERROR_SUCCESS) + { + /* Wine doesn't delete the information currently */ + trace("We are most likely on Wine\n"); + RegDeleteKeyW(HKEY_LOCAL_MACHINE, bogus); + } } START_TEST(devinst) diff --git a/dlls/shell32/classes.c b/dlls/shell32/classes.c index e5fab4d8f2d..d6e986477f5 100644 --- a/dlls/shell32/classes.c +++ b/dlls/shell32/classes.c @@ -54,7 +54,7 @@ BOOL HCR_MapTypeToValueW(LPCWSTR szExtension, LPWSTR szFileType, LONG len, BOOL HKEY hkey; WCHAR szTemp[MAX_EXTENSION_LENGTH + 2]; - TRACE("%s %p\n", debugstr_w(szExtension), debugstr_w(szFileType)); + TRACE("%s %p\n", debugstr_w(szExtension), szFileType); /* added because we do not want to have double dots */ if (szExtension[0] == '.') diff --git a/dlls/shell32/shell32_Bg.rc b/dlls/shell32/shell32_Bg.rc index 05c71490c23..99e7475598d 100644 --- a/dlls/shell32/shell32_Bg.rc +++ b/dlls/shell32/shell32_Bg.rc @@ -105,17 +105,19 @@ FONT 8, "MS Shell Dlg" 4, 40, 180, 120 } -SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 210, 152 +SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 220, 152 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Îòíîñíî %s" FONT 10, "MS Shell Dlg" { - DEFPUSHBUTTON "OK", IDOK, 153, 133, 50, 12, WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 153, 133, 60, 12, WS_TABSTOP + PUSHBUTTON "Wine &license...", IDC_ABOUT_LICENSE, 153, 113, 60, 12, WS_TABSTOP LISTBOX IDC_ABOUT_LISTBOX, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER ICON "", stc1, 10, 10, 30, 30 - LTEXT "", IDC_ABOUT_STATIC_TEXT1, 40, 10, 137, 10 - LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 137, 10 - LTEXT "Wine áåøå ñúçäàäåí çà âàñ îò:", IDC_ABOUT_WINE_TEXT, 8, 55, 137, 10 + LTEXT "", IDC_ABOUT_STATIC_TEXT1, 40, 10, 170, 10 + LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 170, 10 + LTEXT "Running on %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10 + LTEXT "Wine áåøå ñúçäàäåí çà âàñ îò:", IDC_ABOUT_WINE_TEXT, 8, 54, 204, 10 } SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 @@ -146,6 +148,8 @@ STRINGTABLE IDS_SHV_COLUMN9 "Êîìåíòàð" IDS_SHV_COLUMN10 "Ñîáñòâåíèê" IDS_SHV_COLUMN11 "Ãðóïà" + IDS_SHV_COLUMN_DELFROM "Original location" + IDS_SHV_COLUMN_DELDATE "Date deleted" /* special folders */ IDS_DESKTOP "Ðàáîòåí ïëîò" @@ -166,6 +170,10 @@ STRINGTABLE IDS_DELETEITEM_TEXT "Íàèñòèíà ëè èñêàòå äà èçòðèåòå '%1'?" IDS_DELETEMULTIPLE_TEXT "Íàèñòèíà ëè èñêàòå äà èçòðèåòå òåçè %1 åëåìåíòà?" IDS_DELETESELECTED_TEXT "Íàèñòèíà ëè èñêàòå äà èçòðèåòå èçáðàíèòå åëåìåíòè?" + IDS_TRASHITEM_TEXT "Are you sure that you want to send '%1' to the Trash?" + IDS_TRASHFOLDER_TEXT "Are you sure that you want to send '%1' and all its content to the Trash?" + IDS_TRASHMULTIPLE_TEXT "Are you sure that you want to send these %1 items to the Trash?" + IDS_CANTTRASH_TEXT "The item '%1' can't be sent to Trash. Do you want to delete it instead?" IDS_OVERWRITEFILE_TEXT "This folder already contains a file called '%1'.\n\nDo you want to replace it?" IDS_OVERWRITEFILE_CAPTION "Ïîòâúðäåòå ïðåçàïèñà íà ôàéëà" IDS_OVERWRITEFOLDER_TEXT "This folder already contains a folder named '%1'.\n\n"\ diff --git a/dlls/shell32/shell32_Ca.rc b/dlls/shell32/shell32_Ca.rc index 2fca9784285..c332c0ef3fe 100644 --- a/dlls/shell32/shell32_Ca.rc +++ b/dlls/shell32/shell32_Ca.rc @@ -40,17 +40,19 @@ BEGIN END END -SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 210, 152 +SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 220, 152 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Quant a %s" FONT 10, "MS Shell Dlg" { - DEFPUSHBUTTON "D'Acord", IDOK, 153, 133, 50, 12, WS_TABSTOP + DEFPUSHBUTTON "D'Acord", IDOK, 153, 133, 60, 12, WS_TABSTOP + PUSHBUTTON "Wine &license...", IDC_ABOUT_LICENSE, 153, 113, 60, 12, WS_TABSTOP LISTBOX IDC_ABOUT_LISTBOX, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER ICON "", stc1, 10, 10, 30, 30 LTEXT "", IDC_ABOUT_STATIC_TEXT1, 40, 10, 137, 10 LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 137, 10 - LTEXT "Wine ha estat construit per:", IDC_ABOUT_WINE_TEXT, 8, 55, 137, 10 + LTEXT "Running on %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10 + LTEXT "Wine ha estat construit per:", IDC_ABOUT_WINE_TEXT, 8, 54, 204, 10 } SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 diff --git a/dlls/shell32/shell32_Cn.rc b/dlls/shell32/shell32_Cn.rc index 0f9dec7ed36..cef902c0dab 100644 --- a/dlls/shell32/shell32_Cn.rc +++ b/dlls/shell32/shell32_Cn.rc @@ -41,16 +41,18 @@ BEGIN END END -SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 210, 152 +SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 220, 152 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "¹ØÓÚ %s" FONT 10, "MS Shell Dlg" { - DEFPUSHBUTTON "È·¶¨", IDOK, 153, 133, 50, 12, WS_TABSTOP + DEFPUSHBUTTON "È·¶¨", IDOK, 153, 133, 60, 12, WS_TABSTOP + PUSHBUTTON "Wine &license...", IDC_ABOUT_LICENSE, 153, 113, 60, 12, WS_TABSTOP LISTBOX IDC_ABOUT_LISTBOX, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER ICON "", stc1, 10, 10, 30, 30 - LTEXT "", IDC_ABOUT_STATIC_TEXT1, 40, 10, 137, 10 - LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 137, 10 + LTEXT "", IDC_ABOUT_STATIC_TEXT1, 40, 10, 170, 10 + LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 170, 10 + LTEXT "Running on %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10 LTEXT "Wine was brought to you by:", IDC_ABOUT_WINE_TEXT, 8, 55, 137, 10 } @@ -80,8 +82,6 @@ BEGIN IDS_SHV_COLUMN7 "Ê£Óà¿Õ¼ä" IDS_SHV_COLUMN8 "Name" /*FIXME*/ IDS_SHV_COLUMN9 "Comments" /*FIXME*/ - - IDS_NEWFOLDER "New Folder" END #pragma code_page(default) diff --git a/dlls/shell32/shell32_De.rc b/dlls/shell32/shell32_De.rc index f5e02913845..f3b0dc1a902 100644 --- a/dlls/shell32/shell32_De.rc +++ b/dlls/shell32/shell32_De.rc @@ -56,12 +56,12 @@ BEGIN MENUITEM "Aktualisieren", FCIDM_SHVIEW_REFRESH MENUITEM SEPARATOR MENUITEM "Einfügen", FCIDM_SHVIEW_INSERT - MENUITEM "Einfügen als Verweis", FCIDM_SHVIEW_INSERTLINK + MENUITEM "Einfügen als Verknüpfung", FCIDM_SHVIEW_INSERTLINK MENUITEM SEPARATOR POPUP "Neu" BEGIN MENUITEM "Neues Ver&zeichnis", FCIDM_SHVIEW_NEWFOLDER - MENUITEM "Neuer Ver&weis", FCIDM_SHVIEW_NEWLINK + MENUITEM "Neue Ver&knüpfung", FCIDM_SHVIEW_NEWLINK MENUITEM SEPARATOR END MENUITEM SEPARATOR @@ -76,14 +76,14 @@ MENU_SHV_FILE MENU DISCARDABLE BEGIN POPUP "" BEGIN - MENUITEM "&Select" FCIDM_SHVIEW_OPEN + MENUITEM "&Öffnen" FCIDM_SHVIEW_OPEN MENUITEM "E&rkunden", FCIDM_SHVIEW_EXPLORE - MENUITEM "&Öffnen", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR MENUITEM "&Ausschneiden", FCIDM_SHVIEW_CUT MENUITEM "&Kopieren", FCIDM_SHVIEW_COPY + MENUITEM "&Einfügen", FCIDM_SHVIEW_INSERT MENUITEM SEPARATOR - MENUITEM "Erstelle Ver&weis", FCIDM_SHVIEW_CREATELINK + MENUITEM "Ver&knüpfung erzeugen", FCIDM_SHVIEW_CREATELINK MENUITEM "&Löschen", FCIDM_SHVIEW_DELETE MENUITEM "&Umbenennen", FCIDM_SHVIEW_RENAME MENUITEM SEPARATOR @@ -186,7 +186,7 @@ STRINGTABLE /* special folders */ IDS_DESKTOP "Desktop" IDS_MYCOMPUTER "Arbeitsplatz" - IDS_RECYCLEBIN_FOLDER_NAME "Müll" + IDS_RECYCLEBIN_FOLDER_NAME "Papierkorb" /* context menus */ IDS_VIEW_LARGE "&Große Symbole" @@ -203,22 +203,21 @@ STRINGTABLE IDS_DELETEITEM_TEXT "Sind Sie sich sicher, dass Sie '%1' löschen möchten?" IDS_DELETEMULTIPLE_TEXT "Sind Sie sich sicher, dass Sie diese %1 Objekte löschen möchten?" IDS_DELETESELECTED_TEXT "Sind Sie sich sicher, dass Sie die ausgewählten Objekte löschen möchten?" - IDS_TRASHITEM_TEXT "Sind Sie sich sicher, dass Sie '%1' in Müll verschieben möchten?" - IDS_TRASHFOLDER_TEXT "Sind Sie sich sicher, dass Sie '%1' und seinen Inhalt in den Müll verschieben möchten?" - IDS_TRASHMULTIPLE_TEXT "Sind Sie sich sicher, dass Sie diese %1 Dateien in den Müll verschieben möchten?" - IDS_CANTTRASH_TEXT "Das Objekt '%1' kann nicht in den Müll verschoben werden. Möchten Sie es stattdessen löschen?" - IDS_OVERWRITEFILE_TEXT "This folder already contains a file called '%1'.\n\nDo you want to replace it?" + IDS_TRASHITEM_TEXT "Sind Sie sich sicher, dass Sie '%1' in den Papierkorb verschieben möchten?" + IDS_TRASHFOLDER_TEXT "Sind Sie sich sicher, dass Sie '%1' und seinen Inhalt in den Papierkorb verschieben möchten?" + IDS_TRASHMULTIPLE_TEXT "Sind Sie sich sicher, dass Sie diese %1 Dateien in den Papierkorb verschieben möchten?" + IDS_CANTTRASH_TEXT "Das Objekt '%1' kann nicht in den Papierkorb verschoben werden.\n\n Möchten Sie es stattdessen löschen?" + IDS_OVERWRITEFILE_TEXT "Der Ordner enthält bereits eine Datei namens '%1'.\n\n Wollen Sie die Datei ersetzen?" IDS_OVERWRITEFILE_CAPTION "Bestätigung: Datei überschreiben" - IDS_OVERWRITEFOLDER_TEXT "This folder already contains a folder named '%1'.\n\n"\ - "If the files in the destination folder have the same names as files in the\n"\ - "selected folder they will be replaced. Do you still want to move or copy\n"\ - "the folder?" + IDS_OVERWRITEFOLDER_TEXT "Im Verzeichnis befindet sich bereits ein Ordner namens '%1'.\n\n"\ + "Wenn die Dateien im Zielordner die gleichen Namen haben, wie die im ausgewählten Ordner, werden sie ersetzt.\n\n\ + Möchten sie trotzdem fortfahren?" /* message box strings */ IDS_RESTART_TITLE "Neustarten" - IDS_RESTART_PROMPT "Möchten Sie, dass ein simulierter Windows Neustart durchgeführt wird ?" - IDS_SHUTDOWN_TITLE "Anhalten" - IDS_SHUTDOWN_PROMPT "Möchten Sie die aktuelle Wine Sitzung beenden ?" + IDS_RESTART_PROMPT "Möchten Sie, dass ein simulierter Windows Neustart durchgeführt wird?" + IDS_SHUTDOWN_TITLE "Beenden" + IDS_SHUTDOWN_PROMPT "Möchten Sie die aktuelle Wine Sitzung beenden?" /* shell folder path default values */ IDS_PROGRAMS "Startmenü\\Programme" @@ -249,5 +248,25 @@ STRINGTABLE IDS_COMMON_VIDEO "Dokumente\\Eigene Videos" IDS_CDBURN_AREA "Lokale Einstellungen\\Anwendungsdaten\\Microsoft\\CD Burning" - IDS_NEWFOLDER "New Folder" + IDS_NEWFOLDER "Neuer Ordner" +} + +STRINGTABLE +{ +IDS_LICENSE_CAPTION, "Wine License" +IDS_LICENSE, +"Wine ist freie Software; Sie dürfen sie unter den Bedingungen \ +der GNU Lesser General Public License, welche von der \ +Free Software Foundation veröffentlicht wurde; weiter verteilen \ +und/oder modifizieren gemäß Version 2.1 der Lizenz, oder \ +(nach ihren Ermessen) jeder späteren Version.\n\n\ +Wine wird mit der Hoffnung verteilt das es sich als nützlich erweist. \ +Wine kommt aber OHNE JEGLICHE GARANTIE daher; sogar ohne einer \ +angedeuteten Garantie der MARKTGÄNGIGKEIT oder der EIGNUNG FÜR EINEN \ +BESTIMMTEN NUTZEN. Sehen Sie sich die GNU Lesser General Public License \ +an für mehr Details.\n\n\ +Sie sollten mit dieser Bibliothek auch eine Kopie der \ +GNU Lesser General Public License erhalten haben; wenn nicht schreiben \ +Sie der Free Software Foundation, \ +Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA." } diff --git a/dlls/shell32/shell32_En.rc b/dlls/shell32/shell32_En.rc index 68263ce9c7f..e2f476a7987 100644 --- a/dlls/shell32/shell32_En.rc +++ b/dlls/shell32/shell32_En.rc @@ -264,6 +264,6 @@ 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.\n\n\ You should have received a copy of the GNU Lesser General Public \ -License along with this library; if not, write to the Free Software \ +License along with Wine; if not, write to the Free Software \ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA." } diff --git a/dlls/shell32/shell32_Eo.rc b/dlls/shell32/shell32_Eo.rc index 25095487c49..775961d5c47 100644 --- a/dlls/shell32/shell32_Eo.rc +++ b/dlls/shell32/shell32_Eo.rc @@ -108,17 +108,19 @@ FONT 8, "MS Shell Dlg" 4, 40, 180, 120 } -SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 210, 152 +SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 220, 152 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Pri %s" FONT 10, "MS Shell Dlg" { - DEFPUSHBUTTON "Bone", 1, 153, 130, 50, 12 + DEFPUSHBUTTON "Bone", IDOK, 153, 133, 60, 12, WS_TABSTOP + PUSHBUTTON "Wine &license...", IDC_ABOUT_LICENSE, 153, 113, 60, 12, WS_TABSTOP LISTBOX IDC_ABOUT_LISTBOX, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER ICON "", stc1, 10, 10, 30, 30 - LTEXT "", IDC_ABOUT_STATIC_TEXT1, 40, 10, 137, 10 - LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 137, 10 - LTEXT "Wine estas disponebla dank'al:", IDC_ABOUT_WINE_TEXT, 8, 55, 137, 10 + LTEXT "", IDC_ABOUT_STATIC_TEXT1, 40, 10, 170, 10 + LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 170, 10 + LTEXT "Running on %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10 + LTEXT "Wine estas disponebla dank'al:", IDC_ABOUT_WINE_TEXT, 8, 54, 204, 10 } SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 @@ -135,20 +137,19 @@ FONT 8, "MS Shell Dlg" PUSHBUTTON "Foliu...", 12288, 170, 63, 50, 14, WS_TABSTOP } -/* - special folders -*/ STRINGTABLE { + /* columns in the shellview */ + IDS_SHV_COLUMN10 "Owner" + IDS_SHV_COLUMN11 "Group" + IDS_SHV_COLUMN_DELFROM "Original location" + IDS_SHV_COLUMN_DELDATE "Date deleted" + + /* special folders */ IDS_DESKTOP "Desktop" IDS_MYCOMPUTER "Mea Komputero" -} -/* - context menus -*/ -STRINGTABLE -{ + /* context menus */ IDS_VIEW_LARGE "&Grandaj Ikonoj" IDS_VIEW_SMALL "Malgrandaj Ikonoj" IDS_VIEW_LIST "&Listo" @@ -165,6 +166,11 @@ STRINGTABLE IDS_DELETEFOLDER_CAPTION "Konfirmu forigon de dosierujo" IDS_DELETEITEM_TEXT "Æu vi estas certa pri forigo de '%1'?" IDS_DELETEMULTIPLE_TEXT "Æu vi estas certa pri forigo de æi tiuj %1 komponantoj?" + IDS_DELETESELECTED_TEXT "Are you sure you want to delete the selected item(s)?" + IDS_TRASHITEM_TEXT "Are you sure that you want to send '%1' to the Trash?" + IDS_TRASHFOLDER_TEXT "Are you sure that you want to send '%1' and all its content to the Trash?" + IDS_TRASHMULTIPLE_TEXT "Are you sure that you want to send these %1 items to the Trash?" + IDS_CANTTRASH_TEXT "The item '%1' can't be sent to Trash. Do you want to delete it instead?" IDS_OVERWRITEFILE_TEXT "This folder already contains a file called '%1'.\n\nDo you want to replace it?" IDS_OVERWRITEFILE_CAPTION "Konfirmu supreskribiton de dosieron" IDS_OVERWRITEFOLDER_TEXT "This folder already contains a folder named '%1'.\n\n"\ diff --git a/dlls/shell32/shell32_Fi.rc b/dlls/shell32/shell32_Fi.rc index 993738067f6..9ab1a778633 100644 --- a/dlls/shell32/shell32_Fi.rc +++ b/dlls/shell32/shell32_Fi.rc @@ -105,17 +105,19 @@ FONT 8, "MS Shell Dlg" 4, 40, 180, 120 } -SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 210, 152 +SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 220, 152 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Tietoja %s" FONT 10, "MS Shell Dlg" { - DEFPUSHBUTTON "OK", IDOK, 153, 133, 50, 12, WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 153, 133, 60, 12, WS_TABSTOP + PUSHBUTTON "Wine &license...", IDC_ABOUT_LICENSE, 153, 113, 60, 12, WS_TABSTOP LISTBOX IDC_ABOUT_LISTBOX, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER ICON "", stc1, 10, 10, 30, 30 - LTEXT "", IDC_ABOUT_STATIC_TEXT1, 40, 10, 137, 10 - LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 137, 10 - LTEXT "Wine:n toi Sinulle:", IDC_ABOUT_WINE_TEXT, 8, 55, 137, 10 + LTEXT "", IDC_ABOUT_STATIC_TEXT1, 40, 10, 170, 10 + LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 170, 10 + LTEXT "Running on %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10 + LTEXT "Wine:n toi Sinulle:", IDC_ABOUT_WINE_TEXT, 8, 54, 204, 10 } SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 @@ -146,6 +148,8 @@ STRINGTABLE IDS_SHV_COLUMN9 "Kommentit" IDS_SHV_COLUMN10 "Omistaja" IDS_SHV_COLUMN11 "Ryhmä" + IDS_SHV_COLUMN_DELFROM "Original location" + IDS_SHV_COLUMN_DELDATE "Date deleted" /* special folders */ IDS_DESKTOP "Työpöytä" @@ -165,6 +169,11 @@ STRINGTABLE IDS_DELETEFOLDER_CAPTION "Vahvista kansion tuhoaminen" IDS_DELETEITEM_TEXT "Haluatko varmasti tuhota '%1':n?" IDS_DELETEMULTIPLE_TEXT "Haluatko varmasti tuhota nämä %1?" + IDS_DELETESELECTED_TEXT "Are you sure you want to delete the selected item(s)?" + IDS_TRASHITEM_TEXT "Are you sure that you want to send '%1' to the Trash?" + IDS_TRASHFOLDER_TEXT "Are you sure that you want to send '%1' and all its content to the Trash?" + IDS_TRASHMULTIPLE_TEXT "Are you sure that you want to send these %1 items to the Trash?" + IDS_CANTTRASH_TEXT "The item '%1' can't be sent to Trash. Do you want to delete it instead?" IDS_OVERWRITEFILE_TEXT "This folder already contains a file called '%1'.\n\nDo you want to replace it?" IDS_OVERWRITEFILE_CAPTION "Vahvista tiedoston ylikirjoitus" IDS_OVERWRITEFOLDER_TEXT "This folder already contains a folder named '%1'.\n\n"\ diff --git a/dlls/shell32/shell32_Hu.rc b/dlls/shell32/shell32_Hu.rc index 8a10e5e2b0e..00ac5549450 100644 --- a/dlls/shell32/shell32_Hu.rc +++ b/dlls/shell32/shell32_Hu.rc @@ -40,17 +40,19 @@ BEGIN END END -SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 210, 152 +SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 220, 152 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Névjegy: %s" FONT 10, "MS Shell Dlg" { - DEFPUSHBUTTON "OK", IDOK, 153, 133, 50, 12, WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 153, 133, 60, 12, WS_TABSTOP + PUSHBUTTON "Wine &license...", IDC_ABOUT_LICENSE, 153, 113, 60, 12, WS_TABSTOP LISTBOX IDC_ABOUT_LISTBOX, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER ICON "", stc1, 10, 10, 30, 30 - LTEXT "", IDC_ABOUT_STATIC_TEXT1, 40, 10, 137, 10 - LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 137, 10 - LTEXT "A WINE-t írták:", IDC_ABOUT_WINE_TEXT, 8, 55, 137, 10 + LTEXT "", IDC_ABOUT_STATIC_TEXT1, 40, 10, 170, 10 + LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 170, 10 + LTEXT "Running on %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10 + LTEXT "A WINE-t írták:", IDC_ABOUT_WINE_TEXT, 8, 54, 204, 10 } SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 diff --git a/dlls/shell32/shell32_Ja.rc b/dlls/shell32/shell32_Ja.rc index 3912a12f38e..0584a94dd6c 100644 --- a/dlls/shell32/shell32_Ja.rc +++ b/dlls/shell32/shell32_Ja.rc @@ -49,14 +49,18 @@ BEGIN END MENUITEM "“™ŠÔŠu‚É�®—ñ", FCIDM_SHVIEW_SNAPTOGRID MENUITEM SEPARATOR + MENUITEM "Refresh", FCIDM_SHVIEW_REFRESH + MENUITEM SEPARATOR MENUITEM "“\\‚è•t‚¯", FCIDM_SHVIEW_INSERT MENUITEM "ƒVƒ‡�[ƒgƒJƒbƒg‚Ì“\\‚è•t‚¯", FCIDM_SHVIEW_INSERTLINK + MENUITEM SEPARATOR POPUP "�V‹K�ì�¬" BEGIN - MENUITEM "�V‹KƒtƒHƒ‹ƒ_(&F)", 0x7053 - MENUITEM "�V‹KƒVƒ‡�[ƒgƒJƒbƒg(&L)", 0x7052 + MENUITEM "�V‹KƒtƒHƒ‹ƒ_(&F)", FCIDM_SHVIEW_NEWFOLDER + MENUITEM "�V‹KƒVƒ‡�[ƒgƒJƒbƒg(&L)", FCIDM_SHVIEW_NEWLINK MENUITEM SEPARATOR END + MENUITEM SEPARATOR MENUITEM "ƒvƒ�ƒpƒeƒB", FCIDM_SHVIEW_PROPERTIES END END @@ -66,6 +70,9 @@ BEGIN POPUP "" BEGIN MENUITEM "&Select" FCIDM_SHVIEW_OPEN + MENUITEM "E&xplore", FCIDM_SHVIEW_EXPLORE + MENUITEM "&Open", FCIDM_SHVIEW_OPEN + MENUITEM SEPARATOR MENUITEM "�Ø‚èŽæ‚è(&U)", FCIDM_SHVIEW_CUT MENUITEM "ƒRƒs�[(&C)", FCIDM_SHVIEW_COPY MENUITEM SEPARATOR @@ -77,20 +84,28 @@ BEGIN END END -/* - special folders -*/ STRINGTABLE { + /* columns in the shellview */ + IDS_SHV_COLUMN1 "–¼‘O" + IDS_SHV_COLUMN2 "ƒTƒCƒY" + IDS_SHV_COLUMN3 "ƒtƒ@ƒCƒ‹‚ÌŽí—Þ" + IDS_SHV_COLUMN4 "�X�V“úŽž" + IDS_SHV_COLUMN5 "‘®�«" + IDS_SHV_COLUMN6 "�‡ŒvƒTƒCƒY" + IDS_SHV_COLUMN7 "‹ó‚«—e—Ê" + IDS_SHV_COLUMN8 "Name" /*FIXME*/ + IDS_SHV_COLUMN9 "Comments" /*FIXME*/ + IDS_SHV_COLUMN10 "Owner" + IDS_SHV_COLUMN11 "Group" + IDS_SHV_COLUMN_DELFROM "Original location" + IDS_SHV_COLUMN_DELDATE "Date deleted" + + /* special folders */ IDS_DESKTOP "ÃÞ½¸Ä¯Ìß" IDS_MYCOMPUTER "ϲºÝËß­°À" -} -/* - context menus -*/ -STRINGTABLE -{ + /* context menus */ IDS_VIEW_LARGE "‘å‚«‚¢ƒAƒCƒRƒ“(&G)" IDS_VIEW_SMALL "�¬‚³‚¢ƒAƒCƒRƒ“(&M)" IDS_VIEW_LIST "ˆê——(&L)" @@ -99,17 +114,19 @@ STRINGTABLE IDS_OPEN "ŠJ‚­" } -SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 210, 152 +SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 220, 152 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "%s ‚ɂ‚¢‚Ä" FONT 10, "MS Shell Dlg" { - DEFPUSHBUTTON "OK", IDOK, 153, 133, 50, 12, WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 153, 133, 60, 12, WS_TABSTOP + PUSHBUTTON "Wine &license...", IDC_ABOUT_LICENSE, 153, 113, 60, 12, WS_TABSTOP LISTBOX IDC_ABOUT_LISTBOX, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER ICON "", stc1, 10, 10, 30, 30 - LTEXT "", IDC_ABOUT_STATIC_TEXT1, 40, 10, 137, 10 - LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 137, 10 - LTEXT "Wine was brought to you by:", IDC_ABOUT_WINE_TEXT, 8, 55, 137, 10 + LTEXT "", IDC_ABOUT_STATIC_TEXT1, 40, 10, 170, 10 + LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 170, 10 + LTEXT "Running on %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10 + LTEXT "Wine was brought to you by:", IDC_ABOUT_WINE_TEXT, 8, 54, 204, 10 } SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 @@ -125,19 +142,3 @@ FONT 8, "MS Shell Dlg" PUSHBUTTON "Cancel", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP PUSHBUTTON "&Browse...", 12288, 170, 63, 50, 14, WS_TABSTOP } - -/* columns in the shellview */ -STRINGTABLE -BEGIN - IDS_SHV_COLUMN1 "–¼‘O" - IDS_SHV_COLUMN2 "ƒTƒCƒY" - IDS_SHV_COLUMN3 "ƒtƒ@ƒCƒ‹‚ÌŽí—Þ" - IDS_SHV_COLUMN4 "�X�V“úŽž" - IDS_SHV_COLUMN5 "‘®�«" - IDS_SHV_COLUMN6 "�‡ŒvƒTƒCƒY" - IDS_SHV_COLUMN7 "‹ó‚«—e—Ê" - IDS_SHV_COLUMN8 "Name" /*FIXME*/ - IDS_SHV_COLUMN9 "Comments" /*FIXME*/ - - IDS_NEWFOLDER "New Folder" -END diff --git a/dlls/shell32/shell32_Sk.rc b/dlls/shell32/shell32_Sk.rc index d39c9b96216..83529394ba1 100644 --- a/dlls/shell32/shell32_Sk.rc +++ b/dlls/shell32/shell32_Sk.rc @@ -40,17 +40,19 @@ BEGIN END END -SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 210, 152 +SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 220, 152 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "O programe %s" FONT 10, "MS Shell Dlg" { - DEFPUSHBUTTON "OK", IDOK, 153, 133, 50, 12, WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 153, 133, 60, 12, WS_TABSTOP + PUSHBUTTON "Wine &license...", IDC_ABOUT_LICENSE, 153, 113, 60, 12, WS_TABSTOP LISTBOX IDC_ABOUT_LISTBOX, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER ICON "", stc1, 10, 10, 30, 30 - LTEXT "", IDC_ABOUT_STATIC_TEXT1, 40, 10, 137, 10 - LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 137, 10 - LTEXT "Víno pre vás pripravili:", IDC_ABOUT_WINE_TEXT, 8, 55, 137, 10 + LTEXT "", IDC_ABOUT_STATIC_TEXT1, 40, 10, 170, 10 + LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 170, 10 + LTEXT "Running on %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10 + LTEXT "Víno pre vás pripravili:", IDC_ABOUT_WINE_TEXT, 8, 54, 204, 10 } SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 @@ -79,6 +81,4 @@ BEGIN IDS_SHV_COLUMN7 "Ve¾kos� k dispozícii" IDS_SHV_COLUMN8 "Name" /*FIXME*/ IDS_SHV_COLUMN9 "Comments" /*FIXME*/ - - IDS_NEWFOLDER "New Folder" END diff --git a/dlls/shell32/shell32_Uk.rc b/dlls/shell32/shell32_Uk.rc index 0c77431a797..e3d5de53f89 100644 --- a/dlls/shell32/shell32_Uk.rc +++ b/dlls/shell32/shell32_Uk.rc @@ -105,16 +105,18 @@ FONT 8, "MS Shell Dlg" 4, 40, 180, 120 } -SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 210, 152 +SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 220, 152 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Ïðî %s" FONT 10, "MS Shell Dlg" { - DEFPUSHBUTTON "OK", IDOK, 153, 133, 50, 12, WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 153, 133, 60, 12, WS_TABSTOP + PUSHBUTTON "Wine &license...", IDC_ABOUT_LICENSE, 153, 113, 60, 12, WS_TABSTOP LISTBOX IDC_ABOUT_LISTBOX, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER ICON "", stc1, 10, 10, 30, 30 - LTEXT "", IDC_ABOUT_STATIC_TEXT1, 40, 10, 137, 10 - LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 137, 10 + LTEXT "", IDC_ABOUT_STATIC_TEXT1, 40, 10, 170, 10 + LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 170, 10 + LTEXT "Running on %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10 LTEXT "Ðîçðîáíèêè Wine:", IDC_ABOUT_WINE_TEXT, 8, 55, 137, 10 } @@ -154,6 +156,11 @@ STRINGTABLE IDS_DELETEFOLDER_CAPTION "ϳäòâåðäæåííÿ âèëó÷åííÿ òåêè" IDS_DELETEITEM_TEXT "Âè âïåâíåí³, ùî õî÷åòå âèëó÷èòè '%1'?" IDS_DELETEMULTIPLE_TEXT "Âè âïåâíåí³, ùî õî÷åòå âèëó÷èòè ö³ %1 åëåìåíòè(³â)?" + IDS_DELETESELECTED_TEXT "Are you sure you want to delete the selected item(s)?" + IDS_TRASHITEM_TEXT "Are you sure that you want to send '%1' to the Trash?" + IDS_TRASHFOLDER_TEXT "Are you sure that you want to send '%1' and all its content to the Trash?" + IDS_TRASHMULTIPLE_TEXT "Are you sure that you want to send these %1 items to the Trash?" + IDS_CANTTRASH_TEXT "The item '%1' can't be sent to Trash. Do you want to delete it instead?" IDS_OVERWRITEFILE_TEXT "This folder already contains a file called '%1'.\n\nDo you want to replace it?" IDS_OVERWRITEFILE_CAPTION "ϳäòâåðäæåííÿ Ïåðåçàïèñó Ôàéëó" IDS_OVERWRITEFOLDER_TEXT "This folder already contains a folder named '%1'.\n\n"\ @@ -169,6 +176,12 @@ STRINGTABLE IDS_SHV_COLUMN5 "Àòðèáóòè" IDS_SHV_COLUMN6 "Ðîçì³ð" IDS_SHV_COLUMN7 "³ëüíèé Ðîçì³ð" + IDS_SHV_COLUMN8 "Name" + IDS_SHV_COLUMN9 "Comments" + IDS_SHV_COLUMN10 "Owner" + IDS_SHV_COLUMN11 "Group" + IDS_SHV_COLUMN_DELFROM "Original location" + IDS_SHV_COLUMN_DELDATE "Date deleted" IDS_NEWFOLDER "New Folder" } diff --git a/dlls/shell32/shell32_Wa.rc b/dlls/shell32/shell32_Wa.rc index 52f2f57ea23..8821290c100 100644 --- a/dlls/shell32/shell32_Wa.rc +++ b/dlls/shell32/shell32_Wa.rc @@ -45,17 +45,19 @@ BEGIN END END -SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 210, 152 +SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 220, 152 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Å dfait di %s" FONT 10, "MS Shell Dlg" { - DEFPUSHBUTTON "I Va", IDOK, 153, 133, 50, 12, WS_TABSTOP + DEFPUSHBUTTON "I Va", IDOK, 153, 133, 60, 12, WS_TABSTOP + PUSHBUTTON "Wine &license...", IDC_ABOUT_LICENSE, 153, 113, 60, 12, WS_TABSTOP LISTBOX IDC_ABOUT_LISTBOX, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER ICON "", stc1, 10, 10, 30, 30 - LTEXT "", IDC_ABOUT_STATIC_TEXT1, 40, 10, 137, 10 - LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 137, 10 - LTEXT "Wine a estu fwait par:", IDC_ABOUT_WINE_TEXT, 8, 55, 137, 10 + LTEXT "", IDC_ABOUT_STATIC_TEXT1, 42, 10, 170, 10 + LTEXT "", IDC_ABOUT_STATIC_TEXT2, 42, 22, 170, 10 + LTEXT "Running on %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10 + LTEXT "Wine a estu fwait par:", IDC_ABOUT_WINE_TEXT, 8, 54, 204, 10 } SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 diff --git a/dlls/shell32/shell32_Zh.rc b/dlls/shell32/shell32_Zh.rc index 86a25aae639..763c279bea7 100644 --- a/dlls/shell32/shell32_Zh.rc +++ b/dlls/shell32/shell32_Zh.rc @@ -41,16 +41,18 @@ BEGIN END END -SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 210, 152 +SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 220, 152 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "êPì¶ %s" FONT 8, "MS Shell Dlg" { - DEFPUSHBUTTON "´_¶¨", IDOK, 153, 133, 50, 12, WS_TABSTOP + DEFPUSHBUTTON "´_¶¨", IDOK, 153, 133, 60, 12, WS_TABSTOP + PUSHBUTTON "Wine &license...", IDC_ABOUT_LICENSE, 153, 113, 60, 12, WS_TABSTOP LISTBOX IDC_ABOUT_LISTBOX, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER ICON "", stc1, 10, 10, 30, 30 - LTEXT "", IDC_ABOUT_STATIC_TEXT1, 40, 10, 137, 10 - LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 137, 10 + LTEXT "", IDC_ABOUT_STATIC_TEXT1, 40, 10, 170, 10 + LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 170, 10 + LTEXT "Running on %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10 LTEXT "Wine was brought to you by:", IDC_ABOUT_WINE_TEXT, 8, 55, 137, 10 } @@ -80,8 +82,6 @@ BEGIN IDS_SHV_COLUMN7 "Ê£ðN¿Õég" IDS_SHV_COLUMN8 "Name" /*FIXME*/ IDS_SHV_COLUMN9 "Comments" /*FIXME*/ - - IDS_NEWFOLDER "New Folder" END #pragma code_page(default) diff --git a/dlls/shell32/tests/shelllink.c b/dlls/shell32/tests/shelllink.c index ec3481a5592..5cbd8bfcd71 100644 --- a/dlls/shell32/tests/shelllink.c +++ b/dlls/shell32/tests/shelllink.c @@ -501,6 +501,12 @@ static void test_load_save(void) HANDLE hf; DWORD r; + if (!pGetLongPathNameA) + { + skip("GetLongPathNameA is not available\n"); + return; + } + /* Save an empty .lnk file */ memset(&desc, 0, sizeof(desc)); create_lnk(lnkfile, &desc, 0); @@ -533,10 +539,13 @@ static void test_load_save(void) if (p) *p='\0'; + /* IShellLink returns path in long form */ + pGetLongPathNameA(mypath, realpath, MAX_PATH); + /* Overwrite the existing lnk file and point it to existing files */ desc.description="test 2"; desc.workdir=mydir; - desc.path=mypath; + desc.path=realpath; desc.pidl=NULL; desc.arguments="/option1 /option2 \"Some string\""; desc.showcmd=SW_SHOWNORMAL; @@ -565,11 +574,6 @@ static void test_load_save(void) /* Create a temporary non-executable file */ r=GetTempPath(sizeof(mypath), mypath); ok(rpt.x, (INT16)pmt->pt.y) ); else { - if (menu->dwStyle & MNS_NOTIFYBYPOS) + POPUPMENU *topmenu = MENU_GetMenu( pmt->hTopMenu ); + DWORD dwStyle = menu->dwStyle | (topmenu ? topmenu->dwStyle : 0); + + if (dwStyle & MNS_NOTIFYBYPOS) PostMessageW( pmt->hOwnerWnd, WM_MENUCOMMAND, menu->FocusedItem, (LPARAM)hMenu); else diff --git a/dlls/user32/painting.c b/dlls/user32/painting.c index 7ec76349f04..436bd16a717 100644 --- a/dlls/user32/painting.c +++ b/dlls/user32/painting.c @@ -859,20 +859,11 @@ static HWND fix_caret(HWND hWnd, const RECT *scroll_rect, INT dx, INT dy, */ HDC WINAPI BeginPaint( HWND hwnd, PAINTSTRUCT *lps ) { - HWND full_handle; HRGN hrgn; UINT flags = UPDATE_NONCLIENT | UPDATE_ERASE | UPDATE_PAINT | UPDATE_INTERNALPAINT | UPDATE_NOCHILDREN; if (!lps) return 0; - if (!(full_handle = WIN_IsCurrentThread( hwnd ))) - { - if (IsWindow(hwnd)) - FIXME( "window %p belongs to other thread\n", hwnd ); - return 0; - } - hwnd = full_handle; - HideCaret( hwnd ); if (!(hrgn = send_ncpaint( hwnd, NULL, &flags ))) return 0; diff --git a/dlls/user32/resources/user32_Zh.rc b/dlls/user32/resources/user32_Zh.rc index 978b71b0fd9..a103cc11d4f 100644 --- a/dlls/user32/resources/user32_Zh.rc +++ b/dlls/user32/resources/user32_Zh.rc @@ -29,6 +29,8 @@ SYSMENU MENU LOADONCALL MOVEABLE DISCARDABLE MENUITEM "¹Ø±Õ(&N)\tAlt-F4", 61536 MENUITEM SEPARATOR MENUITEM "Çл»µ½(&S)...\tCtrl-Esc", 61744 + MENUITEM SEPARATOR + MENUITEM "&About Wine ...", 61761 } EDITMENU MENU LOADONCALL MOVEABLE DISCARDABLE @@ -93,6 +95,8 @@ SYSMENU MENU LOADONCALL MOVEABLE DISCARDABLE MENUITEM "êPé](&N)\tAlt-F4", 61536 MENUITEM SEPARATOR MENUITEM "ÇГQµ½(&S)...\tCtrl-Esc", 61744 + MENUITEM SEPARATOR + MENUITEM "&About Wine ...", 61761 } EDITMENU MENU LOADONCALL MOVEABLE DISCARDABLE @@ -111,10 +115,10 @@ EDITMENU MENU LOADONCALL MOVEABLE DISCARDABLE } MSGBOX DIALOG 100, 80, 216, 168 -STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU BEGIN ICON "", 1088, 8, 20, 16, 16, WS_CHILD | WS_VISIBLE - LTEXT "", 100, 32, 4, 176, 48, WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "", 100, 32, 4, 176, 48, WS_CHILD | WS_VISIBLE | WS_GROUP | SS_NOPREFIX PUSHBUTTON "´_¶¨(&O)", 1, 16, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON "È¡Ïû(&C)", 2, 64, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP PUSHBUTTON "ÖÐÖ¹(&A)", 3, 112, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP diff --git a/dlls/user32/tests/cursoricon.c b/dlls/user32/tests/cursoricon.c index dcac002c8f9..e00c45ec7d0 100644 --- a/dlls/user32/tests/cursoricon.c +++ b/dlls/user32/tests/cursoricon.c @@ -593,10 +593,14 @@ static void test_CreateIcon(void) bmpinfo.bmiHeader.biBitCount = 8; bmpinfo.bmiHeader.biCompression = BI_RGB; hbmColor = CreateDIBSection( hdc, &bmpinfo, DIB_RGB_COLORS, &bits, NULL, 0 ); - memset( bits, 0x55, 32 * 32 * bmpinfo.bmiHeader.biBitCount / 8 ); + ok(hbmColor != NULL, "Expected a handle to the DIB\n"); + if (bits) + memset( bits, 0x55, 32 * 32 * bmpinfo.bmiHeader.biBitCount / 8 ); bmpinfo.bmiHeader.biBitCount = 1; hbmMask = CreateDIBSection( hdc, &bmpinfo, DIB_RGB_COLORS, &bits, NULL, 0 ); - memset( bits, 0x55, 32 * 32 * bmpinfo.bmiHeader.biBitCount / 8 ); + ok(hbmMask != NULL, "Expected a handle to the DIB\n"); + if (bits) + memset( bits, 0x55, 32 * 32 * bmpinfo.bmiHeader.biBitCount / 8 ); info.fIcon = TRUE; info.xHotspot = 8; @@ -612,7 +616,9 @@ static void test_CreateIcon(void) bmpinfo.bmiHeader.biBitCount = 16; hbmColor = CreateDIBSection( hdc, &bmpinfo, DIB_RGB_COLORS, &bits, NULL, 0 ); - memset( bits, 0x55, 32 * 32 * bmpinfo.bmiHeader.biBitCount / 8 ); + ok(hbmColor != NULL, "Expected a handle to the DIB\n"); + if (bits) + memset( bits, 0x55, 32 * 32 * bmpinfo.bmiHeader.biBitCount / 8 ); info.fIcon = TRUE; info.xHotspot = 8; @@ -628,7 +634,9 @@ static void test_CreateIcon(void) bmpinfo.bmiHeader.biBitCount = 32; hbmColor = CreateDIBSection( hdc, &bmpinfo, DIB_RGB_COLORS, &bits, NULL, 0 ); - memset( bits, 0x55, 32 * 32 * bmpinfo.bmiHeader.biBitCount / 8 ); + ok(hbmColor != NULL, "Expected a handle to the DIB\n"); + if (bits) + memset( bits, 0x55, 32 * 32 * bmpinfo.bmiHeader.biBitCount / 8 ); info.fIcon = TRUE; info.xHotspot = 8; diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c index f68f73aecce..f87d1019b7a 100644 --- a/dlls/user32/tests/msg.c +++ b/dlls/user32/tests/msg.c @@ -316,12 +316,12 @@ static const struct message WmSwitchNotMaximizedChild[] = { /* Activate 2nd MDI child */ { WM_WINDOWPOSCHANGING, sent|wparam|defwinproc, SWP_NOSIZE|SWP_NOMOVE|SWP_NOACTIVATE}, /* in the 2nd MDI child */ { WM_NCACTIVATE, sent|wparam|defwinproc, 1 }, /* in the 2nd MDI child */ - { WM_SETVISIBLE, hook }, /* in the 1st MDI child */ + { HCBT_SETFOCUS, hook }, /* in the 1st MDI child */ { WM_KILLFOCUS, sent|defwinproc }, /* in the 1st MDI child */ { WM_IME_SETCONTEXT, sent|defwinproc|optional }, /* in the 1st MDI child */ { WM_IME_SETCONTEXT, sent|optional }, /* in the MDI client */ { WM_SETFOCUS, sent, 0 }, /* in the MDI client */ - { WM_SETVISIBLE, hook }, + { HCBT_SETFOCUS, hook }, { WM_KILLFOCUS, sent }, /* in the MDI client */ { WM_IME_SETCONTEXT, sent|optional }, /* in the MDI client */ { WM_IME_SETCONTEXT, sent|defwinproc|optional }, /* in the 1st MDI child */ diff --git a/dlls/user32/tests/sysparams.c b/dlls/user32/tests/sysparams.c index 8e95ffd7da3..af6c7315e34 100644 --- a/dlls/user32/tests/sysparams.c +++ b/dlls/user32/tests/sysparams.c @@ -1917,9 +1917,12 @@ static void test_SPI_SETLOWPOWERACTIVE( void ) /* 85 */ SPI_SETLOWPOWERACTIVE_VALNAME, vals[i] ? "1" : "0" ); + /* SPI_SETLOWPOWERACTIVE is not persistent in win2k3 and above */ rc=SystemParametersInfoA( SPI_GETLOWPOWERACTIVE, 0, &v, 0 ); ok(rc!=0,"%d: rc=%d err=%d\n",i,rc,GetLastError()); - eq( v, vals[i], "SPI_GETLOWPOWERACTIVE", "%d" ); + ok(v == vals[i] || + v == 0, /* win2k3 */ + "SPI_GETLOWPOWERACTIVE: got %d instead of 0 or %d\n", v, vals[i]); } rc=SystemParametersInfoA( SPI_SETLOWPOWERACTIVE, old_b, 0, SPIF_UPDATEINIFILE ); @@ -1951,9 +1954,12 @@ static void test_SPI_SETPOWEROFFACTIVE( void ) /* 86 */ SPI_SETPOWEROFFACTIVE_VALNAME, vals[i] ? "1" : "0" ); + /* SPI_SETPOWEROFFACTIVE is not persistent in win2k3 and above */ rc=SystemParametersInfoA( SPI_GETPOWEROFFACTIVE, 0, &v, 0 ); ok(rc!=0,"%d: rc=%d err=%d\n",i,rc,GetLastError()); - eq( v, vals[i], "SPI_GETPOWEROFFACTIVE", "%d" ); + ok(v == vals[i] || + v == 0, /* win2k3 */ + "SPI_GETPOWEROFFACTIVE: got %d instead of 0 or %d\n", v, vals[i]); } rc=SystemParametersInfoA( SPI_SETPOWEROFFACTIVE, old_b, 0, SPIF_UPDATEINIFILE ); diff --git a/dlls/user32/tests/win.c b/dlls/user32/tests/win.c index 21119d5dac1..60b7d8827a5 100644 --- a/dlls/user32/tests/win.c +++ b/dlls/user32/tests/win.c @@ -46,6 +46,7 @@ void dump_region(HRGN hrgn); static HWND (WINAPI *pGetAncestor)(HWND,UINT); static BOOL (WINAPI *pGetWindowInfo)(HWND,WINDOWINFO*); +static UINT (WINAPI *pGetWindowModuleFileNameA)(HWND,LPSTR,UINT); static BOOL test_lbuttondown_flag; static HWND hwndMessage; @@ -4229,6 +4230,31 @@ static void test_CreateWindow(void) ok( rc.bottom == 0, "invalid rect bottom %u\n", rc.bottom ); DestroyWindow(hwnd); + /* we need a parent at 0,0 so that child coordinates match */ + DestroyWindow(parent); + parent = CreateWindowEx(0, "MinMax_WndClass", NULL, WS_POPUP, 0, 0, 100, 100, 0, 0, 0, NULL); + ok(parent != 0, "CreateWindowEx error %d\n", GetLastError()); + + expected_cx = 100; + expected_cy = 0x7fffffff; + SetRect( &expected_rect, 10, 10, 110, 0x7fffffff ); + hwnd = CreateWindowExA(0, "Sizes_WndClass", NULL, WS_CHILD, 10, 10, 100, 0x7fffffff, parent, 0, 0, NULL); + ok( hwnd != 0, "creation failed err %u\n", GetLastError()); + GetClientRect( hwnd, &rc ); + ok( rc.right == 100, "invalid rect right %u\n", rc.right ); + ok( rc.bottom == 0x7fffffff - 10, "invalid rect bottom %u\n", rc.bottom ); + DestroyWindow(hwnd); + + expected_cx = 0x7fffffff; + expected_cy = 0x7fffffff; + SetRect( &expected_rect, 20, 10, 0x7fffffff, 0x7fffffff ); + hwnd = CreateWindowExA(0, "Sizes_WndClass", NULL, WS_CHILD, 20, 10, 0x7fffffff, 0x7fffffff, parent, 0, 0, NULL); + ok( hwnd != 0, "creation failed err %u\n", GetLastError()); + GetClientRect( hwnd, &rc ); + ok( rc.right == 0x7fffffff - 20, "invalid rect right %u\n", rc.right ); + ok( rc.bottom == 0x7fffffff - 10, "invalid rect bottom %u\n", rc.bottom ); + DestroyWindow(hwnd); + /* top level window */ expected_cx = expected_cy = 200000; SetRect( &expected_rect, 0, 0, GetSystemMetrics(SM_CXMAXTRACK), GetSystemMetrics(SM_CYMAXTRACK) ); @@ -4631,10 +4657,96 @@ static void test_Expose(void) DestroyWindow(mw); } +static void test_GetWindowModuleFileName(void) +{ + HWND hwnd; + HINSTANCE hinst; + UINT ret1, ret2; + char buf1[MAX_PATH], buf2[MAX_PATH]; + + if (!pGetWindowModuleFileNameA) + { + skip("GetWindowModuleFileNameA is not available\n"); + return; + } + + hwnd = CreateWindowExA(0, "static", NULL, WS_POPUP, 0,0,0,0, 0, 0, 0, NULL); + assert(hwnd); + + hinst = (HINSTANCE)GetWindowLongPtr(hwnd, GWLP_HINSTANCE); + ok(hinst == 0, "expected 0, got %p\n", hinst); + + buf1[0] = 0; + SetLastError(0xdeadbeef); + ret1 = GetModuleFileName(hinst, buf1, sizeof(buf1)); + ok(ret1, "GetModuleFileName error %u\n", GetLastError()); + + buf2[0] = 0; + SetLastError(0xdeadbeef); + ret2 = pGetWindowModuleFileNameA(hwnd, buf2, sizeof(buf2)); + ok(ret2, "GetWindowModuleFileNameA error %u\n", GetLastError()); + + ok(ret1 == ret2, "%u != %u\n", ret1, ret2); + ok(!strcmp(buf1, buf2), "%s != %s\n", buf1, buf2); + + hinst = GetModuleHandle(0); + + /* MSDN mentions ERROR_INSUFFICIENT_BUFFER, but XP doesn't do it */ + SetLastError(0xdeadbeef); + ret2 = GetModuleFileName(hinst, buf2, ret1 - 2); + ok(ret2 == ret1 - 2, "expected %u, got %u\n", ret1 - 2, ret2); + ok(GetLastError() == 0xdeadbeef || + GetLastError() == ERROR_INSUFFICIENT_BUFFER, /* win2k3 */ + "expected 0xdeadbeef or ERROR_INSUFFICIENT_BUFFER, got %u\n", GetLastError()); + + SetLastError(0xdeadbeef); + ret2 = GetModuleFileName(hinst, buf2, 0); + ok(!ret2, "GetModuleFileName should return 0\n"); + ok(GetLastError() == 0xdeadbeef || + GetLastError() == ERROR_INSUFFICIENT_BUFFER, /* win2k3 */ + "expected 0xdeadbeef or ERROR_INSUFFICIENT_BUFFER, got %u\n", GetLastError()); + + SetLastError(0xdeadbeef); + ret2 = pGetWindowModuleFileNameA(hwnd, buf2, ret1 - 2); + ok(ret2 == ret1 - 2, "expected %u, got %u\n", ret1 - 2, ret2); + ok(GetLastError() == 0xdeadbeef || + GetLastError() == ERROR_INSUFFICIENT_BUFFER, /* win2k3 */ + "expected 0xdeadbeef or ERROR_INSUFFICIENT_BUFFER, got %u\n", GetLastError()); + + SetLastError(0xdeadbeef); + ret2 = pGetWindowModuleFileNameA(hwnd, buf2, 0); + ok(!ret2, "expected 0, got %u\n", ret2); + ok(GetLastError() == 0xdeadbeef || + GetLastError() == ERROR_INSUFFICIENT_BUFFER, /* win2k3 */ + "expected 0xdeadbeef or ERROR_INSUFFICIENT_BUFFER, got %u\n", GetLastError()); + + DestroyWindow(hwnd); + + buf2[0] = 0; + hwnd = (HWND)0xdeadbeef; + SetLastError(0xdeadbeef); + ret1 = pGetWindowModuleFileNameA(hwnd, buf1, sizeof(buf1)); + ok(!ret1, "expected 0, got %u\n", ret1); + ok(GetLastError() == ERROR_INVALID_WINDOW_HANDLE, "expected ERROR_INVALID_WINDOW_HANDLE, got %u\n", GetLastError()); + + hwnd = GetDesktopWindow(); + ok(IsWindow(hwnd), "got invalid desktop window %p\n", hwnd); + SetLastError(0xdeadbeef); + ret1 = pGetWindowModuleFileNameA(hwnd, buf1, sizeof(buf1)); + ok(!ret1, "expected 0, got %u\n", ret1); + + hwnd = FindWindow("Shell_TrayWnd", NULL); + ok(IsWindow(hwnd), "got invalid tray window %p\n", hwnd); + SetLastError(0xdeadbeef); + ret1 = pGetWindowModuleFileNameA(hwnd, buf1, sizeof(buf1)); + ok(!ret1, "expected 0, got %u\n", ret1); +} + START_TEST(win) { pGetAncestor = (void *)GetProcAddress( GetModuleHandleA("user32.dll"), "GetAncestor" ); pGetWindowInfo = (void *)GetProcAddress( GetModuleHandleA("user32.dll"), "GetWindowInfo" ); + pGetWindowModuleFileNameA = (void *)GetProcAddress( GetModuleHandleA("user32.dll"), "GetWindowModuleFileNameA" ); hwndMain = CreateWindowExA(0, "static", NULL, 0, 0, 0, 0, 0, HWND_MESSAGE, 0, 0, NULL); if (hwndMain) @@ -4675,7 +4787,7 @@ START_TEST(win) /* Add the tests below this line */ test_params(); - + test_GetWindowModuleFileName(); test_capture_1(); test_capture_2(); test_capture_3(hwndMain, hwndMain2); diff --git a/dlls/user32/user32.spec b/dlls/user32/user32.spec index 73af8aa0bbe..1c3b53832c6 100644 --- a/dlls/user32/user32.spec +++ b/dlls/user32/user32.spec @@ -378,7 +378,7 @@ @ stdcall GetWindowLongPtrA(long long) @ stdcall GetWindowLongPtrW(long long) @ stdcall GetWindowLongW(long long) -# @ stub GetWindowModuleFileName +@ stdcall GetWindowModuleFileName(long ptr long) GetWindowModuleFileNameA @ stdcall GetWindowModuleFileNameA(long ptr long) @ stdcall GetWindowModuleFileNameW(long ptr long) @ stdcall GetWindowPlacement(long ptr) diff --git a/dlls/user32/win.c b/dlls/user32/win.c index 8214fd50e36..1824a52b346 100644 --- a/dlls/user32/win.c +++ b/dlls/user32/win.c @@ -1119,6 +1119,9 @@ static HWND WIN_CreateWindowEx( CREATESTRUCTA *cs, LPCWSTR className, UINT flags if (cx < 0) cx = 0; if (cy < 0) cy = 0; SetRect( &rect, cs->x, cs->y, cs->x + cx, cs->y + cy ); + /* check for wraparound */ + if (cs->x + cx < cs->x) rect.right = 0x7fffffff; + if (cs->y + cy < cs->y) rect.bottom = 0x7fffffff; if (!set_window_pos( hwnd, 0, SWP_NOZORDER | SWP_NOACTIVATE, &rect, &rect, NULL )) goto failed; /* send WM_NCCREATE */ @@ -3162,21 +3165,45 @@ BOOL WINAPI DragDetect( HWND hWnd, POINT pt ) /****************************************************************************** * GetWindowModuleFileNameA (USER32.@) */ -UINT WINAPI GetWindowModuleFileNameA( HWND hwnd, LPSTR lpszFileName, UINT cchFileNameMax) +UINT WINAPI GetWindowModuleFileNameA( HWND hwnd, LPSTR module, UINT size ) { - FIXME("GetWindowModuleFileNameA(hwnd %p, lpszFileName %p, cchFileNameMax %u) stub!\n", - hwnd, lpszFileName, cchFileNameMax); - return 0; + WND *win; + HINSTANCE hinst; + + TRACE( "%p, %p, %u\n", hwnd, module, size ); + + win = WIN_GetPtr( hwnd ); + if (!win || win == WND_OTHER_PROCESS || win == WND_DESKTOP) + { + SetLastError( ERROR_INVALID_WINDOW_HANDLE ); + return 0; + } + hinst = win->hInstance; + WIN_ReleasePtr( win ); + + return GetModuleFileNameA( hinst, module, size ); } /****************************************************************************** * GetWindowModuleFileNameW (USER32.@) */ -UINT WINAPI GetWindowModuleFileNameW( HWND hwnd, LPWSTR lpszFileName, UINT cchFileNameMax) +UINT WINAPI GetWindowModuleFileNameW( HWND hwnd, LPWSTR module, UINT size ) { - FIXME("GetWindowModuleFileNameW(hwnd %p, lpszFileName %p, cchFileNameMax %u) stub!\n", - hwnd, lpszFileName, cchFileNameMax); - return 0; + WND *win; + HINSTANCE hinst; + + TRACE( "%p, %p, %u\n", hwnd, module, size ); + + win = WIN_GetPtr( hwnd ); + if (!win || win == WND_OTHER_PROCESS || win == WND_DESKTOP) + { + SetLastError( ERROR_INVALID_WINDOW_HANDLE ); + return 0; + } + hinst = win->hInstance; + WIN_ReleasePtr( win ); + + return GetModuleFileNameW( hinst, module, size ); } /****************************************************************************** diff --git a/dlls/usp10/tests/usp10.c b/dlls/usp10/tests/usp10.c index 252f7d98fbf..3902e2ba620 100644 --- a/dlls/usp10/tests/usp10.c +++ b/dlls/usp10/tests/usp10.c @@ -635,54 +635,74 @@ static void test_ScriptXtoX(void) cGlyphs = 10; hr = ScriptXtoCP(iX, cChars, cGlyphs, pwLogClust, psva, piAdvance, &psa, &piCP, &piTrailing); ok(hr == S_OK, "ScriptXtoCP should return S_OK not %08x\n", hr); - ok(piCP == -1, "Negative iX should return piCP=-1 not %d\n", piCP); - ok(piTrailing == TRUE, "Negative iX should return piTrailing=TRUE not %d\n", piTrailing); + if (piTrailing) + ok(piCP == -1, "Negative iX should return piCP=-1 not %d\n", piCP); + else /* win2k3 */ + ok(piCP == 10, "Negative iX should return piCP=10 not %d\n", piCP); + iX = 1954; cChars = 10; cGlyphs = 10; hr = ScriptXtoCP(iX, cChars, cGlyphs, pwLogClust, psva, piAdvance, &psa, &piCP, &piTrailing); ok(hr == S_OK, "ScriptXtoCP should return S_OK not %08x\n", hr); - ok(piCP == 10, "Excessive iX should return piCP=10 not %d\n", piCP); - ok(piTrailing == FALSE, "Excessive iX should return piTrailing=FALSE not %d\n", piTrailing); + if (piTrailing) /* win2k3 */ + ok(piCP == -1, "Negative iX should return piCP=-1 not %d\n", piCP); + else + ok(piCP == 10, "Negative iX should return piCP=10 not %d\n", piCP); + iX = 779; cChars = 10; cGlyphs = 10; hr = ScriptXtoCP(iX, cChars, cGlyphs, pwLogClust, psva, piAdvance, &psa, &piCP, &piTrailing); ok(hr == S_OK, "ScriptXtoCP should return S_OK not %08x\n", hr); - ok(piCP == 3, "iX=%d should return piCP=3 not %d\n", iX, piCP); + ok(piCP == 3 || + piCP == -1, /* win2k3 */ + "iX=%d should return piCP=3 or piCP=-1 not %d\n", iX, piCP); ok(piTrailing == 1, "iX=%d should return piTrailing=1 not %d\n", iX, piTrailing); + iX = 780; cChars = 10; cGlyphs = 10; hr = ScriptXtoCP(iX, cChars, cGlyphs, pwLogClust, psva, piAdvance, &psa, &piCP, &piTrailing); ok(hr == S_OK, "ScriptXtoCP should return S_OK not %08x\n", hr); - ok(piCP == 3, "iX=%d should return piCP=3 not %d\n", iX, piCP); + ok(piCP == 3 || + piCP == -1, /* win2k3 */ + "iX=%d should return piCP=3 or piCP=-1 not %d\n", iX, piCP); ok(piTrailing == 1, "iX=%d should return piTrailing=1 not %d\n", iX, piTrailing); + iX = 868; cChars = 10; cGlyphs = 10; hr = ScriptXtoCP(iX, cChars, cGlyphs, pwLogClust, psva, piAdvance, &psa, &piCP, &piTrailing); ok(hr == S_OK, "ScriptXtoCP should return S_OK not %08x\n", hr); - ok(piCP == 4, "iX=%d should return piCP=4 not %d\n", iX, piCP); + ok(piCP == 4 || + piCP == -1, /* win2k3 */ + "iX=%d should return piCP=4 or piCP=-1 not %d\n", iX, piCP); iX = 0; cChars = 10; cGlyphs = 10; hr = ScriptXtoCP(iX, cChars, cGlyphs, pwLogClust, psva, piAdvance, &psa, &piCP, &piTrailing); ok(hr == S_OK, "ScriptXtoCP should return S_OK not %08x\n", hr); - ok(piCP == 0, "iX=%d should return piCP=0 not %d\n", iX, piCP); + ok(piCP == 0 || + piCP == 10, /* win2k3 */ + "iX=%d should return piCP=0 piCP=10 not %d\n", iX, piCP); + iX = 195; cChars = 10; cGlyphs = 10; hr = ScriptXtoCP(iX, cChars, cGlyphs, pwLogClust, psva, piAdvance, &psa, &piCP, &piTrailing); ok(hr == S_OK, "ScriptXtoCP should return S_OK not %08x\n", hr); ok(piCP == 0, "iX=%d should return piCP=0 not %d\n", iX, piCP); + iX = 196; cChars = 10; cGlyphs = 10; hr = ScriptXtoCP(iX, cChars, cGlyphs, pwLogClust, psva, piAdvance, &psa, &piCP, &piTrailing); ok(hr == S_OK, "ScriptXtoCP should return S_OK not %08x\n", hr); - ok(piCP == 1, "iX=%d should return piCP=1 not %d\n", iX, piCP); + ok(piCP == 1 || + piCP == 0, /* win2k3 */ + "iX=%d should return piCP=1 or piCP=0 not %d\n", iX, piCP); iCP=5; fTrailing = FALSE; @@ -690,36 +710,49 @@ static void test_ScriptXtoX(void) cGlyphs = 10; hr = ScriptCPtoX(iCP, fTrailing, cChars, cGlyphs, pwLogClust, psva, piAdvance, &psa, &piX); ok(hr == S_OK, "ScriptCPtoX should return S_OK not %08x\n", hr); - ok(piX == 976, "iCP=%d should return piX=976 not %d\n", iCP, piX); + ok(piX == 976 || + piX == 100, /* win2k3 */ + "iCP=%d should return piX=976 or piX=100 not %d\n", iCP, piX); + iCP=5; fTrailing = TRUE; cChars = 10; cGlyphs = 10; hr = ScriptCPtoX(iCP, fTrailing, cChars, cGlyphs, pwLogClust, psva, piAdvance, &psa, &piX); ok(hr == S_OK, "ScriptCPtoX should return S_OK not %08x\n", hr); - ok(piX == 1171, "iCP=%d should return piX=1171 not %d\n", iCP, piX); + ok(piX == 1171 || + piX == 80, /* win2k3 */ + "iCP=%d should return piX=1171 or piX=80 not %d\n", iCP, piX); + iCP=6; fTrailing = FALSE; cChars = 10; cGlyphs = 10; hr = ScriptCPtoX(iCP, fTrailing, cChars, cGlyphs, pwLogClust, psva, piAdvance, &psa, &piX); ok(hr == S_OK, "ScriptCPtoX should return S_OK not %08x\n", hr); - ok(piX == 1171, "iCP=%d should return piX=1171 not %d\n", iCP, piX); + ok(piX == 1171 || + piX == 80, /* win2k3 */ + "iCP=%d should return piX=1171 or piX=80 not %d\n", iCP, piX); + iCP=11; fTrailing = FALSE; cChars = 10; cGlyphs = 10; hr = ScriptCPtoX(iCP, fTrailing, cChars, cGlyphs, pwLogClust, psva, piAdvance, &psa, &piX); ok(hr == S_OK, "ScriptCPtoX should return S_OK not %08x\n", hr); - ok(piX == 1953, "iCP=%d should return piX=1953 not %d\n", iCP, piX); + ok(piX == 1953 || + piX == 0, /* win2k3 */ + "iCP=%d should return piX=1953 or piX=0 not %d\n", iCP, piX); + iCP=11; fTrailing = TRUE; cChars = 10; cGlyphs = 10; hr = ScriptCPtoX(iCP, fTrailing, cChars, cGlyphs, pwLogClust, psva, piAdvance, &psa, &piX); ok(hr == S_OK, "ScriptCPtoX should return S_OK not %08x\n", hr); - ok(piX == 1953, "iCP=%d should return piX=1953 not %d\n", iCP, piX); - + ok(piX == 1953 || + piX == 0, /* win2k3 */ + "iCP=%d should return piX=1953 or piX=0 not %d\n", iCP, piX); } static void test_ScriptString(HDC hdc) @@ -838,10 +871,14 @@ static void test_ScriptStringXtoCP_CPtoX(HDC hdc) hr = ScriptStringAnalyse( hdc, String, String_len, Glyphs, Charset, Flags, ReqWidth, &Control, &State, NULL, &Tabdef, &InClass, &ssa); - ok(hr == S_OK, "ScriptStringAnalyse should return S_OK not %08x\n", hr); - ok(ssa != NULL, "ScriptStringAnalyse ssa should not be NULL\n"); - if (hr == 0) + ok(hr == S_OK || + hr == E_INVALIDARG, /* NT */ + "ScriptStringAnalyse should return S_OK or E_INVALIDARG not %08x\n", hr); + + if (hr == S_OK) { + ok(ssa != NULL, "ScriptStringAnalyse ssa should not be NULL\n"); + /* * Loop to generate character positions to provide starting positions for the * ScriptStringCPtoX and ScriptStringXtoCP functions diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c index 0038bd08809..bcd7b2452e8 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c @@ -953,6 +953,7 @@ static const char* debug_d3dtop(WINED3DTEXTUREOP d3dtop) { D3DTOP_TO_STR(WINED3DTOP_MODULATE4X); D3DTOP_TO_STR(WINED3DTOP_ADD); D3DTOP_TO_STR(WINED3DTOP_ADDSIGNED); + D3DTOP_TO_STR(WINED3DTOP_ADDSIGNED2X); D3DTOP_TO_STR(WINED3DTOP_SUBTRACT); D3DTOP_TO_STR(WINED3DTOP_ADDSMOOTH); D3DTOP_TO_STR(WINED3DTOP_BLENDDIFFUSEALPHA); @@ -1445,15 +1446,15 @@ void set_tex_op_nvrc(IWineD3DDevice *iface, BOOL is_alpha, int stage, WINED3DTEX break; case WINED3DTOP_MULTIPLYADD: - /* Input, arg1*1+arg2*arg3 */ + /* Input, arg3*1+arg1*arg2 */ GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_A_NV, - tex_op_args.input[0], tex_op_args.mapping[0], tex_op_args.component_usage[0])); + tex_op_args.input[2], tex_op_args.mapping[2], tex_op_args.component_usage[2])); GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_B_NV, GL_ZERO, GL_UNSIGNED_INVERT_NV, portion)); GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_C_NV, - tex_op_args.input[1], tex_op_args.mapping[1], tex_op_args.component_usage[1])); + tex_op_args.input[0], tex_op_args.mapping[0], tex_op_args.component_usage[0])); GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_D_NV, - tex_op_args.input[2], tex_op_args.mapping[2], tex_op_args.component_usage[2])); + tex_op_args.input[1], tex_op_args.mapping[1], tex_op_args.component_usage[1])); /* Output */ GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV, @@ -1461,15 +1462,15 @@ void set_tex_op_nvrc(IWineD3DDevice *iface, BOOL is_alpha, int stage, WINED3DTEX break; case WINED3DTOP_LERP: - /* Input, arg1*arg2+(1-arg1)*arg3 */ + /* Input, arg3*arg1+(1-arg3)*arg2 */ GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_A_NV, - tex_op_args.input[0], tex_op_args.mapping[0], tex_op_args.component_usage[0])); + tex_op_args.input[2], tex_op_args.mapping[2], tex_op_args.component_usage[2])); GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_B_NV, - tex_op_args.input[1], tex_op_args.mapping[1], tex_op_args.component_usage[1])); + tex_op_args.input[0], tex_op_args.mapping[0], tex_op_args.component_usage[0])); GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_C_NV, - tex_op_args.input[0], invert_mapping(tex_op_args.mapping[0]), tex_op_args.component_usage[0])); + tex_op_args.input[2], invert_mapping(tex_op_args.mapping[2]), tex_op_args.component_usage[2])); GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_D_NV, - tex_op_args.input[2], tex_op_args.mapping[2], tex_op_args.component_usage[2])); + tex_op_args.input[1], tex_op_args.mapping[1], tex_op_args.component_usage[1])); /* Output */ GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV, diff --git a/dlls/winex11.drv/ime.c b/dlls/winex11.drv/ime.c index f478a865106..ab94864f41d 100644 --- a/dlls/winex11.drv/ime.c +++ b/dlls/winex11.drv/ime.c @@ -535,7 +535,7 @@ static BOOL IME_RemoveFromSelected(HIMC hIMC) if (hSelectedFrom[i] == hIMC) { if (i < hSelectedCount - 1) - memcpy(&hSelectedFrom[i], &hSelectedFrom[i+1], (hSelectedCount - i - 1)*sizeof(HIMC)); + memmove(&hSelectedFrom[i], &hSelectedFrom[i+1], (hSelectedCount - i - 1)*sizeof(HIMC)); hSelectedCount --; return TRUE; } diff --git a/dlls/winex11.drv/init.c b/dlls/winex11.drv/init.c index 5e549b9d9cb..cc95057ac54 100644 --- a/dlls/winex11.drv/init.c +++ b/dlls/winex11.drv/init.c @@ -342,6 +342,7 @@ INT X11DRV_ExtEscape( X11DRV_PDEVICE *physDev, INT escape, INT in_count, LPCVOID physDev->current_pf = pixelformat_from_fbconfig_id( data->fbconfig_id ); physDev->gl_drawable = data->gl_drawable; physDev->pixmap = data->pixmap; + physDev->gl_copy = data->gl_copy; wine_tsx11_lock(); XSetSubwindowMode( gdi_display, physDev->gc, data->mode ); wine_tsx11_unlock(); diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c index 836a56a8203..393c11a2f0f 100644 --- a/dlls/winex11.drv/opengl.c +++ b/dlls/winex11.drv/opengl.c @@ -144,10 +144,6 @@ static int swap_interval = 1; static const WineGLExtension *WineGLExtensionList[MAX_EXTENSIONS]; static int WineGLExtensionListSize; -static WineGLPixelFormat *WineGLPixelFormatList; -static int WineGLPixelFormatListSize = 0; -static int WineGLPixelFormatOnScreenSize = 0; - static void X11DRV_WineGL_LoadExtensions(void); static BOOL glxRequireVersion(int requiredVersion); static BOOL glxRequireExtension(const char *requiredExtension); @@ -841,20 +837,27 @@ static int get_render_type_from_fbconfig(Display *display, GLXFBConfig fbconfig) return render_type; } -static BOOL init_formats(Display *display, int screen, Visual *visual) +static WineGLPixelFormat *get_formats(Display *display, int *size_ret, int *onscreen_size_ret) { + static WineGLPixelFormat *list; + static int size, onscreen_size; + int fmt_id, nCfgs, i, run; GLXFBConfig* cfgs; XVisualInfo *visinfo; + wine_tsx11_lock(); + if (list) goto done; + cfgs = pglXGetFBConfigs(display, DefaultScreen(display), &nCfgs); if (NULL == cfgs || 0 == nCfgs) { - ERR("glXChooseFBConfig returns NULL\n"); if(cfgs != NULL) XFree(cfgs); - return FALSE; + wine_tsx11_unlock(); + ERR("glXChooseFBConfig returns NULL\n"); + return NULL; } - WineGLPixelFormatList = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, nCfgs*sizeof(WineGLPixelFormat)); + list = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, nCfgs*sizeof(WineGLPixelFormat)); /* Fill the pixel format list. Put onscreen formats at the top and offscreen ones at the bottom. * Do this as GLX doesn't guarantee that the list is sorted */ @@ -878,32 +881,34 @@ static BOOL init_formats(Display *display, int screen, Visual *visual) if(visinfo->depth != screen_depth) continue; - TRACE("Found onscreen format FBCONFIG_ID 0x%x corresponding to iPixelFormat %d at GLX index %d\n", fmt_id, WineGLPixelFormatListSize+1, i); - WineGLPixelFormatList[WineGLPixelFormatListSize].iPixelFormat = WineGLPixelFormatListSize+1; /* The index starts at 1 */ - WineGLPixelFormatList[WineGLPixelFormatListSize].fbconfig = cfgs[i]; - WineGLPixelFormatList[WineGLPixelFormatListSize].fmt_id = fmt_id; - WineGLPixelFormatList[WineGLPixelFormatListSize].render_type = get_render_type_from_fbconfig(display, cfgs[i]); - - WineGLPixelFormatList[WineGLPixelFormatListSize].offscreenOnly = FALSE; - WineGLPixelFormatListSize++; - WineGLPixelFormatOnScreenSize++; + TRACE("Found onscreen format FBCONFIG_ID 0x%x corresponding to iPixelFormat %d at GLX index %d\n", fmt_id, size+1, i); + list[size].iPixelFormat = size+1; /* The index starts at 1 */ + list[size].fbconfig = cfgs[i]; + list[size].fmt_id = fmt_id; + list[size].render_type = get_render_type_from_fbconfig(display, cfgs[i]); + list[size].offscreenOnly = FALSE; + size++; + onscreen_size++; XFree(visinfo); } else if(run && !visinfo) { - TRACE("Found offscreen format FBCONFIG_ID 0x%x corresponding to iPixelFormat %d at GLX index %d\n", fmt_id, WineGLPixelFormatListSize+1, i); - WineGLPixelFormatList[WineGLPixelFormatListSize].iPixelFormat = WineGLPixelFormatListSize+1; /* The index starts at 1 */ - WineGLPixelFormatList[WineGLPixelFormatListSize].fbconfig = cfgs[i]; - WineGLPixelFormatList[WineGLPixelFormatListSize].fmt_id = fmt_id; - WineGLPixelFormatList[WineGLPixelFormatListSize].render_type = get_render_type_from_fbconfig(display, cfgs[i]); - - WineGLPixelFormatList[WineGLPixelFormatListSize].offscreenOnly = TRUE; - WineGLPixelFormatListSize++; + TRACE("Found offscreen format FBCONFIG_ID 0x%x corresponding to iPixelFormat %d at GLX index %d\n", fmt_id, size+1, i); + list[size].iPixelFormat = size+1; /* The index starts at 1 */ + list[size].fbconfig = cfgs[i]; + list[size].fmt_id = fmt_id; + list[size].render_type = get_render_type_from_fbconfig(display, cfgs[i]); + list[size].offscreenOnly = TRUE; + size++; } } } if(cfgs != NULL) XFree(cfgs); - return TRUE; +done: + if (size_ret) *size_ret = size; + if (onscreen_size_ret) *onscreen_size_ret = onscreen_size; + wine_tsx11_unlock(); + return list; } /* GLX can advertise dozens of different pixelformats including offscreen and onscreen ones. @@ -914,26 +919,24 @@ static BOOL init_formats(Display *display, int screen, Visual *visual) */ static WineGLPixelFormat* ConvertPixelFormatWGLtoGLX(Display *display, int iPixelFormat, BOOL AllowOffscreen, int *fmt_count) { - WineGLPixelFormat *res = NULL; + WineGLPixelFormat *list, *res = NULL; + int size, onscreen_size; - /* Init the list of pixel formats when we need it */ - if(!WineGLPixelFormatListSize) - init_formats(display, DefaultScreen(display), visual); + if (!(list = get_formats(display, &size, &onscreen_size ))) return NULL; /* Check if the pixelformat is valid. Note that it is legal to pass an invalid * iPixelFormat in case of probing the number of pixelformats. */ - if((iPixelFormat > 0) && (iPixelFormat <= WineGLPixelFormatListSize) && - ((WineGLPixelFormatList[iPixelFormat-1].offscreenOnly == FALSE) || - AllowOffscreen)) { - res = &WineGLPixelFormatList[iPixelFormat-1]; + if((iPixelFormat > 0) && (iPixelFormat <= size) && + (!list[iPixelFormat-1].offscreenOnly || AllowOffscreen)) { + res = &list[iPixelFormat-1]; TRACE("Returning FBConfig=%p for iPixelFormat=%d\n", res->fbconfig, iPixelFormat); } if(AllowOffscreen) - *fmt_count = WineGLPixelFormatListSize; + *fmt_count = size; else - *fmt_count = WineGLPixelFormatOnScreenSize; + *fmt_count = onscreen_size; TRACE("Number of returned pixelformats=%d\n", *fmt_count); @@ -943,16 +946,15 @@ static WineGLPixelFormat* ConvertPixelFormatWGLtoGLX(Display *display, int iPixe /* Search our internal pixelformat list for the WGL format corresponding to the given fbconfig */ static WineGLPixelFormat* ConvertPixelFormatGLXtoWGL(Display *display, int fmt_id) { - int i; + WineGLPixelFormat *list; + int i, size; - /* Init the list of pixel formats when we need it */ - if(!WineGLPixelFormatListSize) - init_formats(display, DefaultScreen(display), visual); + if (!(list = get_formats(display, &size, NULL ))) return NULL; - for(i=0; ifbconfig, GLX_RENDER_TYPE, &value); @@ -1264,7 +1266,7 @@ int X11DRV_ChoosePixelFormat(X11DRV_PDEVICE *physDev, } else { ret = bestFormat+1; /* the return value should be a 1-based index */ - TRACE("Successfully found a matching mode, returning index: %d %x\n", ret, WineGLPixelFormatList[bestFormat].fmt_id); + TRACE("Successfully found a matching mode, returning index: %d %x\n", ret, list[bestFormat].fmt_id); } wine_tsx11_unlock(); @@ -1469,7 +1471,9 @@ static BOOL internal_SetPixelFormat(X11DRV_PDEVICE *physDev, return FALSE; } + wine_tsx11_lock(); pglXGetFBConfigAttrib(gdi_display, fmt->fbconfig, GLX_DRAWABLE_TYPE, &value); + wine_tsx11_unlock(); hwnd = WindowFromDC(physDev->hdc); if(hwnd) { @@ -1504,6 +1508,7 @@ static BOOL internal_SetPixelFormat(X11DRV_PDEVICE *physDev, if (TRACE_ON(wgl)) { int gl_test = 0; + wine_tsx11_lock(); gl_test = pglXGetFBConfigAttrib(gdi_display, fmt->fbconfig, GLX_FBCONFIG_ID, &value); if (gl_test) { ERR("Failed to retrieve FBCONFIG_ID from GLXFBConfig, expect problems.\n"); @@ -1515,6 +1520,7 @@ static BOOL internal_SetPixelFormat(X11DRV_PDEVICE *physDev, pglXGetFBConfigAttrib(gdi_display, fmt->fbconfig, GLX_DRAWABLE_TYPE, &value); TRACE(" - DRAWABLE_TYPE 0x%x\n", value); } + wine_tsx11_unlock(); } return TRUE; } @@ -2106,7 +2112,7 @@ void flush_gl_drawable(X11DRV_PDEVICE *physDev) { int w, h; - if(!physDev->gl_drawable) + if (!physDev->gl_copy) return; w = physDev->dc_rect.right - physDev->dc_rect.left; @@ -2369,7 +2375,9 @@ static HPBUFFERARB WINAPI X11DRV_wglCreatePbufferARB(HDC hdc, int iPixelFormat, } PUSH1(attribs, None); + wine_tsx11_lock(); object->drawable = pglXCreatePbuffer(gdi_display, fmt->fbconfig, attribs); + wine_tsx11_unlock(); TRACE("new Pbuffer drawable as %p\n", (void*) object->drawable); if (!object->drawable) { SetLastError(ERROR_NO_SYSTEM_RESOURCES); @@ -2397,7 +2405,9 @@ static GLboolean WINAPI X11DRV_wglDestroyPbufferARB(HPBUFFERARB hPbuffer) SetLastError(ERROR_INVALID_HANDLE); return GL_FALSE; } + wine_tsx11_lock(); pglXDestroyPbuffer(object->display, object->drawable); + wine_tsx11_unlock(); HeapFree(GetProcessHeap(), 0, object); return GL_TRUE; } @@ -2444,10 +2454,14 @@ static GLboolean WINAPI X11DRV_wglQueryPbufferARB(HPBUFFERARB hPbuffer, int iAtt } switch (iAttribute) { case WGL_PBUFFER_WIDTH_ARB: + wine_tsx11_lock(); pglXQueryDrawable(object->display, object->drawable, GLX_WIDTH, (unsigned int*) piValue); + wine_tsx11_unlock(); break; case WGL_PBUFFER_HEIGHT_ARB: + wine_tsx11_lock(); pglXQueryDrawable(object->display, object->drawable, GLX_HEIGHT, (unsigned int*) piValue); + wine_tsx11_unlock(); break; case WGL_PBUFFER_LOST_ARB: @@ -2462,7 +2476,9 @@ static GLboolean WINAPI X11DRV_wglQueryPbufferARB(HPBUFFERARB hPbuffer, int iAtt if (use_render_texture_ati) { unsigned int tmp; int type = WGL_NO_TEXTURE_ARB; + wine_tsx11_lock(); pglXQueryDrawable(object->display, object->drawable, GLX_TEXTURE_FORMAT_ATI, &tmp); + wine_tsx11_unlock(); switch (tmp) { case GLX_NO_TEXTURE_ATI: type = WGL_NO_TEXTURE_ARB; break ; case GLX_TEXTURE_RGB_ATI: type = WGL_TEXTURE_RGB_ARB; break ; @@ -2508,7 +2524,9 @@ static GLboolean WINAPI X11DRV_wglQueryPbufferARB(HPBUFFERARB hPbuffer, int iAtt if (use_render_texture_ati) { unsigned int tmp; int type = WGL_NO_TEXTURE_ARB; + wine_tsx11_lock(); pglXQueryDrawable(object->display, object->drawable, GLX_TEXTURE_TARGET_ATI, &tmp); + wine_tsx11_unlock(); switch (tmp) { case GLX_NO_TEXTURE_ATI: type = WGL_NO_TEXTURE_ARB; break ; case GLX_TEXTURE_CUBE_MAP_ATI: type = WGL_TEXTURE_CUBE_MAP_ARB; break ; @@ -2536,7 +2554,9 @@ static GLboolean WINAPI X11DRV_wglQueryPbufferARB(HPBUFFERARB hPbuffer, int iAtt case WGL_MIPMAP_TEXTURE_ARB: if (use_render_texture_ati) { + wine_tsx11_lock(); pglXQueryDrawable(object->display, object->drawable, GLX_MIPMAP_TEXTURE_ATI, (unsigned int*) piValue); + wine_tsx11_unlock(); } else { *piValue = GL_FALSE; /** don't support that */ FIXME("unsupported WGL_ARB_render_texture attribute query for 0x%x\n", iAttribute); @@ -2570,6 +2590,8 @@ static int WINAPI X11DRV_wglReleasePbufferDCARB(HPBUFFERARB hPbuffer, HDC hdc) static GLboolean WINAPI X11DRV_wglSetPbufferAttribARB(HPBUFFERARB hPbuffer, const int *piAttribList) { Wine_GLPBuffer* object = (Wine_GLPBuffer*) hPbuffer; + GLboolean ret = GL_FALSE; + WARN("(%p, %p): alpha-testing, report any problem\n", hPbuffer, piAttribList); if (NULL == object) { SetLastError(ERROR_INVALID_HANDLE); @@ -2586,9 +2608,11 @@ static GLboolean WINAPI X11DRV_wglSetPbufferAttribARB(HPBUFFERARB hPbuffer, cons if (use_render_texture_ati) { FIXME("Need conversion for GLX_ATI_render_texture\n"); } - return pglXDrawableAttribATI(object->display, object->drawable, piAttribList); + wine_tsx11_lock(); + ret = pglXDrawableAttribATI(object->display, object->drawable, piAttribList); + wine_tsx11_unlock(); } - return GL_FALSE; + return ret; } /** @@ -2622,8 +2646,10 @@ static GLboolean WINAPI X11DRV_wglChoosePixelFormatARB(HDC hdc, const int *piAtt PUSH1(attribs, None); /* Search for FB configurations matching the requirements in attribs */ + wine_tsx11_lock(); cfgs = pglXChooseFBConfig(gdi_display, DefaultScreen(gdi_display), attribs, &nCfgs); if (NULL == cfgs) { + wine_tsx11_unlock(); WARN("Compatible Pixel Format not found\n"); return GL_FALSE; } @@ -2659,6 +2685,7 @@ static GLboolean WINAPI X11DRV_wglChoosePixelFormatARB(HDC hdc, const int *piAtt *nNumFormats = pfmt_it; /** free list */ XFree(cfgs); + wine_tsx11_unlock(); return GL_TRUE; } @@ -2691,6 +2718,7 @@ static GLboolean WINAPI X11DRV_wglGetPixelFormatAttribivARB(HDC hdc, int iPixelF WARN("Unable to convert iPixelFormat %d to a GLX one!\n", iPixelFormat); } + wine_tsx11_lock(); for (i = 0; i < nAttributes; ++i) { const int curWGLAttr = piAttributes[i]; TRACE("pAttr[%d] = %x\n", i, curWGLAttr); @@ -2772,7 +2800,7 @@ static GLboolean WINAPI X11DRV_wglGetPixelFormatAttribivARB(HDC hdc, int iPixelF } hTest = pglXGetFBConfigAttrib(gdi_display, fmt->fbconfig, GLX_DRAWABLE_TYPE, &tmp); if (hTest) goto get_error; - piValues[i] = (tmp & GLX_PBUFFER_BIT) ? GL_TRUE : GL_FALSE; + piValues[i] = (tmp & GLX_PBUFFER_BIT) ? GL_TRUE : GL_FALSE; continue; case WGL_BLUE_BITS_ARB: @@ -2898,13 +2926,16 @@ static GLboolean WINAPI X11DRV_wglGetPixelFormatAttribivARB(HDC hdc, int iPixelF piValues[i] = GL_FALSE; } } + wine_tsx11_unlock(); return GL_TRUE; get_error: + wine_tsx11_unlock(); ERR("(%p): unexpected failure on GetFBConfigAttrib(%x) returns FALSE\n", hdc, curGLXAttr); return GL_FALSE; pix_error: + wine_tsx11_unlock(); ERR("(%p): unexpected iPixelFormat(%d) vs nFormats(%d), returns FALSE\n", hdc, iPixelFormat, nWGLFormats); return GL_FALSE; } @@ -2951,6 +2982,8 @@ static GLboolean WINAPI X11DRV_wglGetPixelFormatAttribfvARB(HDC hdc, int iPixelF static GLboolean WINAPI X11DRV_wglBindTexImageARB(HPBUFFERARB hPbuffer, int iBuffer) { Wine_GLPBuffer* object = (Wine_GLPBuffer*) hPbuffer; + GLboolean ret = GL_FALSE; + TRACE("(%p, %d)\n", hPbuffer, iBuffer); if (NULL == object) { SetLastError(ERROR_INVALID_HANDLE); @@ -2964,10 +2997,14 @@ static GLboolean WINAPI X11DRV_wglBindTexImageARB(HPBUFFERARB hPbuffer, int iBuf if (!use_render_texture_ati && 1 == use_render_texture_emulation) { static int init = 0; int prev_binded_texture = 0; - GLXContext prev_context = pglXGetCurrentContext(); - Drawable prev_drawable = pglXGetCurrentDrawable(); + GLXContext prev_context; + Drawable prev_drawable; GLXContext tmp_context; + wine_tsx11_lock(); + prev_context = pglXGetCurrentContext(); + prev_drawable = pglXGetCurrentDrawable(); + /* Our render_texture emulation is basic and lacks some features (1D/Cube support). This is mostly due to lack of demos/games using them. Further the use of glReadPixels isn't ideal performance wise but I wasn't able to get other ways working. @@ -2993,6 +3030,7 @@ static GLboolean WINAPI X11DRV_wglBindTexImageARB(HPBUFFERARB hPbuffer, int iBuf /* Switch back to the original drawable and upload the pbuffer-texture */ pglXMakeCurrent(object->display, prev_drawable, prev_context); pglXDestroyContext(gdi_display, tmp_context); + wine_tsx11_unlock(); return GL_TRUE; } @@ -3024,9 +3062,11 @@ static GLboolean WINAPI X11DRV_wglBindTexImageARB(HPBUFFERARB hPbuffer, int iBuf * fixed the program. I don't know what the correct behavior is. On the other hand that demo * works fine using our pbuffer emulation path. */ - return pglXBindTexImageATI(object->display, object->drawable, buffer); + wine_tsx11_lock(); + ret = pglXBindTexImageATI(object->display, object->drawable, buffer); + wine_tsx11_unlock(); } - return GL_FALSE; + return ret; } /** @@ -3037,6 +3077,8 @@ static GLboolean WINAPI X11DRV_wglBindTexImageARB(HPBUFFERARB hPbuffer, int iBuf static GLboolean WINAPI X11DRV_wglReleaseTexImageARB(HPBUFFERARB hPbuffer, int iBuffer) { Wine_GLPBuffer* object = (Wine_GLPBuffer*) hPbuffer; + GLboolean ret = GL_FALSE; + TRACE("(%p, %d)\n", hPbuffer, iBuffer); if (NULL == object) { SetLastError(ERROR_INVALID_HANDLE); @@ -3070,9 +3112,11 @@ static GLboolean WINAPI X11DRV_wglReleaseTexImageARB(HPBUFFERARB hPbuffer, int i ERR("Unknown iBuffer=%#x\n", iBuffer); return FALSE; } - return pglXReleaseTexImageATI(object->display, object->drawable, buffer); + wine_tsx11_lock(); + ret = pglXReleaseTexImageATI(object->display, object->drawable, buffer); + wine_tsx11_unlock(); } - return GL_FALSE; + return ret; } /** @@ -3101,13 +3145,17 @@ static int WINAPI X11DRV_wglGetSwapIntervalEXT(VOID) { * WGL_EXT_swap_control: wglSwapIntervalEXT */ static BOOL WINAPI X11DRV_wglSwapIntervalEXT(int interval) { + BOOL ret = TRUE; + TRACE("(%d)\n", interval); swap_interval = interval; if (NULL != pglXSwapIntervalSGI) { - return 0 == pglXSwapIntervalSGI(interval); + wine_tsx11_lock(); + ret = !pglXSwapIntervalSGI(interval); + wine_tsx11_unlock(); } - WARN("(): GLX_SGI_swap_control extension seems not supported\n"); - return TRUE; + else WARN("(): GLX_SGI_swap_control extension seems not supported\n"); + return ret; } /** @@ -3116,11 +3164,16 @@ static BOOL WINAPI X11DRV_wglSwapIntervalEXT(int interval) { * WGL_NV_vertex_array_range: wglAllocateMemoryNV */ static void* WINAPI X11DRV_wglAllocateMemoryNV(GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority) { + void *ret = NULL; TRACE("(%d, %f, %f, %f)\n", size, readfreq, writefreq, priority ); - if (pglXAllocateMemoryNV == NULL) - return NULL; - return pglXAllocateMemoryNV(size, readfreq, writefreq, priority); + if (pglXAllocateMemoryNV) + { + wine_tsx11_lock(); + ret = pglXAllocateMemoryNV(size, readfreq, writefreq, priority); + wine_tsx11_unlock(); + } + return ret; } /** @@ -3133,7 +3186,9 @@ static void WINAPI X11DRV_wglFreeMemoryNV(GLvoid* pointer) { if (pglXFreeMemoryNV == NULL) return; + wine_tsx11_lock(); pglXFreeMemoryNV(pointer); + wine_tsx11_unlock(); } /** @@ -3475,11 +3530,16 @@ BOOL X11DRV_SwapBuffers(X11DRV_PDEVICE *physDev) XVisualInfo *visual_from_fbconfig_id( XID fbconfig_id ) { WineGLPixelFormat *fmt; + XVisualInfo *ret; fmt = ConvertPixelFormatGLXtoWGL(gdi_display, fbconfig_id); if(fmt == NULL) return NULL; - return pglXGetVisualFromFBConfig(gdi_display, fmt->fbconfig); + + wine_tsx11_lock(); + ret = pglXGetVisualFromFBConfig(gdi_display, fmt->fbconfig); + wine_tsx11_unlock(); + return ret; } #else /* no OpenGL includes */ diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c index fe4cff510d9..e6b1bc4dfdf 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -439,10 +439,7 @@ BOOL X11DRV_set_win_format( HWND hwnd, XID fbconfig_id ) if (!(data = X11DRV_get_win_data(hwnd)) && !(data = X11DRV_create_win_data(hwnd))) return FALSE; - wine_tsx11_lock(); - vis = visual_from_fbconfig_id(fbconfig_id); - wine_tsx11_unlock(); - if (!vis) return FALSE; + if (!(vis = visual_from_fbconfig_id(fbconfig_id))) return FALSE; if (data->whole_window) { @@ -575,15 +572,9 @@ static void sync_gl_drawable(struct x11drv_win_data *data) } #endif - wine_tsx11_lock(); - - vis = visual_from_fbconfig_id(data->fbconfig_id); - if(!vis) - { - wine_tsx11_unlock(); - return; - } + if (!(vis = visual_from_fbconfig_id(data->fbconfig_id))) return; + wine_tsx11_lock(); pix = XCreatePixmap(gdi_display, root_window, w, h, vis->depth); if(!pix) { @@ -1772,14 +1763,21 @@ void X11DRV_GetDC( HDC hdc, HWND hwnd, HWND top, const RECT *win_rect, escape.fbconfig_id = 0; escape.gl_drawable = 0; escape.pixmap = 0; + escape.gl_copy = FALSE; if (top == hwnd && data && IsIconic( hwnd ) && data->icon_window) { escape.drawable = data->icon_window; } - else if (top == hwnd && (flags & DCX_WINDOW)) + else if (top == hwnd) { - escape.drawable = data ? data->whole_window : X11DRV_get_whole_window( hwnd ); + escape.fbconfig_id = data ? data->fbconfig_id : (XID)GetPropA( hwnd, fbconfig_id_prop ); + /* GL draws to the client area even for window DCs */ + escape.gl_drawable = data ? data->client_window : X11DRV_get_client_window( hwnd ); + if (flags & DCX_WINDOW) + escape.drawable = data ? data->whole_window : X11DRV_get_whole_window( hwnd ); + else + escape.drawable = escape.gl_drawable; } else { @@ -1787,6 +1785,7 @@ void X11DRV_GetDC( HDC hdc, HWND hwnd, HWND top, const RECT *win_rect, escape.fbconfig_id = data ? data->fbconfig_id : (XID)GetPropA( hwnd, fbconfig_id_prop ); escape.gl_drawable = data ? data->gl_drawable : (Drawable)GetPropA( hwnd, gl_drawable_prop ); escape.pixmap = data ? data->pixmap : (Pixmap)GetPropA( hwnd, pixmap_prop ); + escape.gl_copy = (escape.gl_drawable != 0); if (flags & DCX_CLIPCHILDREN) escape.mode = ClipByChildren; } diff --git a/dlls/winex11.drv/wintab.c b/dlls/winex11.drv/wintab.c index 333e0b8d626..5eecd264b1d 100644 --- a/dlls/winex11.drv/wintab.c +++ b/dlls/winex11.drv/wintab.c @@ -418,6 +418,7 @@ static BOOL is_stylus(const char *name, const char *type) static const char* tablet_stylus_whitelist[] = { "stylus", "wizardpen", + "acecad", NULL }; @@ -535,7 +536,10 @@ void X11DRV_LoadTabletInfo(HWND hwnddefault) #ifdef IsXExtensionPointer case IsXExtensionPointer: #endif - TRACE("Is XExtension%s\n", (devices[loop].use == IsXExtensionDevice)? "Device":"Pointer"); +#ifdef IsXExtensionKeyboard + case IsXExtensionKeyboard: +#endif + TRACE("Is XExtension: Device, Keyboard, or Pointer\n"); cursor_target++; target = &devices[loop]; cursor = &gSysCursor[cursor_target]; diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h index 2a98bdaca18..a1d765b73ff 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h @@ -139,6 +139,7 @@ typedef struct int current_pf; Drawable gl_drawable; Pixmap pixmap; /* Pixmap for a GLXPixmap gl_drawable */ + int gl_copy; XRENDERINFO xrender; } X11DRV_PDEVICE; @@ -497,6 +498,7 @@ struct x11drv_escape_set_drawable XID fbconfig_id; /* fbconfig id used by the GL drawable */ Drawable gl_drawable; /* GL drawable */ Pixmap pixmap; /* Pixmap for a GLXPixmap gl_drawable */ + int gl_copy; /* whether the GL contents need explicit copying */ }; /************************************************************************** diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c index 3287fea3ead..4ca1bb64d22 100644 --- a/dlls/winex11.drv/x11drv_main.c +++ b/dlls/winex11.drv/x11drv_main.c @@ -484,7 +484,6 @@ sym_not_found: static BOOL process_attach(void) { Display *display; - const char *env; setup_options(); @@ -492,9 +491,6 @@ static BOOL process_attach(void) /* Open display */ - if (!(env = getenv("XMODIFIERS")) || !*env) /* try to avoid the Xlib XIM locking bug */ - if (!XInitThreads()) ERR( "XInitThreads failed, trouble ahead\n" ); - if (!(display = XOpenDisplay( NULL ))) return FALSE; fcntl( ConnectionNumber(display), F_SETFD, 1 ); /* set close on exec flag */ diff --git a/dlls/wininet/internet.c b/dlls/wininet/internet.c index 856f302742f..d4734a47df7 100644 --- a/dlls/wininet/internet.c +++ b/dlls/wininet/internet.c @@ -83,9 +83,6 @@ typedef struct CHAR response[MAX_REPLY_LEN]; } WITHREADERROR, *LPWITHREADERROR; -HINTERNET WINAPI INTERNET_InternetOpenUrlW(LPWININETAPPINFOW hIC, LPCWSTR lpszUrl, - LPCWSTR lpszHeaders, DWORD dwHeadersLength, DWORD dwFlags, DWORD_PTR dwContext); - static DWORD g_dwTlsErrIndex = TLS_OUT_OF_INDEXES; static HMODULE WININET_hModule; @@ -2734,7 +2731,7 @@ BOOL WINAPI InternetCheckConnectionA(LPCSTR lpszUrl, DWORD dwFlags, DWORD dwRese * RETURNS * handle of connection or NULL on failure */ -HINTERNET WINAPI INTERNET_InternetOpenUrlW(LPWININETAPPINFOW hIC, LPCWSTR lpszUrl, +static HINTERNET INTERNET_InternetOpenUrlW(LPWININETAPPINFOW hIC, LPCWSTR lpszUrl, LPCWSTR lpszHeaders, DWORD dwHeadersLength, DWORD dwFlags, DWORD_PTR dwContext) { URL_COMPONENTSW urlComponents; diff --git a/dlls/winmm/tests/capture.c b/dlls/winmm/tests/capture.c index e0975df9a39..fb02d40015c 100644 --- a/dlls/winmm/tests/capture.c +++ b/dlls/winmm/tests/capture.c @@ -385,7 +385,8 @@ static void wave_in_test_device(int device) } HeapFree(GetProcessHeap(), 0, nameW); } else if (rc==MMSYSERR_NOTSUPPORTED) { - nameA=strdup("not supported"); + nameA=HeapAlloc(GetProcessHeap(), 0, sizeof("not supported")); + strcpy(nameA, "not supported"); } trace(" %s: \"%s\" (%s) %d.%d (%d:%d)\n",dev_name(device),capsA.szPname, diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index d0d2a13fd88..889f88fb5e4 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -297,6 +297,7 @@ static const int ws_af_map[][2] = #ifdef HAVE_IPX MAP_OPTION( AF_IPX ), #endif + {FROM_PROTOCOL_INFO, FROM_PROTOCOL_INFO}, }; static const int ws_socktype_map[][2] = @@ -304,6 +305,7 @@ static const int ws_socktype_map[][2] = MAP_OPTION( SOCK_DGRAM ), MAP_OPTION( SOCK_STREAM ), MAP_OPTION( SOCK_RAW ), + {FROM_PROTOCOL_INFO, FROM_PROTOCOL_INFO}, }; static const int ws_proto_map[][2] = @@ -314,6 +316,7 @@ static const int ws_proto_map[][2] = MAP_OPTION( IPPROTO_ICMP ), MAP_OPTION( IPPROTO_IGMP ), MAP_OPTION( IPPROTO_RAW ), + {FROM_PROTOCOL_INFO, FROM_PROTOCOL_INFO}, }; static const int ws_aiflag_map[][2] = @@ -1489,6 +1492,19 @@ int WINAPI WS_connect(SOCKET s, const struct WS_sockaddr* name, int namelen) } else { + if (name->sa_family == WS_AF_INET) + { + struct sockaddr_in *in4 = (struct sockaddr_in*) &uaddr; + if (memcmp(&in4->sin_addr, &magic_loopback_addr, 4) == 0) + { + /* Trying to connect to magic replace-loopback address, + * assuming we really want to connect to localhost */ + TRACE("Trying to connect to magic IP address, using " + "INADDR_LOOPBACK instead.\n"); + in4->sin_addr.s_addr = htonl(WS_INADDR_LOOPBACK); + } + } + if (connect(fd, &uaddr.addr, uaddrlen) == 0) goto connect_success; } @@ -3781,28 +3797,18 @@ SOCKET WINAPI WSASocketW(int af, int type, int protocol, return ret; } - /* check and convert the socket family */ + /* convert the socket family and type */ af = convert_af_w2u(af); - if (af == -1) - { - FIXME("Unsupported socket family %d!\n", af); - SetLastError(WSAEAFNOSUPPORT); - return INVALID_SOCKET; - } - - /* check the socket type */ type = convert_socktype_w2u(type); - if (type == -1) - { - SetLastError(WSAESOCKTNOSUPPORT); - return INVALID_SOCKET; - } - /* check the protocol type */ - if ( protocol < 0 ) /* don't support negative values */ + if (lpProtocolInfo) { - SetLastError(WSAEPROTONOSUPPORT); - return INVALID_SOCKET; + if (af == FROM_PROTOCOL_INFO) + af = lpProtocolInfo->iAddressFamily; + if (type == FROM_PROTOCOL_INFO) + type = lpProtocolInfo->iSocketType; + if (protocol == FROM_PROTOCOL_INFO) + protocol = lpProtocolInfo->iProtocol; } if ( af == AF_UNSPEC) /* did they not specify the address family? */ diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c index 405b47eb51e..8ee5c37d87e 100644 --- a/dlls/ws2_32/tests/sock.c +++ b/dlls/ws2_32/tests/sock.c @@ -1115,6 +1115,51 @@ static void test_getservbyname(void) } } +static void test_WSASocket(void) +{ + SOCKET sock = INVALID_SOCKET; + WSAPROTOCOL_INFOA *pi; + int providers[] = {6, 0}; + int ret, err; + UINT pi_size; + + /* Set pi_size explicitly to a value below 2*sizeof(WSAPROTOCOL_INFOA) + * to avoid a crash on win98. + */ + pi_size = 0; + ret = WSAEnumProtocolsA(providers, NULL, &pi_size); + ok(ret == SOCKET_ERROR, "WSAEnumProtocolsA({6,0}, NULL, 0) returned %d\n", + ret); + err = WSAGetLastError(); + ok(err == WSAENOBUFS, "WSAEnumProtocolsA error is %d, not WSAENOBUFS(%d)\n", + err, WSAENOBUFS); + + pi = HeapAlloc(GetProcessHeap(), 0, pi_size); + ok(pi != NULL, "Failed to allocate memory\n"); + if (pi == NULL) { + skip("Can't continue without memory.\n"); + return; + } + + ret = WSAEnumProtocolsA(providers, pi, &pi_size); + ok(ret != SOCKET_ERROR, "WSAEnumProtocolsA failed, last error is %d\n", + WSAGetLastError()); + + if (ret == 0) { + skip("No protocols enumerated.\n"); + HeapFree(GetProcessHeap(), 0, pi); + return; + } + + sock = WSASocketA(FROM_PROTOCOL_INFO, FROM_PROTOCOL_INFO, + FROM_PROTOCOL_INFO, &pi[0], 0, 0); + ok(sock != INVALID_SOCKET, "Failed to create socket: %d\n", + WSAGetLastError()); + + closesocket(sock); + HeapFree(GetProcessHeap(), 0, pi); +} + static void test_WSAAddressToStringA(void) { INT ret; @@ -2054,6 +2099,7 @@ START_TEST( sock ) test_UDP(); test_getservbyname(); + test_WSASocket(); test_WSAAddressToStringA(); test_WSAAddressToStringW(); diff --git a/fonts/tahomabd.sfd b/fonts/tahomabd.sfd index b9fdfa01ae9..e63e00d65fd 100644 --- a/fonts/tahomabd.sfd +++ b/fonts/tahomabd.sfd @@ -18,7 +18,7 @@ OS2Version: 2 OS2_WeightWidthSlopeOnly: 0 OS2_UseTypoMetrics: 1 CreationTime: 1169210120 -ModificationTime: 1206557454 +ModificationTime: 1210760415 PfmFamily: 33 TTFWeight: 700 TTFWidth: 5 @@ -93,7 +93,7 @@ NameList: Adobe Glyph List DisplaySize: 12 AntiAlias: 1 FitToEm: 1 -WinInfo: 84 28 11 +WinInfo: 896 56 19 BeginPrivate: 10 BlueValues 27 [-30 0 1120 1177 1522 1522] OtherBlues 11 [-426 -426] @@ -107,7 +107,7 @@ SnapStemV 9 [184 203] ExpansionFactor 4 0.06 EndPrivate TeXData: 1 0 0 327680 163840 109226 571904 -1048576 109226 783286 444596 497025 792723 393216 433062 380633 303038 157286 324010 404750 52429 2506097 1059062 262144 -BeginChars: 65537 338 +BeginChars: 65537 409 StartChar: .notdef Encoding: 0 0 0 Width: 2048 @@ -6975,8 +6975,1380 @@ Fore 817.276 0 m 0 EndSplineSet EndChar +StartChar: afii10017 +Encoding: 1040 1040 338 +Width: 1402 +Flags: W +HStem: 0 21<-10 190 1029 1238> 416 169<380 839> +Refer: 34 65 N 1 0 0 1 0 0 2 +EndChar +StartChar: afii10018 +Encoding: 1041 1041 339 +Width: 1405 +Flags: W +HStem: 0 21G<152 611> 719 158<352 805.481> 1327 166<350 1079.75> +VStem: 152 198<169 719 877 1327> +Fore +350 1327 m 17 + 350 877 l 1 + 576 877 l 2 + 765.247 877 911.624 859.18 990 792 c 0 + 1074 720 1161 603.037 1161 418 c 0 + 1137.18 223.91 1025.4 -4.64784e-18 611 0 c 2 + 152 0 l 1 + 152 1493 l 1 + 591 1493 l 2 + 731 1493 1080 1492.67 1080 1492.67 c 1 + 1080 1327.5 l 25 + 350 1327 l 17 +352 719 m 5 + 350 169 l 5 + 818.49 143.673 945.074 260.553 956 449 c 0 + 966.374 640.903 839.816 680.513 772.5 699.5 c 0 + 693.578 721.76 546.345 726.774 352 719 c 5 +EndSplineSet +EndChar +StartChar: afii10019 +Encoding: 1042 1042 340 +Width: 1405 +Flags: W +HStem: 0 21<152 611> 719 158<352 791.622> 1327 166<350 773> +VStem: 152 198<11.7053 876.295 877 1327> +Refer: 35 66 N 1 0 0 1 0 0 2 +EndChar +StartChar: afii10020 +Encoding: 1043 1043 341 +Width: 1158 +Flags: W +HStem: 0 21G<151 349> 1327 166<349 1033> +VStem: 151 198<0 1327> +Fore +349 0 m 1 + 151 0 l 1 + 151 1493 l 1 + 590 1493 l 2 + 1033 1493.17 l 5 + 1033 1328 l 29 + 349 1327 l 17 + 349 0 l 1 +EndSplineSet +EndChar +StartChar: afii10021 +Encoding: 1044 1044 342 +Width: 1571 +Flags: W +HStem: 0 188<325 1048> 1313 174.5<546 1049> +VStem: 16 203<-258 0> 1049 198<187 1313> 1166 190<-274 0> +Fore +325 188 m 1xf0 + 394 347 366 258 429 462 c 0 + 468.943 591.339 519 1011 519 1011 c 1 + 546 1313 l 1 + 1049 1313 l 1 + 1048 187 l 1 + 325 188 l 1xf0 +1166 0 m 5xe8 + 1166 -274 l 1 + 1357 -274 l 1 + 1356 186 l 1xe8 + 1249 186 l 1 + 1247 1489 l 1xf0 + 372.5 1487.5 l 1 + 356.275 1032.01 293.111 620.507 273 549 c 0 + 192 261 127 189.5 127 189.5 c 1 + 15 190 l 1 + 16 -258 l 1 + 219 -258 l 17 + 219 0 l 1 + 1166 0 l 5xe8 +EndSplineSet +EndChar +StartChar: afii10022 +Encoding: 1045 1045 343 +Width: 1260 +Flags: W +HStem: 0 176<350 1083> 729 176<350 1033> 1313 176<350 1083> +VStem: 152 198<176 729 905 1313> +Refer: 38 69 N 1 0 0 1 0 0 2 +EndChar +StartChar: afii10024 +Encoding: 1046 1046 344 +Width: 2138 +Flags: W +HStem: 0 21G<0.290039 249.58 818.97 1011.03 1580.42 1829.71> +VStem: 818.97 192.06<0 775 824 1489> +Fore +818.97 775 m 1 + 818.97 0 l 1 + 1011.03 0 l 1 + 1011.03 775 l 1 + 1580.42 0 l 1 + 1829.71 0 l 1 + 1239.95 824 l 1 + 1794.79 1489 l 1 + 1561.02 1489 l 1 + 1011.03 824 l 1 + 1011.03 1489 l 1 + 818.97 1489 l 1 + 818.97 824 l 1 + 268.98 1489 l 1 + 35.21 1489 l 1 + 590.05 824 l 1 + 0.290039 0 l 1 + 249.58 0 l 1 + 818.97 775 l 1 +EndSplineSet +EndChar +StartChar: afii10025 +Encoding: 1047 1047 345 +Width: 1302 +Flags: W +HStem: -21 170<242.109 754.255> 723 166<233.729 723.918> 1358 170<276.285 726.548> +VStem: 813.646 221.604<188.067 686.806 906.8 1313.27> +Fore +445.41 1528 m 0 + 759.635 1528 1035.25 1383.96 1035.25 1128 c 0 + 1035.25 955.333 940.433 858 739.777 812 c 1 + 940.355 771.85 1033.04 648.589 1033.04 442 c 0 + 1033.04 71.5996 688.799 -21 389.183 -21 c 0 + 252.473 -21 134.138 1 34.1777 45 c 1 + 34.1777 240 l 1 + 158.394 174 274.522 143.667 382.567 149 c 0 + 668.481 149 811.439 246.667 811.439 442 c 0 + 811.439 630.312 655.067 723 425.564 723 c 2 + 233.729 723 l 1 + 233.729 889 l 1 + 434.385 889 l 2 + 660.03 889 813.646 953 813.646 1107 c 0 + 813.646 1265.67 657.09 1358 425.564 1358 c 0 + 304.29 1358 190.366 1330.67 83.79 1276 c 1 + 83.79 1456 l 1 + 194.775 1504 315.314 1528 445.41 1528 c 0 +EndSplineSet +EndChar +StartChar: afii10026 +Encoding: 1048 1048 346 +Width: 1588 +Flags: W +HStem: 0 21G<151 373 1031 1216> +VStem: 151 185<310 1489> 1031 185<0 1284> +Fore +1216 0 m 1 + 1216 1489 l 1 + 935 1489 l 1 + 336 310 l 1 + 336 1489 l 1 + 151 1489 l 1 + 151 0 l 1 + 373 0 l 1 + 1031 1284 l 1 + 1031 0 l 1 + 1216 0 l 1 +EndSplineSet +EndChar +StartChar: afii10027 +Encoding: 1049 1049 347 +Width: 1588 +Flags: W +HStem: 0 21G<151 373 1031 1216> 1630 137<476.5 772.9> +VStem: 151 185<310 1489> 1031 185<0 1284> +Fore +313 1917 m 1 + 431 1917 l 1 + 446 1817 511 1767 626 1767 c 0 + 739 1767 804 1817 821 1917 c 1 + 939 1917 l 1 + 925.667 1725.67 821.333 1630 626 1630 c 0 + 430.667 1630 326.333 1725.67 313 1917 c 1 +1216 0 m 1 + 1216 1489 l 1 + 935 1489 l 1 + 336 310 l 1 + 336 1489 l 1 + 151 1489 l 1 + 151 0 l 1 + 373 0 l 1 + 1031 1284 l 1 + 1031 0 l 1 + 1216 0 l 1 +EndSplineSet +EndChar +StartChar: afii10028 +Encoding: 1050 1050 348 +Width: 1426 +Flags: W +HStem: 0 21<152 350 980 1237> +VStem: 152 198<0 775 824 1489> +Refer: 44 75 N 1 0 0 1 0 0 2 +EndChar +StartChar: afii10029 +Encoding: 1051 1051 349 +Width: 1590 +Flags: W +HStem: 0 21G<15 82.5 1049 1247> 1313 176<546 1049> +VStem: 1049 198<0 1313> +Fore +15 207 m 1 + 15 207 68.0576 209.228 102 213 c 0 + 126 215.668 174.5 198.5 245 287 c 0 + 346.396 414.283 339.289 839.079 348.5 945 c 0 + 369.5 1186.5 372.5 1487.5 372.5 1487.5 c 1 + 1247 1489 l 1 + 1247 0 l 1 + 1049 0 l 1 + 1049 1313 l 1 + 546 1313 l 1 + 511 738.5 l 0 + 511 738.5 487.5 447.5 455 315 c 0 + 434.485 231.364 391.305 147.445 308 77 c 24 + 237.04 16.9932 82.5 0 82.5 0 c 0 + 15 0 l 1 + 15 207 l 1 +EndSplineSet +EndChar +StartChar: afii10030 +Encoding: 1052 1052 350 +Width: 1829 +Flags: W +HStem: 0 21<152 337 1230 1428> +VStem: 152 185<0 1283> 1230 198<0 1283> +Refer: 46 77 N 1 0 0 1 0 0 2 +EndChar +StartChar: afii10031 +Encoding: 1053 1053 351 +Width: 1565 +Flags: W +HStem: 0 21<152 350 1035 1233> 729 176<350 1035> +VStem: 152 198<0 729 905 1489> 1035 198<0 729 905 1489> +Refer: 41 72 N 1 0 0 1 0 0 2 +EndChar +StartChar: afii10032 +Encoding: 1054 1054 352 +Width: 1577 +Flags: W +HStem: 1345 170<486.673 862.285> +VStem: 66 204<367.578 1031.53> +Refer: 48 79 N 1 0 0 1 0 0 2 +EndChar +StartChar: afii10033 +Encoding: 1055 1055 353 +Width: 1565 +Flags: W +HStem: 0 21G<151 349 1034 1232> 1313 176<349 1034> +VStem: 151 198<0 1313> 1034 198<0 1313> +Fore +151 0 m 1 + 151 1489 l 1 + 1232 1489 l 1 + 1232 0 l 1 + 1034 0 l 1 + 1034 1313 l 1 + 349 1313 l 1 + 349 0 l 1 + 151 0 l 1 +EndSplineSet +EndChar +StartChar: afii10034 +Encoding: 1056 1056 354 +Width: 1346 +Flags: W +HStem: -10 21<154 352> 545 169<352 511.754> 1309 170<331.899 652.903> +VStem: 154 198<-10 545 714 1309> 888 205<914.894 1163.98> +Refer: 49 80 N 1 0 0 1 0 0 2 +EndChar +StartChar: afii10035 +Encoding: 1057 1057 355 +Width: 1367 +Flags: W +HStem: 1347.28 168.716<571.697 830.264> +VStem: 66 206<580.825 1140.2> +Refer: 36 67 N 1 0 0 1 0 0 2 +EndChar +StartChar: afii10036 +Encoding: 1058 1058 356 +Width: 1254 +Flags: W +HStem: 0 21<498 701> 1318 171<3 498 701 1198> +VStem: 498 203<0 1318> +Refer: 53 84 N 1 0 0 1 0 0 2 +EndChar +StartChar: afii10037 +Encoding: 1059 1059 357 +Width: 1370 +Flags: W +HStem: -1 154<120.143 322.043> +Fore +657.126 321 m 2 + 609.587 210.333 566.008 134 526.391 92 c 0 + 466.607 30 384.132 -1 278.969 -1 c 2 + 120.143 -1 l 1 + 120.143 153 l 1 + 236.832 153 l 2 + 302.379 153 352.799 173.333 388.095 214 c 0 + 407.542 236 433.113 284.333 464.806 359 c 2 + 500.461 443 l 1 + 11.0176 1545 l 1 + 221.705 1545 l 1 + 599.862 669 l 1 + 978.02 1545 l 1 + 1188.71 1545 l 1 + 657.126 321 l 2 +EndSplineSet +EndChar +StartChar: afii10038 +Encoding: 1060 1060 358 +Width: 1796 +Flags: W +VStem: 66 217.124<494.181 989.826> 657.15 210.525<0 141.626 278.104 1231.88 1371.66 1519.5> +Fore +868.2 276.216 m 9 + 867.675 1231.88 l 1 + 996.268 1218.75 1066.68 1176.7 1142.57 1086 c 0 + 1275.19 927.491 1371.23 377.376 868.2 276.216 c 9 +658.725 278.104 m 17 + 345.27 307.934 290.101 525.524 283.124 742 c 0 + 271.42 1105.15 475.851 1210.55 657.15 1231.88 c 1 + 658.725 278.104 l 17 +655.1 1371 m 17 + 158.581 1327.96 66 1009.74 66 739.6 c 0 + 66 434.426 240.649 295.577 351.773 231.6 c 0 + 425.242 189.302 543.726 158.779 660.825 145 c 1 + 660.825 0 l 1 + 692.752 -1.81738 872.975 0 872.975 0 c 1 + 873.45 141.626 l 1 + 1064.8 162.594 1259.02 242.008 1371.4 413.2 c 0 + 1537.25 665.832 1540.72 1244.9 960.571 1355.6 c 0 + 916.126 1364.08 916.662 1369.43 869.778 1371.66 c 1 + 870.3 1519.5 l 25 + 654.625 1520 l 25 + 655.1 1371 l 17 +EndSplineSet +EndChar +StartChar: afii10039 +Encoding: 1061 1061 359 +Width: 1402 +Flags: W +HStem: 0 21<8 222 954 1181> +Refer: 57 88 N 1 0 0 1 0 0 2 +EndChar +StartChar: afii10040 +Encoding: 1062 1062 360 +Width: 1590 +Flags: W +HStem: 1 178<350 1034.5> +VStem: 152 198<178.5 1489> 1034 198<179 1489> 1172.5 190<-338.5 1> +Fore +152 0 m 1xe0 + 1172.5 1 l 1 + 1172 -339 l 1 + 1362 -338.5 l 1 + 1362.5 177 l 1xd0 + 1232 177 l 1 + 1232 1489 l 1 + 1034 1489 l 1 + 1034.5 179 l 9 + 350 178.5 l 1 + 350 1489 l 1 + 152 1489 l 1 + 152 0 l 1xe0 +350 175 m 25 +EndSplineSet +EndChar +StartChar: afii10041 +Encoding: 1063 1063 361 +Width: 1472 +Flags: W +HStem: -10 21G<892 1090> 545 169<732.246 892> +VStem: 151 204.5<1201.81 1480.5> 892 198<-10 545 714 1479> +Fore +151 1480.5 m 21 + 151 1004 l 0 + 169.41 645.422 488.775 524.84 892 545 c 1 + 892 -10 l 1 + 1090 -10 l 1 + 1090 1479 l 1 + 892 1479 l 1 + 892 714 l 1 + 663.5 714 l 2 + 611.078 720.369 480.512 747.177 413.5 821.5 c 0 + 366.881 873.204 356 948.404 356 1004 c 0 + 355.5 1481 l 0 + 355.5 1481 230.755 1480.7 151 1480.5 c 21 +EndSplineSet +EndChar +StartChar: afii10042 +Encoding: 1064 1064 362 +Width: 2231 +Flags: W +HStem: 0 177<349 873 1071 1585.5> +VStem: 151 198<176 1489> 873 198<178.5 1489> 1585.5 198.5<177 1489> +Fore +1585.5 177 m 17 + 1586 1489 l 1 + 1784 1489 l 1 + 1784 0 l 1 + 151 0 l 1 + 151 1489 l 1 + 349 1489 l 1 + 349 176 l 1 + 873 176 l 1 + 873 1489 l 1 + 1071 1489 l 1 + 1071 178.5 l 1 + 1585.5 177 l 17 +1071 175 m 25 +EndSplineSet +EndChar +StartChar: afii10043 +Encoding: 1065 1065 363 +Width: 2259 +Flags: W +HStem: 1 176<349 873 1071 1586.5> +VStem: 151 198<176 1489> 873 198<178.5 1489> 1586.5 197.5<177 1489> 1726 187<-338.5 1> +Fore +1586.5 177 m 17xf0 + 1586 1489 l 1 + 1784 1489 l 1 + 1784 177 l 1xf0 + 1914.5 177 l 1 + 1913 -338.5 l 1 + 1726 -339 l 1xe8 + 1724.5 1 l 1 + 151 0 l 1 + 151 1489 l 1 + 349 1489 l 1 + 349 176 l 1 + 873 176 l 1 + 873 1489 l 1 + 1071 1489 l 1 + 1071 178.5 l 1 + 1586.5 177 l 17xf0 +1071 175 m 25 +EndSplineSet +EndChar +StartChar: afii10044 +Encoding: 1066 1066 364 +Width: 1651 +Flags: W +HStem: -10 170<612.899 933.903> 755 169<633 792.752> 1291 189<0 435> +VStem: 435 198<160 755 924 1291> 1169 205<305.021 554.106> +Fore +633 -10 m 2 + 1201.54 -10 1386.8 106.6 1374 465 c 0 + 1355.59 823.578 1036.22 944.16 633 924 c 1 + 633 1479 l 1 + 0 1480 l 1 + 0 1291 l 1 + 435 1291 l 1 + 434 -10 l 1 + 633 -10 l 2 +633 755 m 1 + 861.5 755 l 2 + 913.922 748.631 1044.49 721.823 1111.5 647.5 c 0 + 1158.12 595.796 1169 520.596 1169 465 c 0 + 1169 341.939 1136.13 269.2 1060.5 218 c 0 + 989.858 170.17 864.343 158.87 703.142 160.5 c 0 + 671.714 160.17 648.333 160 633 160 c 1 + 633 755 l 1 +EndSplineSet +EndChar +StartChar: afii10045 +Encoding: 1067 1067 365 +Width: 1967 +Flags: W +HStem: -10 170<328.899 649.903> 755 169<349 508.754> +VStem: 151 198<160 755 924 1479> 885 205<305.021 554.106> 1248 184<-9 1481> +Fore +1248 -9 m 1 + 1248 1481 l 1 + 1432 1481 l 1 + 1432 -9 l 1 + 1248 -9 l 1 +350 -10 m 2 + 918.535 -10 1102.8 106.6 1090 465 c 0 + 1071.59 823.578 752.225 944.16 349 924 c 1 + 349 1479 l 1 + 151 1479 l 1 + 151 -10 l 1 + 350 -10 l 2 +349 755 m 1 + 577.5 755 l 2 + 629.922 748.631 760.488 721.823 827.5 647.5 c 0 + 874.119 595.796 885 520.596 885 465 c 0 + 885 341.939 852.126 269.2 776.5 218 c 0 + 705.858 170.17 580.343 158.87 419.142 160.5 c 0 + 387.714 160.17 364.333 160 349 160 c 1 + 349 755 l 1 +EndSplineSet +EndChar +StartChar: afii10046 +Encoding: 1068 1068 366 +Width: 1386 +Flags: W +HStem: -10 170<328.899 649.903> 755 169<349 508.754> +VStem: 151 198<160 755 924 1479> 885 205<305.021 554.106> +Fore +350 -10 m 2 + 918.535 -10 1102.8 106.6 1090 465 c 0 + 1071.59 823.578 752.225 944.16 349 924 c 1 + 349 1479 l 1 + 151 1479 l 1 + 151 -10 l 1 + 350 -10 l 2 +349 755 m 1 + 577.5 755 l 2 + 629.922 748.631 760.488 721.823 827.5 647.5 c 0 + 874.119 595.796 885 520.596 885 465 c 0 + 885 341.939 852.126 269.2 776.5 218 c 0 + 705.858 170.17 580.343 158.87 419.142 160.5 c 0 + 387.714 160.17 364.333 160 349 160 c 1 + 349 755 l 1 +EndSplineSet +EndChar +StartChar: afii10047 +Encoding: 1069 1069 367 +Width: 1367 +Flags: W +HStem: 729.5 175.5<255 958.781> 1347.28 168.716<408.736 667.258> +VStem: 967.5 205.5<580.825 743> +Fore +958.781 905 m 1 + 255 905 l 1 + 255 729 l 1 + 967.5 729.5 l 0 + 967.5 275.006 729.005 167.646 528 144 c 0 + 389.333 128 227.67 192.333 43 337 c 1 + 43 101 l 1 + 435.451 -139.979 1026.88 -67.8848 1149 502 c 0 + 1165 576.667 1173 657 1173 743 c 0 + 1173 1215.54 944.355 1486.98 526 1516 c 0 + 339.203 1528.44 209.99 1474.75 43 1390 c 1 + 43 1151 l 1 + 257.423 1330.82 436.715 1356.53 528 1346 c 0 + 780.151 1314.62 923.744 1167.62 958.781 905 c 1 +EndSplineSet +EndChar +StartChar: afii10048 +Encoding: 1070 1070 368 +Width: 2309 +Flags: W +HStem: 0 21G<151 335> 705 190<335 562.22> 1345 170<982.668 1358.28> +VStem: 151 184<0 705 895 1516> 562.22 203.78<457.877 727> +Fore +562.22 705 m 1 + 335 705 l 1 + 335 0 l 1 + 151 0 l 1 + 151 1516 l 1 + 335 1516 l 1 + 335 895 l 1 + 572 895 l 1 + 605.062 1203.18 746.806 1498.61 1197 1515 c 0 + 1268.33 1517.67 1336.83 1510.67 1402.5 1494 c 0 + 1947.58 1355.63 1944.32 631.789 1788.5 316 c 0 + 1571.34 -124.11 1049.76 -78.9473 830.5 89 c 0 + 729.956 166.011 573.619 352.315 562.22 705 c 1 +1409 182.5 m 0 + 1767.58 352.711 1694.7 964.267 1573.5 1157 c 0 + 1488.41 1292.3 1365.69 1340.99 1211 1345 c 0 + 1035.36 1346.67 752.189 1253.57 766 727 c 0 + 772.572 431.27 872.208 133.931 1238 143 c 0 + 1299.33 144.333 1356.33 157.5 1409 182.5 c 0 +EndSplineSet +EndChar +StartChar: afii10049 +Encoding: 1071 1071 369 +Width: 1467 +Flags: W +HStem: 0 21G<-5 212 863 1061> 592 165<721.249 863> 1319 174<515.867 863> +VStem: 129 207<941.4 1166.73> 863 198<0 592 757 1319> +Fore +645 1319 m 2 + 863 1319 l 1 + 863 757 l 1 + 636 757 l 1 + 540 771 466 802.5 414 851.5 c 0 + 362 900.5 336 966 336 1048 c 0 + 336 1139.33 362.667 1207.33 416 1252 c 0 + 469.333 1296.67 545.667 1319 645 1319 c 2 +453 680 m 1 + 359.667 648.667 275.333 558 200 408 c 2 + -5 0 l 1 + 212 0 l 1 + 423 361 l 2 + 457 415 499 471.667 549 531 c 0 + 581 571.667 639.667 592 725 592 c 2 + 863 592 l 1 + 863 0 l 1 + 1061 0 l 1 + 1061 1493 l 1 + 702 1493 l 2 + 510 1493 366.5 1457.83 271.5 1387.5 c 0 + 176.5 1317.17 129 1209 129 1063 c 0 + 129 947.667 158.67 855 218 785 c 0 + 277.333 715 355.667 680 453 680 c 1 +EndSplineSet +EndChar +StartChar: afii10065 +Encoding: 1072 1072 370 +Width: 1226 +Flags: W +HStem: -27 154<403.467 585.467> 563 157<445 647.414> 993 156<382.267 627.733> +VStem: 57 171<249.333 463.4> 759 187<0 132.535 414 563> +Refer: 66 97 N 1 0 0 1 0 0 2 +EndChar +StartChar: afii10066 +Encoding: 1073 1073 371 +Width: 1286 +Flags: W +HStem: 790.657 181.343<416.936 666.574> 1305 190<791.56 901.122> +VStem: 857.122 202.998<386.437 601> +Fore +901.122 1495 m 1 + 901.122 1305 l 1 + 840 1315 771.418 1300.72 707.5 1290.62 c 1 + 588.307 1271.76 476.933 1251.89 405 1196.61 c 1 + 317.5 1093 297.5 1090 273.622 970.5 c 0 + 268.153 943.132 266.122 907.667 262.122 865 c 1 + 384.381 945.609 445.339 964.139 571.122 972 c 0 + 815.303 984.989 1051.8 768.09 1060.12 499 c 0 + 1074.41 56.1553 681.409 -31 569.122 -31 c 0 + 279.267 -38.4326 87.3638 170.041 72.1221 499 c 0 + 52.5 922.5 95 1090 268.122 1274 c 0 + 363.217 1375.07 523.149 1442.49 685 1469.44 c 1 + 755.75 1481.22 822.5 1492.5 901.122 1495 c 1 +326.122 271 m 0 + 411.331 128.152 675.045 69.4609 781.122 221 c 0 + 799.789 247.667 815.122 278.167 827.122 312.5 c 0 + 839.122 346.833 847.289 379.5 851.622 410.5 c 0 + 855.955 441.5 857.789 470.333 857.122 497 c 0 + 854.455 577 828.955 697.333 780.622 738 c 0 + 732.289 778.667 641.789 796 569.122 790 c 0 + 393.122 775.333 317.5 727.5 270 668.5 c 0 + 249.243 642.718 267.122 428 277.122 388 c 0 + 287.122 348 303.455 309 326.122 271 c 0 +EndSplineSet +EndChar +StartChar: afii10067 +Encoding: 1074 1074 372 +Width: 1245 +Flags: W +HStem: -15.4443 155.021<319.246 747.64> 511.708 162.08<305.5 663.379> 968.699 155.021<305.999 724.104> +VStem: 134 171.5<151.004 511.708 673.788 968.534> 734.988 211.331<666.877 965.806> 773.113 211.33<138.307 505.09> +Fore +305.5 511.708 m 9xf4 + 305.003 151.004 l 1 + 305.003 151.004 389.423 137.76 431.925 139.577 c 0 + 674.783 139.577 773.113 181.403 773.113 325.057 c 0 + 773.113 463.544 663.379 513.758 468.447 511.708 c 2 + 305.5 511.708 l 9xf4 +305.5 673.788 m 1 + 475.938 673.788 l 2 + 667.605 673.788 734.988 700.854 734.988 814.11 c 0xf8 + 734.988 930.799 665.106 968.699 468.447 968.699 c 0 + 305.999 968.534 l 1 + 305.5 673.788 l 1 +134 1124 m 1 + 485.305 1123.72 l 0 + 752.21 1123.72 946.319 1017.79 946.319 829.553 c 0xf8 + 946.319 702.57 905.78 630.989 735.341 597.161 c 1 + 905.716 567.634 984.443 476.984 984.443 325.057 c 0xf4 + 984.443 52.6562 692.041 -15.4443 437.544 -15.4443 c 0 + 134 0 l 1 + 134 1124 l 1 +EndSplineSet +EndChar +StartChar: afii10068 +Encoding: 1075 1075 373 +Width: 1021 +Flags: W +HStem: 961 159<319 841> +VStem: 136 183<1 961> +Fore +841 961 m 1 + 319 961 l 1 + 320 0 l 1 + 136 1 l 1 + 136 1119 l 1 + 841 1120 l 1 + 841 961 l 1 +EndSplineSet +EndChar +StartChar: afii10069 +Encoding: 1076 1076 374 +Width: 1325 +Flags: W +HStem: 0.0800781 161.557<271.415 845.801> 965.709 154.391<437.818 846.554> +VStem: 8.75293 172.849<-234.182 0.0800781> 846.554 169.086<160.883 965.709> 924.649 173.061<-246.228 0.0800781> +Fore +271.415 161.637 m 1xf0 + 323.369 281.355 302.286 194.343 349.723 347.945 c 0 + 379.797 445.331 417.488 761.316 417.488 761.316 c 1 + 437.818 965.709 l 1 + 846.554 965.709 l 1 + 845.801 160.883 l 1 + 271.415 161.637 l 1xf0 +924.649 0.0800781 m 1xe8 + 924.649 -246.228 l 1 + 1098.46 -246.228 l 1 + 1097.71 160.13 l 1xe8 + 1017.14 160.13 l 1 + 1015.64 1121.23 l 1xf0 + 277.181 1120.1 l 1 + 264.963 777.138 217.404 467.293 202.262 413.452 c 0 + 141.272 196.602 92.3301 162.766 92.3301 162.766 c 1 + 8 163.142 l 1 + 8.75293 -234.182 l 1 + 181.602 -234.182 l 17 + 181.602 0.0800781 l 1 + 924.649 0.0800781 l 1xe8 +EndSplineSet +EndChar +StartChar: afii10070 +Encoding: 1077 1077 375 +Width: 1216 +Flags: W +HStem: -26 157<298.443 783.467> 539 144<246 866> 985 157<355.133 691.039> +VStem: 866 174<630 812> +Refer: 70 101 N 1 0 0 1 0 0 2 +EndChar +StartChar: afii10072 +Encoding: 1078 1078 376 +Width: 1814 +Flags: W +HStem: 0 21G<7.68262 238.18 665.557 843.231 1270.61 1501.11> 1100 20G<31.6934 257.387 1251.4 1477.1> +VStem: 665.556 177.675<0 547 637 1121> +Fore +665.556 636.997 m 1 + 257.387 1120 l 1 + 31.6934 1120 l 1 + 455.229 609 l 1 + 7.68262 0 l 1 + 238.18 0 l 1 + 665.557 547 l 1 + 665.557 0 l 1 + 843.231 0 l 1 + 843.231 547 l 1 + 1270.61 0 l 1 + 1501.11 0 l 1 + 1053.56 609 l 1 + 1477.1 1120 l 1 + 1251.4 1120 l 1 + 843.231 637 l 1 + 843.231 1121 l 1 + 665.557 1121 l 1 + 665.556 636.997 l 1 +EndSplineSet +EndChar +StartChar: afii10073 +Encoding: 1079 1079 377 +Width: 1074 +Flags: W +HStem: -15.4443 155.021<191.02 638.823> 511.708 162.08<196.682 613.054> 968.699 155.021<232.829 615.286> +VStem: 636.17 211.331<666.877 965.806> 664.295 211.33<138.307 505.09> +Fore +376.486 1123.72 m 0xf0 + 643.392 1123.72 847.501 1017.79 847.501 829.553 c 0xf0 + 847.501 702.57 796.962 630.989 626.522 597.161 c 1 + 796.897 567.634 875.625 476.984 875.625 325.057 c 0 + 875.625 52.6562 583.223 -15.4443 328.726 -15.4443 c 0 + 212.603 -15.4443 112.09 0.736328 27.1816 33.0938 c 1 + 27.1816 206.501 l 1 + 132.691 157.963 231.332 135.654 323.106 139.577 c 0 + 565.965 139.577 664.295 181.403 664.295 325.057 c 0xe8 + 664.295 463.544 554.571 511.708 359.629 511.708 c 2 + 196.682 511.708 l 1 + 196.682 673.788 l 1 + 367.12 673.788 l 2 + 558.787 673.788 636.17 700.854 636.17 814.11 c 0 + 636.17 930.799 556.288 968.699 359.629 968.699 c 0 + 256.617 968.699 159.851 948.602 69.3223 908.396 c 1 + 69.3223 1070.77 l 1 + 163.595 1106.07 265.981 1123.72 376.486 1123.72 c 0xf0 +EndSplineSet +EndChar +StartChar: afii10074 +Encoding: 1080 1080 378 +Width: 1335 +Flags: W +HStem: 0 21G<826 1010> +VStem: 136 184<257 1117> 826 184<0 838> +Fore +320 257 m 17 + 320 1117 l 1 + 136 1117 l 1 + 136 428 l 1 + 135 1 l 1 + 328 0 l 1 + 826 838 l 1 + 826 0 l 1 + 1010 0 l 1 + 1010 1120 l 1 + 834 1118 l 1 + 320 257 l 17 +EndSplineSet +EndChar +StartChar: afii10075 +Encoding: 1081 1081 379 +Width: 1335 +Flags: W +HStem: 0 21G<826 1010> 1247 137<392.5 688.9> +VStem: 136 184<257 1117> 826 184<0 838> +Fore +229 1534 m 1 + 347 1534 l 1 + 362 1434 427 1384 542 1384 c 0 + 655 1384 720 1434 737 1534 c 1 + 855 1534 l 1 + 841.667 1342.67 737.333 1247 542 1247 c 0 + 346.667 1247 242.333 1342.67 229 1534 c 1 +320 257 m 17 + 320 1117 l 1 + 136 1117 l 1 + 136 428 l 1 + 135 1 l 1 + 328 0 l 1 + 826 838 l 1 + 826 0 l 1 + 1010 0 l 1 + 1010 1120 l 1 + 834 1118 l 1 + 320 257 l 17 +EndSplineSet +EndChar +StartChar: afii10076 +Encoding: 1082 1082 380 +Width: 1235 +Flags: W +HStem: 0 21G<136 321 766 1006> 1101 20G<136 321> +VStem: 136 185<0 547 637 1121> +Fore +136 0 m 1 + 136 1121 l 1 + 321 1121 l 1 + 321 637 l 1 + 746 1120 l 1 + 981 1120 l 1 + 540 609 l 1 + 1006 0 l 1 + 766 0 l 1 + 321 547 l 1 + 321 0 l 1 + 136 0 l 1 +EndSplineSet +EndChar +StartChar: afii10077 +Encoding: 1083 1083 381 +Width: 1339 +Flags: W +HStem: 0 21G<11.4004 82.7002 817.24 997.72> 967.881 151.759<434.96 817.24> +VStem: 817.24 180.48<0 967.881> +Fore +11.4004 157.319 m 1 + 11.4004 157.319 51.7236 159.014 77.5195 161.881 c 0 + 95.7598 163.907 132.619 150.859 186.2 218.119 c 0 + 263.262 314.855 257.86 637.7 264.859 718.2 c 0 + 280.819 901.74 283.1 1120.5 283.1 1120.5 c 1 + 997.72 1119.64 l 1 + 997.72 0 l 1 + 817.24 0 l 1 + 817.24 967.881 l 1 + 434.96 967.881 l 1 + 408.359 561.26 l 0 + 408.359 561.26 390.5 340.1 365.8 239.4 c 0 + 350.209 175.836 317.392 112.058 254.08 58.5195 c 24 + 200.15 12.9141 82.7002 0 82.7002 0 c 0 + 11.4004 0 l 1 + 11.4004 157.319 l 1 +EndSplineSet +EndChar +StartChar: afii10078 +Encoding: 1084 1084 382 +Width: 1550 +Flags: W +HStem: 0 21G<977 1161> +VStem: 136 184<1 910> 977.5 183.5<0 900> +Fore +136 1119 m 1 + 136 1 l 1 + 320 0 l 1 + 320 910 l 1 + 582.5 417.5 l 1 + 722.5 417 l 1 + 977.5 900 l 1 + 977 0 l 1 + 1161 0 l 1 + 1161 1120 l 1 + 922.5 1117.5 l 1 + 652.5 590 l 1 + 362.5 1120 l 1 + 136 1119 l 1 +EndSplineSet +EndChar +StartChar: afii10079 +Encoding: 1085 1085 383 +Width: 1330 +Flags: W +HStem: 0 21G<827 1011> 542 142<319 828> 1100 20G<827 1011> +VStem: 137 182<1 542 684 1117> 828 183<0 542 684 1120> +Fore +828 684 m 5 + 319 684 l 5 + 321 1117 l 5 + 137 1117 l 5 + 136 1 l 5 + 320 0 l 5 + 319 542 l 5 + 828 542 l 5 + 827 0 l 1 + 1011 0 l 1 + 1011 1120 l 1 + 827 1120 l 1 + 828 684 l 5 +EndSplineSet +EndChar +StartChar: afii10080 +Encoding: 1086 1086 384 +Width: 1264 +Flags: W +HStem: -29 156<424.533 686.267> 991 156<427.133 688> +VStem: 57 194<403.867 713.267> 860 195<404.6 711.4> +Refer: 80 111 N 1 0 0 1 0 0 2 +EndChar +StartChar: afii10081 +Encoding: 1087 1087 385 +Width: 1324 +Flags: W +HStem: 0 21G<827 1011> 961 158<319 828> +VStem: 136 184<1 961> 828 183<0 961> +Fore +136 1119 m 1 + 136 1 l 1 + 320 0 l 1 + 319 961 l 1 + 828 961 l 1 + 827 0 l 1 + 1011 0 l 1 + 1011 1120 l 1 + 136 1119 l 1 +EndSplineSet +EndChar +StartChar: afii10082 +Encoding: 1088 1088 386 +Width: 1289 +Flags: W +HStem: 5 147<416.933 689.067> 975 147<416.933 689.067> +VStem: 135 179<-412 86 412.23 711.471 1090.11 1097> 850 182<418.4 708.733> +Refer: 81 112 N 1 0 0 1 0 0 2 +EndChar +StartChar: afii10083 +Encoding: 1089 1089 387 +Width: 1080 +Flags: W +HStem: -22 156<435.2 735.867> +VStem: 82 194<337.3 751.133> +Refer: 68 99 N 1 0 0 1 0 0 2 +EndChar +StartChar: afii10084 +Encoding: 1090 1090 388 +Width: 1066 +Flags: W +HStem: 0 21G<383.5 567.5> 959.5 160.5<4 382.5 567 942.5> +VStem: 382.5 184.5<0 961> +Fore +4 1120 m 1 + 942.5 1120 l 1 + 942.5 959.5 l 1 + 567 961 l 1 + 567.5 0 l 1 + 383.5 0 l 1 + 382.5 961 l 1 + 4 959.5 l 1 + 4 1120 l 1 +EndSplineSet +EndChar +StartChar: afii10085 +Encoding: 1091 1091 389 +Width: 1179 +Flags: W +HStem: -426 154<107 293.867> 1100 20G<6 201 901 1096> +Fore +604 -104 m 2 + 560 -214.667 519.667 -291 483 -333 c 0 + 427.667 -395 351.333 -426 254 -426 c 2 + 107 -426 l 1 + 107 -272 l 1 + 215 -272 l 2 + 275.667 -272 322.333 -251.667 355 -211 c 0 + 373 -189 396.667 -140.667 426 -66 c 2 + 459 18 l 1 + 6 1120 l 1 + 201 1120 l 1 + 551 244 l 1 + 901 1120 l 1 + 1096 1120 l 1 + 604 -104 l 2 +EndSplineSet +EndChar +StartChar: afii10086 +Encoding: 1092 1092 390 +Width: 1818 +Flags: W +HStem: -22 166<339.022 564.433 996.122 1221.53> +VStem: 74.2275 165.441<324.145 751.133> 679.223 199.856<-412 50 255 896 1056 1518> 1320.88 165.44<324.145 751.133> +Fore +879.079 255 m 17 + 949.882 174.333 1018.26 144 1098.73 144 c 0 + 1193.19 144 1237.42 174.667 1271.4 256 c 1 + 1315.63 331 1332.13 440 1320.88 583 c 0 + 1320.88 712.333 1298.64 814.667 1254.16 890 c 0 + 1223.17 951.333 1180.2 972 1085.23 972 c 0 + 1006.77 972 956.378 955.333 879.079 896 c 9 + 879.079 255 l 17 +677.725 896 m 17 + 596.677 952.333 553.786 972 475.316 972 c 0 + 380.355 972 337.38 951.333 306.393 890 c 0 + 261.91 814.667 239.669 712.333 239.669 583 c 0 + 228.424 440 244.918 331 289.149 256 c 1 + 323.136 174.667 367.36 144 461.821 144 c 0 + 542.29 144 606.753 174.333 679.223 255 c 1 + 677.725 896 l 17 +878.499 1056 m 17 + 952.969 1102 1000.77 1127.67 1080.74 1139 c 1 + 1206.69 1127 1302.4 1081.33 1367.87 1002 c 0 + 1446.84 902.667 1486.32 763 1486.32 583 c 0 + 1497.82 393 1468.33 245.667 1397.86 141 c 0 + 1339.38 32.333 1244.67 -22 1113.72 -22 c 0 + 1023.26 -22 963.627 4 883.826 50 c 9 + 882.996 -412 l 25 + 680.553 -412 l 25 + 680.723 50 l 17 + 603.753 2 537.293 -22 446.827 -22 c 0 + 315.88 -22 221.169 32.333 162.691 141 c 0 + 92.2197 245.667 62.7314 393 74.2275 583 c 0 + 74.2275 763 113.713 902.667 192.68 1002 c 0 + 258.154 1081.33 353.865 1127 479.815 1139 c 1 + 559.783 1127.67 606.833 1099 681.303 1053 c 9 + 680.553 1518 l 25 + 877.749 1518 l 25 + 878.499 1056 l 17 +EndSplineSet +EndChar +StartChar: afii10087 +Encoding: 1093 1093 391 +Width: 1238 +Flags: W +HStem: 0 21<15 232 796 1013> 1100 20<10 227> +VStem: 10 1003<1117 1120> +Refer: 89 120 N 1 0 0 1 0 0 2 +EndChar +StartChar: afii10088 +Encoding: 1094 1094 392 +Width: 1343 +Flags: W +HStem: 0.0697143 158.93<319 828> 1100 20G<827 1011> +VStem: 136 183<159 1119> 827 184<159 1120> 950 170.5<-285 0.0697021> +Fore +950 -285 m 13xe8 + 1120.5 -285 l 29xe8 + 1120 155 l 29 + 1011 155 l 21 + 1011 1120 l 1 + 827 1120 l 1xf0 + 828 159 l 1 + 319 159 l 1 + 320 1120 l 1 + 136 1119 l 1 + 136 1 l 1 + 950 0.0697143 l 5 + 950 -285 l 13xe8 +EndSplineSet +EndChar +StartChar: afii10089 +Encoding: 1095 1095 393 +Width: 1261 +Flags: W +VStem: 97 210.33<603.466 1196.6> 776.443 170<-15.165 438.556 596.848 1108> +Fore +97 1111 m 17 + 97 899 96 976.911 96 783.499 c 0 + 96 631.571 163.943 400.344 776.443 438.556 c 9 + 775.139 -15.165 l 1 + 946.443 -15.4443 l 1 + 946.443 1108.56 l 1 + 774 1108 l 1 + 774.943 596.848 l 17 + 611.996 596.848 l 2 + 417.064 594.798 307.33 645.012 307.33 783.499 c 0 + 307.33 874.683 307 1112 307 1112 c 1 + 97 1111 l 17 +EndSplineSet +EndChar +StartChar: afii10090 +Encoding: 1096 1096 394 +Width: 1891 +Flags: W +HStem: 1 158<319 708 889 1278> 1100 20G<707 891 1277 1461> +VStem: 136 184<159 1119> 708 181<159 1120> 1278 183<159 1120> +Fore +136 1 m 1 + 136 1119 l 1 + 320 1120 l 1 + 319 159 l 1 + 708 159 l 1 + 707 1120 l 1 + 891 1120 l 1 + 889 159 l 1 + 1278 159 l 1 + 1277 1120 l 1 + 1461 1120 l 1 + 1461 0 l 1 + 136 1 l 1 +EndSplineSet +EndChar +StartChar: afii10091 +Encoding: 1097 1097 395 +Width: 1912 +Flags: W +HStem: 0.0693359 158.931<319 708 889 1278> 1100 20G<707 891 1277 1461> +VStem: 136 183<159 1119> 708 181<159 1120> 1277 184<159 1120> 1400 170<-285 0.0693359> +Fore +1400 0.0693359 m 1xf4 + 1400 -285 l 9 + 1570.5 -285 l 25 + 1570 155 l 25xf4 + 1461 155 l 17 + 1461 1120 l 1 + 1277 1120 l 1xf8 + 1278 159 l 1 + 889 159 l 1 + 891 1120 l 1 + 707 1120 l 1 + 708 159 l 1 + 319 159 l 1 + 320 1120 l 1 + 136 1119 l 1 + 136 1 l 1 + 1400 0.0693359 l 1xf4 +EndSplineSet +EndChar +StartChar: afii10092 +Encoding: 1098 1098 396 +Width: 1386 +Flags: W +HStem: -15.4443 155.021<450.246 878.64> 950 174<4 265> +VStem: 265 170<151.004 511.708 670 950> 904.113 211.327<138.307 505.09> +Fore +4 950 m 25 + 4 1124 l 17 + 436.305 1123.72 l 1 + 435 670 l 17 + 1047.5 708.212 1115.44 476.984 1115.44 325.057 c 0 + 1115.44 52.6562 823.041 -15.4443 568.544 -15.4443 c 0 + 265 0 l 1 + 265 950 l 1 + 4 950 l 25 +436.5 511.708 m 9 + 436.003 151.004 l 1 + 436.003 151.004 520.424 137.761 562.925 139.577 c 0 + 805.783 139.577 904.113 181.403 904.113 325.057 c 0 + 904.113 463.544 794.379 513.758 599.447 511.708 c 2 + 436.5 511.708 l 9 +EndSplineSet +EndChar +StartChar: afii10093 +Encoding: 1099 1099 397 +Width: 1731 +Flags: W +HStem: -15.4443 155.021<321.246 749.64> +VStem: 136 171.5<151.004 511.708 670 1123.72> 775.113 211.33<138.307 505.09> 1086 184<1 1119> +Fore +1270 0 m 1 + 1086 1 l 1 + 1086 1119 l 1 + 1270 1120 l 1 + 1270 0 l 1 +307.5 511.708 m 9 + 307.003 151.004 l 1 + 307.003 151.004 391.424 137.761 433.925 139.577 c 0 + 676.783 139.577 775.113 181.403 775.113 325.057 c 0 + 775.113 463.544 665.379 513.758 470.447 511.708 c 2 + 307.5 511.708 l 9 +306 670 m 17 + 918.5 708.212 986.443 476.984 986.443 325.057 c 0 + 986.443 52.6562 694.041 -15.4443 439.544 -15.4443 c 2 + 136 0 l 1 + 136 1124 l 1 + 307.305 1123.72 l 1 + 306 670 l 17 +EndSplineSet +EndChar +StartChar: afii10094 +Encoding: 1100 1100 398 +Width: 1177 +Flags: W +HStem: -15.4443 155.021<321.246 749.64> +VStem: 136 171.5<151.004 511.708 670 1123.72> 775.113 211.33<138.307 505.09> +Fore +307.5 511.708 m 9 + 307.003 151.004 l 1 + 307.003 151.004 391.424 137.761 433.925 139.577 c 0 + 676.783 139.577 775.113 181.403 775.113 325.057 c 0 + 775.113 463.544 665.379 513.758 470.447 511.708 c 2 + 307.5 511.708 l 9 +306 670 m 17 + 918.5 708.212 986.443 476.984 986.443 325.057 c 0 + 986.443 52.6562 694.041 -15.4443 439.544 -15.4443 c 0 + 136 0 l 1 + 136 1124 l 1 + 307.305 1123.72 l 1 + 306 670 l 17 +EndSplineSet +EndChar +StartChar: afii10095 +Encoding: 1101 1101 399 +Width: 1088 +Flags: W +HStem: -22 156<238.133 538.8> 542 146<202.775 690.616> +Fore +202.775 688 m 17 + 690.616 688.039 l 1 + 678.448 769.045 651.243 836.366 609 890 c 0 + 567.667 951.333 483.667 982 357 982 c 0 + 252.333 982 147.333 953.333 42 896 c 1 + 42 1053 l 1 + 141.333 1099 244.333 1127.67 351 1139 c 1 + 519 1127 646.667 1081.33 734 1002 c 0 + 839.333 902.667 892 763 892 583 c 0 + 907.333 393 868 245.667 774 141 c 0 + 696 32.333 569.667 -22 395 -22 c 0 + 274.333 -22 162.667 2 60 50 c 1 + 69 255 l 1 + 165.667 174.333 267.667 134 375 134 c 0 + 501 134 586.667 174.667 632 256 c 1 + 685.227 323.661 708.341 418.995 701.341 542 c 1 + 202.775 542 l 1 + 202.775 688 l 17 +EndSplineSet +EndChar +StartChar: afii10096 +Encoding: 1102 1102 400 +Width: 1890 +Flags: W +HStem: -29 156<874.533 1136.27> 542.326 142.003<319 507.203> 991 156<877.133 1138> +VStem: 136 183<1 542 684 1117> 507.203 193.797<403.867 559> 1310 195<404.6 711.4> +Fore +514.186 684.329 m 1 + 529.301 804.165 568.238 898.054 631 976 c 0 + 721 1090 851 1147 1021 1147 c 0 + 1170.33 1146.33 1290.33 1089 1381 975 c 0 + 1463.67 872.333 1505 733.333 1505 558 c 0 + 1505 382.667 1463.67 243.667 1381 141 c 0 + 1291 27 1171 -29.667 1021 -29 c 0 + 851 -29 721 28 631 142 c 0 + 551.768 240.401 510.506 377.179 507.203 542.326 c 1 + 319 542 l 1 + 320 0 l 1 + 136 1 l 1 + 137 1117 l 1 + 321 1117 l 1 + 319 684 l 1 + 514.186 684.329 l 1 +1021 991 m 0 + 910.333 991 827 944.667 771 852 c 0 + 724.333 775.333 701 677.667 701 559 c 0 + 701 439.667 724 342 770 266 c 0 + 824.667 173.333 908.333 127 1021 127 c 0 + 1109.67 126.333 1182.67 172.667 1240 266 c 0 + 1286.67 342.667 1310 440 1310 558 c 0 + 1310 676 1286.67 773.333 1240 850 c 0 + 1184 943 1111 990 1021 991 c 0 +EndSplineSet +EndChar +StartChar: afii10097 +Encoding: 1103 1103 401 +Width: 1248 +Flags: W +HStem: 0 21G<21 247> 434.628 162.22<609 765.943> 968.979 155.021<323.802 752.197> +VStem: 87 211.33<633.214 970.248> 765.943 171.5<0.834961 438.556 596.848 957.552> +Fore +765.943 596.848 m 9 + 766.44 957.552 l 1 + 766.44 957.552 682.02 970.795 639.519 968.979 c 0 + 396.66 968.979 298.33 927.152 298.33 783.499 c 0 + 298.33 645.012 408.064 594.798 602.996 596.848 c 2 + 765.943 596.848 l 9 +767.443 438.556 m 17 + 709.965 434.97 657.281 433.757 609 434.628 c 1 + 247 0 l 1 + 21 0 l 1 + 21 0 432.109 449.397 415 452.586 c 1 + 126.339 506.375 87 667.895 87 783.499 c 0 + 87 1055.9 379.402 1124 633.899 1124 c 0 + 937.443 1108.56 l 1 + 937.443 0.555664 l 1 + 766.139 0.834961 l 1 + 767.443 438.556 l 17 +EndSplineSet +EndChar +StartChar: uni0450 +Encoding: 1104 1104 402 +Width: 1216 +Flags: W +HStem: -26 157<298.443 783.467> 539 144<246 866> 985 157<355.133 691.039> 1268 374<502 681> +VStem: 259 422<1268 1642> 866 174<630 812> +Refer: 165 232 N 1 0 0 1 0 0 2 +EndChar +StartChar: afii10071 +Encoding: 1105 1105 403 +Width: 1216 +Flags: W +HStem: -26 157<298.443 783.467> 539 144<246 866> 985 157<355.133 691.039> 1360 203<247 450 660 863> +VStem: 247 203<1360 1563> 660 203<1360 1563> 866 174<630 812> +Refer: 168 235 N 1 0 0 1 0 0 2 +EndChar +StartChar: uni0400 +Encoding: 1024 1024 404 +Width: 1260 +Flags: W +HStem: 0 176<350 1083> 729 176<350 1033> 1313 176<350 1083> 1716 374<569.5 748.5> +VStem: 152 198<176 729 905 1313> 326.5 422<1716 2090> +Refer: 133 200 N 1 0 0 1 0 0 2 +EndChar +StartChar: afii10023 +Encoding: 1025 1025 405 +Width: 1260 +Flags: W +HStem: 0 176<350 1083> 729 176<350 1033> 1313 176<350 1083> 1677 203<315 518 728 931> +VStem: 152 198<176 729 905 1313> 315 203<1677 1880> 728 203<1677 1880> +Refer: 136 203 N 1 0 0 1 0 0 2 +EndChar +StartChar: afii10054 +Encoding: 1029 1029 406 +Width: 1297 +Flags: W +HStem: -17 164<338.667 837.867> 1369 163<435.993 753.733> +VStem: 89 206<1023.33 1289.2> 886 211<181.933 591> +Refer: 52 83 N 1 0 0 1 0 0 2 +EndChar +StartChar: afii10055 +Encoding: 1030 1030 407 +Width: 990 +Flags: W +HStem: 0 152<92 280 478 670> 1337 152<92 280 478 670> +VStem: 280 198<152 1337> +Refer: 42 73 N 1 0 0 1 0 0 2 +EndChar +StartChar: afii10056 +Encoding: 1031 1031 408 +Width: 990 +Flags: W +HStem: 0 152<92 280 478 670> 1337 152<92 280 478 670> 1677 203<76 279 489 692> +VStem: 76 203<1677 1880> 280 198<152 1337> 489 203<1677 1880> +Refer: 140 207 N 1 0 0 1 0 0 2 +EndChar EndChars -BitmapFont: 11 339 9 2 1 FontForge +BitmapFont: 11 410 9 2 1 FontForge BDFStartProperties: 36 FONT 1 "-FontForge-Tahoma-Normal-R-Normal--11-80-96-96-P-62-ISO10646-1" FONTBOUNDINGBOX 1 "15 11 0 -2" @@ -7688,8 +9060,150 @@ BDFChar: 336 370 8 0 6 -2 7 `l?$<`l?#G#Rg\5 BDFChar: 337 371 7 0 5 -2 5 bfn;Tb^9[) +BDFChar: 338 1040 8 0 6 0 7 +3&k_jD#VGo +BDFChar: 339 1041 8 0 5 0 7 +pqX]?bfn<+ +BDFChar: 340 1042 7 0 5 0 7 +nBB,Gbfn<# +BDFChar: 341 1043 6 0 4 0 7 +pqX\\^qdb$ +BDFChar: 342 1044 8 -1 7 -2 7 +56*J>1B9321B:nb@fZOZ_19@P +BDFChar: 343 1045 7 0 5 0 7 +r4p,C^qdb` +BDFChar: 344 1046 11 0 8 0 7 +aae.,4ocQ&4of?uCB2J, +BDFChar: 345 1047 7 0 5 0 7 +p^@RU$k*R> +BDFChar: 346 1048 9 0 6 0 7 +L5qk:o&@N< +BDFChar: 347 1049 9 0 6 0 10 +6oY1$Nh3iQikg9I +BDFChar: 348 1050 7 0 5 0 7 +bh1S;nCZC; +BDFChar: 349 1051 9 0 6 0 7 +5%\D=AnGYp +BDFChar: 350 1052 9 0 7 0 7 +_;k:'R=Tp? +BDFChar: 351 1053 8 0 6 0 7 +`l?$t`l?$< +BDFChar: 352 1054 9 0 7 0 7 +4D)LK_o$(K +BDFChar: 353 1055 8 0 6 0 7 +rl2st`l?$< +BDFChar: 354 1056 7 0 5 0 7 +prpt+pqX\\ +BDFChar: 355 1057 8 0 6 0 7 +4D)CE^qaPE +BDFChar: 356 1058 7 0 5 0 7 +r%KfY0JG17 +BDFChar: 357 1059 7 0 6 0 7 +`l;h23#HUB +BDFChar: 358 1060 10 0 7 0 7 +(k15ogY7/o +BDFChar: 359 1061 7 0 5 0 7 +bfk;c0R1gc +BDFChar: 360 1062 9 0 7 -2 7 +`l?$<`l?$u!s8N' +BDFChar: 361 1063 8 0 6 0 7 +`l?$ +BDFChar: 368 1070 12 0 9 0 7 +c[aZ`fYI9tfYH.TfYGg` +BDFChar: 369 1071 8 -1 5 0 7 +5%\D=4uR#m +BDFChar: 370 1072 7 0 5 0 5 +GRSuDb^9Bj +BDFChar: 371 1073 7 0 5 0 7 +(i[:cbfn:U +BDFChar: 372 1074 7 0 5 0 5 +prrNWbkM/< +BDFChar: 373 1075 5 0 4 0 5 +pqX\\^q]pM +BDFChar: 374 1076 7 -1 6 -2 5 +*]>o7B)fcd +BDFChar: 375 1077 7 0 5 0 5 +Gg-*$^jH+^ +BDFChar: 376 1078 10 0 8 0 5 +aae.,4of?uCB2J, +BDFChar: 377 1079 6 0 4 0 5 +n/*hr)"7M* +BDFChar: 378 1080 7 1 5 0 5 +LmY^9aG9fr +BDFChar: 379 1081 7 1 5 0 8 +Li +BDFChar: 407 1030 5 0 3 0 7 +n6fX3?smC3 +BDFChar: 408 1031 5 0 3 0 9 +n,Vrc?smAM@.4-r EndBitmapFont -BitmapFont: 12 339 10 2 1 FontForge +BitmapFont: 12 410 10 2 1 FontForge BDFStartProperties: 36 FONT 1 "-FontForge-Tahoma-Normal-R-Normal--12-90-96-96-P-70-ISO10646-1" FONTBOUNDINGBOX 1 "16 12 0 -2" @@ -8199,8 +9713,150 @@ BDFChar: 336 370 9 0 7 -2 8 _o'C0_o'B(49Pig BDFChar: 337 371 8 0 6 -2 6 `l?$<`m0#9"onW' +BDFChar: 338 1040 9 0 7 0 8 +(d'omAnHM0_Z0Z: +BDFChar: 339 1041 8 0 6 0 8 +r4p,G`l?$]/1G^gs_Z0Z: +BDFChar: 350 1052 10 0 8 0 8 +_1:QrpON9oh13Ut_19@P_12Lc +BDFChar: 351 1053 9 0 7 0 8 +_o'C0s22al_Z0Z: +BDFChar: 352 1054 10 0 8 0 8 +4of'm_19@P_19@P_16"q4obQ_ +BDFChar: 353 1055 9 0 7 0 8 +s22al_o'C0_Z0Z: +BDFChar: 354 1056 8 0 6 0 8 +r5Qar`r*Wf^]4?7 +BDFChar: 355 1057 8 0 6 0 8 +5%)1A^qd`n4obQ_ +BDFChar: 356 1058 9 0 7 0 8 +rtlRi(`4),(]XO9 +BDFChar: 357 1059 8 0 6 0 8 +`l;h23&ha/?iU0, +BDFChar: 358 1060 11 -1 8 0 8 +$ikd-beVHCd`\>Cd`\>Cd`\>Cds6p!g +BDFChar: 363 1065 13 0 12 -2 8 +`\>Cd`\>Cd`\>Cd`\>Cds7cR2!#P\9 +BDFChar: 364 1066 10 0 8 0 8 +n,P-B0E=<;0n;!/0n;!/56(Z` +BDFChar: 365 1067 12 0 9 0 8 +^qdb$^qfl``k]U0`k]U0r4i:4 +BDFChar: 366 1068 8 0 6 0 8 +^qdb``l?$o7AnM(\ +BDFChar: 375 1077 8 0 6 0 6 +I)a2*^rCa% +BDFChar: 376 1078 11 0 8 0 6 +aae.,CB-NuCB/,Maaa?k +BDFChar: 377 1079 6 0 4 0 6 +n/*!](`;`B +BDFChar: 378 1080 8 0 5 0 6 +KT)G.jMZ]O +BDFChar: 379 1081 8 0 5 0 9 +82($sN1@99`.S*j +BDFChar: 380 1082 7 0 5 0 6 +bh1S;f\"CJ +BDFChar: 381 1083 8 -1 7 0 6 +4of0pAcQECAcQEC`W,u= +BDFChar: 382 1084 9 0 6 0 6 +`pW9Gf#G]0 +BDFChar: 383 1085 8 0 6 0 6 +`l?$t`l?!u +BDFChar: 384 1086 8 0 6 0 6 +I)a1G`lCd`\>Cd`\>Cd`\>Cds6p!g +BDFChar: 363 1065 14 0 12 -2 8 +`\>Cd`\>Cd`\>Cd`\>Cds7cR2!#P\9 +BDFChar: 364 1066 10 0 8 0 8 +n,P-B0E=<;0n;!/0n;!/56(Z` +BDFChar: 365 1067 12 0 9 0 8 +^qdb$^qfl``k]U0`k]U0r4i:4 +BDFChar: 366 1068 9 0 6 0 8 +^qdb``l?$SfJ(NWa1qZT +BDFChar: 369 1071 9 0 6 0 8 +I`BCIIPteM`W,u= +BDFChar: 370 1072 7 0 5 0 6 +GRP".bfkG7 +BDFChar: 371 1073 8 0 6 0 8 +4CGu&`l?$o7AnM(\_Z0Z: +BDFChar: 375 1077 7 0 6 0 6 +I)a2*^rCa% +BDFChar: 376 1078 12 0 9 0 6 +beS(GD1FhND1HJRbeO2Y +BDFChar: 377 1079 7 0 5 0 6 +G`3%j%#fE2 +BDFChar: 378 1080 8 0 5 0 6 +KT)G.jMZ]O +BDFChar: 379 1081 8 0 5 0 9 +82($sN1@99`.S*j +BDFChar: 380 1082 8 0 5 0 6 +bfn`/fZ_P> +BDFChar: 381 1083 8 0 6 0 6 +5%\D=AnK$_ +BDFChar: 382 1084 10 0 7 0 6 +_rp4;gV^o/ +BDFChar: 383 1085 8 0 6 0 6 +`l?$t`l?!u +BDFChar: 384 1086 7 0 6 0 6 +I)a1G`lE*rYG +BDFChar: 390 1092 12 0 9 -2 8 +$ig\9It5bYbeVH^*6@j[f +BDFChar: 339 1041 10 0 7 0 10 +s+#WMr.9KNJV*e" +BDFChar: 340 1042 9 0 7 0 10 +r.9NPr.9KNJV*e" +BDFChar: 341 1043 8 0 6 0 10 +rd]NLJ:N0#J:N.M +BDFChar: 342 1044 12 0 8 -2 10 +*rllQ+TNYc+TNYc+TNYc+TOe.s+#WMJ:IV" +BDFChar: 343 1045 8 0 6 0 10 +rd]NLrd]NLJ:RV! +BDFChar: 344 1046 16 0 12 0 10 +Jd=[S+s7L`$@i?]$@iaS+s92`Jd;>V +BDFChar: 345 1047 10 0 6 0 10 +G_?,""?6Mc!ebdu +BDFChar: 346 1048 12 0 8 0 10 +J:N3$Jq/N)KRel/OFX!STRah.J:IV" +BDFChar: 347 1049 12 0 8 0 13 ++oiS_!!%P"JUi?&KRe`+Lk(S;TR`\c^jprc +BDFChar: 348 1050 9 0 7 0 10 +JqSrAT\tofKS"aT +BDFChar: 349 1051 12 0 8 0 10 +%tG4A+FkSb+FkSb+FkSb+FkSb^jlCb +BDFChar: 350 1052 12 0 10 0 10 +^gNh.TV.DiOW]N(MBIQpJ09@bJ04gl +BDFChar: 351 1053 10 0 8 0 10 +J:N0#J:N0#s+#WMJ:N0#J:N0#J:IV" +BDFChar: 352 1054 11 0 9 0 10 +*WR>`5_+AMJ3\WMJ3\WM5_(!X*WQ0? +BDFChar: 353 1055 11 0 8 0 10 +s+#WMJ:N0#J:N0#J:N0#J:N0#J:IV" +BDFChar: 354 1056 8 0 6 0 10 +pk46NJqWoLJ:N.M +BDFChar: 355 1057 9 0 7 0 10 +*[*e!J:N0#5Tq0K +BDFChar: 356 1058 10 0 8 0 10 +s*t@T#QP,1#QP,1#QP,1#QP,1#QOi) +BDFChar: 357 1059 10 0 7 0 10 +JUp*R+s[j.#S:AD +BDFChar: 358 1060 13 1 9 0 10 +#QR$g8H=QsLk(;3Lk(;38H:pS#QOi) +BDFChar: 359 1061 9 0 7 0 10 +JO2[K(`4)86:-5' +BDFChar: 360 1062 12 0 8 -2 10 +JH16$JH16$JH16$JH16$JH16$s*t*"!.Y%L +BDFChar: 361 1063 11 0 7 0 10 +JUrB'JO)L$!4TY`g +BDFChar: 338 1040 11 0 9 0 11 +$ign?&c`OE+TNYc+TR"B5_)+MJ3\WM +BDFChar: 339 1041 11 0 7 0 11 +rd]NLJGb"MJUrFN +BDFChar: 340 1042 9 0 7 0 11 +r.9NPK`$FQJUrFN +BDFChar: 341 1043 9 0 6 0 11 +rd]NLJ:N0#J:N0# +BDFChar: 342 1044 12 0 9 -2 11 +%tG4A+FkSb+FkSb+FkSb+FkSb5_/mMJ3\WM +BDFChar: 343 1045 9 0 7 0 11 +s+#WMJH(.MJ:N1M +BDFChar: 344 1046 17 0 12 0 11 +Jd=[S+s7L`$@i?]#65*]&jRW`64e_S +BDFChar: 345 1047 10 0 6 0 11 +G_?,""?6Mc!Wn%" +BDFChar: 346 1048 12 0 9 0 11 +J3\Y#JO"fPJj=uSLd7%eO?fI(^d*E8 +BDFChar: 347 1049 12 0 9 0 14 ++TNYc*WU^UJA?_$Jj=oQKKt>YO?emmTKp:XJ3X)7 +BDFChar: 348 1050 9 0 7 0 11 +JV&Q2OJ(NnLkLA2 +BDFChar: 349 1051 12 0 9 0 11 +&&8`A&3pdl&3pdl&3pdl&3pdl+@*_- +BDFChar: 350 1052 12 0 10 0 11 +^gOrcTV.sNOW]c/MBId!KHPdfJ09@b +BDFChar: 351 1053 11 0 9 0 11 +J3\WMJ3\WMJ3a.MJ3\WMJ3\WMJ3\WM +BDFChar: 352 1054 12 0 10 0 11 +*rmF65X9iBJ09@bJ09@bJ07*B+FkO6 +BDFChar: 353 1055 12 0 8 0 11 +s+#WMJ:N0#J:N0#J:N0#J:N0#J:N0# +BDFChar: 354 1056 9 0 7 0 11 +r.9KNJUrFNJ:N0# +BDFChar: 355 1057 10 0 8 0 11 +*rmF65QH<7J,k*"J,k*"J,hh7+FkO6 +BDFChar: 356 1058 10 0 8 0 11 +s*t@T#QP,1#QP,1#QP,1#QP,1#QP,1 +BDFChar: 357 1059 11 0 7 0 11 +JUp*R+sI^8#RCuL +BDFChar: 358 1060 14 0 10 0 11 +"98Q)5Cc-eKHPpjKHPpj6pNte"98Q) +BDFChar: 359 1061 9 0 7 0 11 +JO2[K(`4),,XOhK +BDFChar: 360 1062 12 1 9 -2 11 +JH16$JH16$JH16$JH16$JH16$JH5_#!.Y'" +BDFChar: 361 1063 12 0 7 0 11 +JUrB'JUp*O!<-_L_,XRO9k=]O9gpRO9gXRKHPo_ +BDFChar: 369 1071 11 0 8 0 11 +++PJa5_)+M5_'u-++OWI&:bmR5_+B8 +BDFChar: 370 1072 8 0 6 0 8 +4@0*56@sfDH2mpF +BDFChar: 371 1073 10 0 7 0 11 +!ZW=JI):GcJUp-M +BDFChar: 372 1074 10 1 6 0 8 +pk4E +BDFChar: 398 1100 9 0 6 0 8 +J:N1FKS"f/p](9o +BDFChar: 399 1101 8 0 5 0 8 +E/4W"HisS.Du]k< +BDFChar: 400 1102 15 1 10 0 8 +LB*-\O?emmn3E(#O?eVPLB%;S +BDFChar: 401 1103 10 1 6 0 8 +4@FjU6p)__KE(uP +BDFChar: 402 1104 8 0 6 0 12 +&.f*I3(/@Mrd]Mc49,?] +BDFChar: 403 1105 10 0 6 0 11 +6pq#77"U$iJ:KsK +BDFChar: 404 1024 9 0 7 0 15 +&.f*Is+#WMJH(.MJ:N1M +BDFChar: 405 1025 9 0 7 0 14 ++sI$eJ:N0#s+#WMJ:RY" +BDFChar: 406 1029 9 0 7 0 11 +5!a^LJ8bu!!Q)rf40 z6&=S>bdWks9Z_5B6r4eE7i6Rb9Gy`HtBejpn|z;hlZJ}(n?HW}^hxe{?>X=Lp7*@l zZPSmx;ad(1&Cy!R9zv{96U!#d+&$yEhY8vHHX$?rIKkLEnTtlvC&)ZB;@`!LezLd344|PXGYIy?<_h^-pMF*r}rfq zOF8c$Iuh?c(iA>M{4rqY*2-zm(5sRFP&tbp_Qijj1Vj0;X-bBiTuQ2}>Vw43^Caxt4=57<)$yVi$ zz(?S*0+yD4j|Gc?n@FZA;`25CMd2@`P?X4c;S18h_md`Z6j6kBGFFZzvXD)Niut6G zLHG#w#uB4s#%DHZ5_++2B(7E5DKvXaav3&@>xJy}bhCU=u1w2rJM zRrFDEKY5%!Ozxpu=woCNSwrumo9F{HlRiT3A{(IN^W*@jBX^Kxw3#}nm)=j75{To;j4zX4gbpsGC~>Q98oo*VZ@#hT_gH3;xY;{ zN-}0<%+8pXu{PuJOexcxIXv^q%z2shnfvEto*6l0$8)QQm>Mn5w8xzS&aF^!orW}nmTY|l!{nx9pj)tt2_>rYvK z$@(;_H`|@PI(u*Sr`i8@SzQ^fnXa|2hSrvdS(7!tpCGz~u}X$jBAW;q7|XLT-mH(W z^?xT!75gwQ(8se8zPrQ^FdnUs5$fD4`g|`N`+vgvPsL9#PJ{V5o!@=pCnSO-!`wDk zc63a1lvzx6*hWw-it^D#Tz=kYF+GjWIkn^6{1>EQIWzD6%{*T&{UiNn|8VYwvm4z4 zXNpXUA2}p)nK;H*lH*DV^#c=NQ5|&Avj8;w{_7!YV@`KnP5V7O)b8&;x*z2M1|{<)FPUn7oHp8;A3nq zKA9H{R5o)KnjGP>(TStNN5qy6rT?L;-lTVOeOn9@qT&iuO{Qh^uLtIite-*O3a6tl z?s(02mL3*ksPDu6_pYkkF~w%{l~68ZWl>{h%+NK&OHPAun{Ffe$)SXd;jO(aGCx4F7R^S&pHaY?fnY|(054Zm*oFeFp1|$CI;E@TvVha z$J3}t7(OXIH#$GjmXnrAwOm(r5zWm>OHPt=^XTjMe*Dbs&0DuL51&-Iv~K-`cOQFg zH{J98%k76&K0Ej0z583970>5Y?zpXHTXKBc0Oe!Jy zdHH$F--`JBykeSa(~@lto|7fntYlJ4Zjur{Y*>0^@~AMCnnjVnv&*L@+Y^(Q8RHX^ z5)+0*80h#ToWSvt(GffHFTX!w+4}a|6oMW79lkH>H{WisnN5l;@^m1Q#7A{SvO|&e zfj%CkkIVepNpYcg285iDm%a~8QDI#+2X^kTZ50Z;`mYy1U_vf*W6=)(Pr@YeAlBpt znVb^#h-Wb#u8&!vepwe%sPi=X{lae~Rrf1NmNF@hoNb;tm`mdxp6tGP*OT|m%^l`U z_QiaJ?6>wKTKa79Z9B#}mdzBd?R%83Vmx^W@{0$=USc9cStg*icp4MWn|X1xl%58I zrVBQ!7#$N8otKrHmy%z^jpoxwbLqLs{Jc49$HrzRsOH?65BfeXyYuS8lo*xcM@(6u z%^%D4x6=3}hwKL)r}DIvEKB(0yI)&vO^Av5j7IVY3}utzXWy-9Yv*5MlTxxLUpf1R z>_yKmnwlg(;Oal%d+wQ%n1?BS$hL7!{zJQ;ZP_?KhF1jC3uXxgme{A~fN_CD#5TU~joPmMnO$Afw}*1Pn0Vn76%#I;2pkJcUM9XnA_@QC^2d7Ge!7a`7@R4q8`B zU*mp0KCrf@zn{{X^b!Xqn4rPAT|5L1iEzp6lp>lwT99q2QJRB~aK&>-$Vd-nnx2%* zt@)hB?wcqEw$g%fcu=(n3TJ`N| zbS;11UV8hJD{j3aBTBR%JCjoqVV_q0#=XmG=v?|>v|2RvyONtyjl!6K6Zucdv&1tv zNfw03EIry>;i-8s@uC?OiXY8(O^ftTnx1CnW8krQT=wa3w2)|9es1b@w&&*Ni#oTSynpxOrUvUh$KUj=%UJi}gbPm;63qJz{;5 zZl&@59ti!6j6m;7XjB?A4XfWs^{lQle?TRaG?Jbco|n%^G@io+m#*85O_tE7@EhYM zjZ0eokTWwY&d95`tSi4|Z{rO-KYYTRIdi8DJ?8tj$uMlz%@a>-c)({)T(hw*EiNUD zaw8ncs|(jP4G%LIEaGQxh=M^3PfyJ*EV{yS%h(J_oTB|~Cl2d6mRTCye{AuU*ZM&cME?c!__a1tC0#C8*+{gOA60E{1ocon}Xrgk8Cxi-C?Nq&U8r(~9JA4aH(%?*BqZ1@-%e(J#SpD9m03vyaf*C>m;`gg_e=w0v&h z2m)Qy>c)@P&t11+-KguBbzk!Ay8pEu+qOOZ{Fc=l9^2XUkT7pTK|Zg11q)3Ha>>!M5ZNew1fW8wwF?VcK4mM zU?CGL%P}?@LwRgbrA=*A+C&L$`_A`+?}Tvs#od&D$QMcJ>Aq@gt-qHGC&Bd^e+~?c zx;H2DF}#CkPU`mYTpMkpw4b)MaeL^?7oVYAeE%s-C4ppfN=Oja!RclWFw*(Rx*|H0 zroifeaKwgCj&+T`d4eL$#kw1UPgdGD{4>G|5T@vi1Tgx2kP!+CR1yXLdEb4AFkgdE z-a`9|5d(oDB>8R>reH2SUHnyF$IULwzy1+#)vZ}WM>>3CJLw!cr*q+DT^&y*Yrc8n z2dHFLoY;79ji+$r{JiuWr?0DPwm@B8aZ!UbN`1-=hSK7;LWkar+G;Tre!Qz<(ug_f-zIfK# zCEC0)`WJUq*`IG(Y`b^v>v_}1|C#v5=42Nw`|Pddqf-(`j!aA$z5K1umK9~Y+`J<_ zMG3!m3r_X)6Hh0l`LgMIsmV`2L5ETEmV3jM)DiRpW>z>X|D#Y2tKJqk9^Yx9B6!St z=N93JkZmHr|M?|a8};$DjUVkhjrTw6=EaF&Q90tiRhY%h8xbi*MaD#@GVh8=meBN7 z(7vasN?+JRpWe1zxT$LW?f<$e%jUa6m`8n-n>CM49qY`DBgGr! zBWW_R3>RAh+Dge-WMPj^1L_7UHcdC&L|2MoxSfLxsk(M4v;R7!2NJ`IVNi;9r@mKnfh~lC*p4hde zrLS&R%!Bv%F8pDK`tVb)Pnd4>nYq1dr_a9eiHWw5drooy zjb~?0nt0vsHr_aC(oAm8ORHX>FYM_5VFy0E{r#t?Fxxkcx*k}uul4Q+=%y8P?ut!J zfhe5W^ST9@0=ChdoCIOf`7xT5PLo;FBjn~32`)SeaXvMEV)$#!jx(?HJ$7nz)8CZq z*G(K@8Z~2qwr&C)^8$ART|@<$PG3B47Pm{{eAi?@c9FAOQ95&CdRf(!T-f&Fo`KRV zEk+pbxm2p9p&0+3MTftSa|^BhTe^nQovmG~W^o!GTW+8?(wpckdNaL+-b!cF+mN_! zr{%N)op2?cNAIBX=>m%Ok1nQn(ki-y-bI(vWpp{cTmSXmJ#-blSN|p7TDp!_)Ae)% z)%0KR)zUgzkBDoajkJm0NAIUF5Pgt7L^soB`Y?TjTDe(0(obX6GQa*1D7=qfvO72=$&g;-~Y zSZ9Y=XNOp4hgiEptX(12t`KWiNPSmGh$|$+6_Vi!%Fu8b65D%H)TX$qy-$A5tbi z#5q62IX}cXzfc>vEC{hK2<^BaB%~lDq#z`uAS9$9B%~lDq#z`uAf$d_NJim+jLFWz zkdVTVkiw9V!jO={kdVUsfYat)vPPD7Sam~eJz?dliExOTt++;T;CcrFsP zkA;}I5V96R&V(8VX3Ve2wQTU6#y)J|5dmHsywBHUVeW3s-Ho{iF!vudxuD0_Zb?|- zUk>_my1{qmR}#-+&WE+7>cGA>c;o6O4jL`4D}^?%K%2dF%RyfcIx?9zqkdv>a2E8q z)&B#T4SsX*DFn4Ti&39$4GGpbi%zwLOz~eJFZeIODrdp*rTRMC3h25LSVbn#HNXaM z*~Vf~--)+jqYL9dZ7g-^^MO@l7-kLAccOsnF>&jcagT(&`x{1xfm3U17#DRp2P0eUeQ#rI*bCV20i0N1 zFV4o~Q5*d1Ou{d5golDBJZ%OVL4jOF%uJ1+uJ#^nyd&%$@(NuItRW*H z|H`HWdXIN;(Su@3(oIXV$iulv~`AZD~F^IkFN|A}86fAF@-~Ih*HdDE1Dmvo! z>5I;}`;NH#6p<*BFKbh!-Jtpvr8ss|SEVcVL4QY2yFSZrD(cis#fnN4<2!%YTvvDc z<`=#Co%7BUOeiF%jq&Td-ODxY(QDU}VE%J6-du-re4sulY&2N!PB|=`3=&Tt&J$I(m9F_lc$X=X4pJmn?hU z+087&cplk5Zu9A*KaJa51XC&sOyK(J*l9^3lDszhuYi1nU87_#R}FsEXi7Mv2hqDe6A9jZxwCO-WtUN7hUl!=d$cNVXjp^a z)2`b=MFhH+!aG#V59@MQhJO6L#xO?8%X<02O;weZL+wYq{O3u#q^sU*H_4}2vMR=a zsHXN_x8+>d_Xm~^?F%T}G5BECo9r&Fr=zo4H4@c)@Yv?8uZjPL+ zmBp^g%1&7#vb@^aeI!4?#k9PUajDkn7u~)i#U5ECvYs(nf|8Z^JVYnLQQo= zwxH2uFK;*MXU5AH^~C4W>PTQ6GUhrrYy*Cwgc-QuK3DB*mkropFkcq;sYX9W!F2iN zd7hNZ%rd=!T*-`KKqQY{bKu0%uXH9XSHh4?tF_J}=6sKA0Eb|%be|7s?moBvKs&TG zAZEQadm~%l-*?)enIvM86HAI~751YS#wnJbTJ{q-vGtN5x0iHOt2|MKf2KUrW8{fZ zc>0+~uJSP7RRZDb5BRt`IDF;*SNIxO_y(d^W8oXTjh{Z|wPqH*9p^3dd|ub!=+*Ox zOjX0B=%psZ;OK=ua%b1!qrFEDcXhInfjJ_3VT6U9Uw{4jc2*{J%~@b-q2N_73tq!7 zf>#a&FI!nu+0I^-dh{y4h+g$l^pgJ-z03>H)kz~Bg$ z|4Rhx(aFvZ5!?|_6;-#QM^^y>tPPIfgJ%0OL@>j;)EMX>sd2v#mduxU^Pv(e=d ztPYA`qh5~QK+WLA% z*kp@LEQ&QT(bAh(;^zd#TI>mvNtlwt_u;y|h7&A3dZ~6d2!c#0uOg(WQ9^8A9)~2Qu&vU#dgPW3+WNoQsvkYq##X32l3}fVJ@7cTUYHiZ^ z(w3g`M6*iFrX(}5+T)@l)TToVbK*>bu1{@!Q*%pCb5nh7jlRy(G$kcm6>3Wpo0laT zji9uzjIKSjJtA`MCWpr<5f7VYK)5**&>&GP_*A*+x3>TM``|gjuKBvqE!(%!t^oJ)RdMbr9@&g=hi%cU@9unsJx#5xNT}DX z&YYpSrK8T+qibJX3yDl@ZMD%vjkd-^wau}#If1fwdu?O8u3dtow6xTLcdaz=yy31_ z|Lv@JU4L8=oV7AI);9Gh5>?a-_6-g84eX&v?sF(*EJZ7Z_$2l!^9NQJ+;2H=weC_> zs)RK?bAMe;$Ba~){&2O{daYoe!zLN(q_~@N0#8JG#&@22=jjGbeNA{2CO^m2uj2$&WO|Le%6MSGscSYDx+6a<8<|2x6qzg zD_pCu@G%z`m_I9Oofw|95nf;7(ZW<}2vdZF5A-8$db1YZpwF*uYN-)zrFtJ<8+iFC z)h*Isuc)?`DtIC?*E<`mZ`sEy6&An2#KyzRfPQKEQ;WZbsy!@+ zs43*s@Zz45vem6${N+z(#i|giYPBlfVIMm(O$z$rqEZC^GPCXuCZ3vDhM2m{A`*+V zspOQk9_MLmH+jGREJ9=RjXuw%WT7))$)bLMz&h5Qw&#W}Her~K(+Oo_p=wfOHB@cbE%F)z7Be30yrky_ zZ_Ru5WEC_0?Uyox(;D1tjlNN)wRi8kk!a6NhQSGf65UFAhDeIkQ-sM#OlE<2d`ZLM z1t!OY$-P#N1e6P;2|Z7kRcacXCt7arRrD>GY6fKrQy7J%LYYDfq>A!7f3Mk0P2s=F z6~hzX^b>(t+1A5)6pna`l_a4iaZ0$-#}u=$blINJDU@HW);QA?pT19H=#bf=Vvok^ zQc_}7``AWXHhY*B;dO62k~A?fmYkPLvT3uaR|gg^5&d{gWJcs?>s#@@bG8Y7(US)o>W$=w}1(b zz^jAxSf)@y@puA!B*-l9(5I^IvYMdQj0>`g#?nfyiQPM(Zz$j!db7(ii()I#H4mm1 z=Fck2Eh!TX$SpM_%t#Es_KgyKO>NUtrJ^CJ*2tRL+Di#$K&{C1_8N_2wy=b9jLG5e zF|uy&QkEHB=I^CMZ<~$nB_-8mrKM%ns!CNe+`8C)b+l1E@6p@A8csemz5K27x-IWc zEUmWAU8WkSYH3UwA(i&di=hG!m{A`lC!pmBq?`^v$00mfyiRDMZ%;4R zbC7rIv4fiQ3L)(8=Y*&}EBpGT&*&pWyl4#ki-7)TOS;2oq!`P42$2dvVc!EF2A_@1 zC#HT-FPMHY-(+I*!@k5FXJ~%EWzhVv!2F27g1WFUwjeT+E%5e!o*Y(Zu`tSz2|6Y5 zc(S9;YNhNi%xqyI;n>&nh?DTT@+Cx~J6h)*?-sPb6Jq*-=u*NYzzW0x=|DE%2Ce~S z0rP?7zfyr1`>fxAQvbGrUEm8+kgeY-9QcS004z8PXRa> z%b$Qh6OC9tz{PO@*0=Nm7YMP!5>^`!1H=QVz(~LaTmh5ofNy{w31Qw~Gr_zz2(b+VU~=0ifYBxcU~an=mIh?R>NDY#_K_g^TkiL8n9Ues@{skaxDEq<(+?%rRZh;SF-*A}$z%l4jpc;4xz?o5aHvKbzFri-o z=Lq4LeD+--E)jq$bI2JSm~eu^RwG{x#qb0C(k~B@dV75qmrs z^WOuAKi&_Y!>$E*u8_dKcL@{$lYnc1TLb>#0Ej3c?V2tO_=m#~G`|$gP0hp``|aAP z%#B|Ox^d7O9M(Zo**N;Laa?fB@?}bpR?>RtD~{JPGJ^Lkz|g?GjEOE>7 zDrc}zP>rl=^pUXOoCkt)47#iU?TH|5kV|L08RDNGa_NlYLE>OVe)4;(ha-3Y+Q9F*bK0S$l`*aaXIx%~j5ii5v#p9B9uIB=*)972m{U-U!% z<*`E^HsukbJVKNQLmnxS2SXkVdE{IENdOFaBqbgZ!DE*^LX|%XoB)vD`ELP)9M8Ti zj2tf@#|w5K5y%TVaTxRB>jLgD=C@wq+s*&YImhe?9zyVt#_YRn+!h>1kp*T95*p=?}~p1X{hM~4mEbb;cWqJ#Leej*YoU4L!47#iUtvpDJ zC84x9cEE`vSiW@xi36J$EcCr!&{%5J>24v!fURd97og__=|S&wkGpI-LbkF<^ z@JHYvfT*K5Yz_)=a3BtCm7Y?uj?3kVa1dXkGX|xRFfAEkbzE<-klB z3!rBaz)V1_2(tkwC?M_xR1X1`5nwR^K`bEY2xut;C@X-m@EHI_h3^9XQR?#Ad;hDq zmW~Y`LeM))OD`Kw4vvx0$><>Mp4Q%8cqys>fBJ6wNX#6Q6 zl%}(k2?OgzAGMVtE9nIv8Hpk-=mj5b5k*f-k=68Cp9~<)>h&F&jDzp!bsg!IgAfiW zf;$<^gb>850K%C^dgaj{@KBP6JiY?B3;w~Q%iz(o@z9k2Er16VJq@BU(9<7IN5HA* zzK5`8|K=gU3j{=<0Hp;uuuvQHGbk>+0HCQC(0>c)8->qpMV5W>l9%%6F1U-!V^?8g0|*GHMFoTyVr&OuK{64=#!_uUP(y5E zBRct&1w>&?nmU$A(phIvV`sFlI8I{6jx&vR>OwG0##9qqb*zbQzq|isAv81HnQ#Al zzH{z9=iGDd{db2y2)leEbpPzGSCpxuZgHfXXMxv50D#}(Y`Q!RJ57E^c zqNL9%E9+M-zkdA?(cQ<0XwK5|ib`!~_)el1yCIh?t*Nflr55xObq*6n9$Q-XL|Iw< zvX7xZ5B*2gb-Aunr7fQkv5*_rl&@^)xYD_Xx+r`bk!EatTT}b}@=Ldg3=Kq~z3V%+ zrct>j3c-De31J(Wo^Pjk3de$5A)7aB+}`rZ>7Tqu6a$C#CtI7Fe%RDK@(LWRfWDv= zM0AS&UywzB*4DPI+fE&M@dKg|8~oL5+`PVN)4jE6(-0e$1=5nx3WYT*eh#&hxp7HqlFnPxsKhBHzyIjkwb(~Kx za2_w<$GrcH@`Ti$ww$+IwcM~gu*O<*tjny8)^6*d^+ZN}Mr+1P8K*No&P>Vt`Ml_P zz4Pwd3T>-xEw){@{kCD-i0x1IX!|PrZu^M+g8d&^l$DiLleLb>+Zfld)T`h8VKUcy zukL9GQO@p7b=K2sG{jHv8h(-+sE?nb0qUnOcr8Cozoge`kbXt`=l~t0Q*@Tj@j9=$ z=baE`r?NY-h?tAHltQo{*h-NF#&uk$q#by!3uCI~T70iU-I%I?breQM%AsC~8JQvxNSKSY=46y3o;YjXWZ z*`-`NXvfHnk-m3>!QtP_*?`LI=uPBoWuP}d&f&iV{u1W^xzIcDbSc++Ym*(M<7~j~ zzXdPR;6wbMa=>1x@no=D>F|`|`=n=4vco@tRVL7xQLv5yGX3{xkN+O@`o1EK!{3Kl ztNKDJqp{Suss9Y75(|(cl95P zaQL@?-vTLZAP(OJ1Emp@dAOAw0~OPxivy+begfWO4{ZV83BD72&!Gy9n#)IrQjY9ynsjb^FCmMo+DP9>p5yk6O~9l2zzMjL@S-bgoe`_SzNGkb|8{ z;ZU<7hfc5)aFHD=zde-7Im*SMY*Vg~{cd!++CjSEy>a4f<6PtTiW81q5NE+VGMqfu z%jeqk-hxXLI`1`Kmcd(l`?S&X*D!v+OVcNAXK@ooJTi-xeH8f!*W*`_>h&l-ptM&%fK1Q8TXfTKg=Cfjg zCr`^3L!rqesJP1ksu5Irq1ntFIK{Z%aWX^j%){P_@JmR`b)#=;*%#LJcLa4E_#D6s zME@VWlwe}O%g0~@5&>8Qmc(*MXqUw%l_nAa2b7j2lAE?cmPW}L)v8!F zVH^>urHENyBVpC%RcWIOI8(VplABf)%Ws40PgTWoMUvA4x#Jm&M^&sTLFWh^u&H`$ zrQ~I%))i8gRk79u^=ef_5a@Z~mNJ1HK(u8kAm$4Dr-3cNb^yOPX)lEbGPaI+`Vx8H zw^hLU$&5HYpCR9tavYGQav8~^?Mb2nc?PKzq0cTNgg0LrYN&Vzu zl{@b2m?3vc`Ttd*0;nhTOf&=dX-z!<{u9t!vH~uP=X~n7SHLwt=tq^EGvvv09Ut(i za?PW|X`%wf`=v60f~{42a@vGU$z79NtXhF$T-RhW%_6<-EA(=}W^t;t5jWFp$>mE< zTqsV-wMZ^bY=u0Pi}y@(I!|)H@swCmfyG}2CkT6@MXJ8UE_u1*C3!PscTiT(kEpIV sLummYM7gBiOn9#ZZly+`l| -typedef jmp_buf sigjmp_buf; -int sigsetjmp( sigjmp_buf buf, int savesigs ); -void siglongjmp( sigjmp_buf buf, int val ); -#endif /* HAVE_SIGSETJMP */ - #ifndef HAVE_STATVFS int statvfs( const char *path, struct statvfs *buf ); #endif diff --git a/include/wine/test.h b/include/wine/test.h index 1c91077d13a..f99b61774d9 100644 --- a/include/wine/test.h +++ b/include/wine/test.h @@ -68,6 +68,8 @@ extern void winetest_wait_child_process( HANDLE process ); #define START_TEST(name) void func_##name(void) #endif +extern int broken( int condition ); + #ifdef __GNUC__ extern int winetest_ok( int condition, const char *msg, ... ) __attribute__((format (printf,2,3) )); @@ -224,6 +226,11 @@ void winetest_set_location( const char* file, int line ) data->current_line=line; } +int broken( int condition ) +{ + return (strcmp(winetest_platform, "windows") == 0) && condition; +} + /* * Checks condition. * Parameters: diff --git a/include/winnt.h b/include/winnt.h index 9d6e05d927c..70853638855 100644 --- a/include/winnt.h +++ b/include/winnt.h @@ -385,7 +385,7 @@ typedef const WCHAR *PCWSTR, *LPCWSTR; * the emulator. The reason is they depend on the UNICODE * macro which only exists in the user's code. */ -#ifndef __WINESRC__ +#ifndef WINE_NO_UNICODE_MACROS # ifdef UNICODE # ifndef _TCHAR_DEFINED typedef WCHAR TCHAR, *PTCHAR; @@ -404,7 +404,7 @@ typedef LPCSTR PCTSTR, LPCTSTR; # define __TEXT(string) string # endif /* UNICODE */ # define TEXT(quote) __TEXT(quote) -#endif /* __WINESRC__ */ +#endif /* WINE_NO_UNICODE_MACROS */ /* Misc common WIN32 types */ typedef char CCHAR; diff --git a/include/winsock.h b/include/winsock.h index 9187f41a5e6..dd202ea1334 100644 --- a/include/winsock.h +++ b/include/winsock.h @@ -395,7 +395,7 @@ typedef UINT_PTR SOCKET; * This is used instead of -1, since the * SOCKET type is unsigned. */ -#define INVALID_SOCKET (~0) +#define INVALID_SOCKET (SOCKET)(~0) #define SOCKET_ERROR (-1) typedef struct WS(sockaddr) diff --git a/include/winsock2.h b/include/winsock2.h index a30233123ee..b73fde3734a 100644 --- a/include/winsock2.h +++ b/include/winsock2.h @@ -75,6 +75,8 @@ extern "C" { /* protocol types */ +#define FROM_PROTOCOL_INFO (-1) + #ifndef USE_WS_PREFIX #define SOCK_STREAM 1 #define SOCK_DGRAM 2 diff --git a/include/winuser.h b/include/winuser.h index 366ab9f375d..c569f311a7e 100644 --- a/include/winuser.h +++ b/include/winuser.h @@ -652,8 +652,7 @@ typedef struct tagWINDOWPLACEMENT #define MAKEINTRESOURCEA(i) (LPSTR)((ULONG_PTR)((WORD)(i))) #define MAKEINTRESOURCEW(i) (LPWSTR)((ULONG_PTR)((WORD)(i))) -#ifdef __WINESRC__ -/* force using a cast when inside Wine */ +#ifdef WINE_NO_UNICODE_MACROS /* force using a cast */ #define MAKEINTRESOURCE(i) ((ULONG_PTR)((WORD)(i))) #else #define MAKEINTRESOURCE WINELIB_NAME_AW(MAKEINTRESOURCE) diff --git a/libs/port/Makefile.in b/libs/port/Makefile.in index 1c25bf22e5b..1d048d04c10 100644 --- a/libs/port/Makefile.in +++ b/libs/port/Makefile.in @@ -23,7 +23,6 @@ C_SRCS = \ pread.c \ pwrite.c \ readlink.c \ - sigsetjmp.c \ spawn.c \ statvfs.c \ strcasecmp.c \ diff --git a/libs/port/sigsetjmp.c b/libs/port/sigsetjmp.c deleted file mode 100644 index 466270fca18..00000000000 --- a/libs/port/sigsetjmp.c +++ /dev/null @@ -1,36 +0,0 @@ -/* - * sigsetjmp/siglongjmp functions - * - * Copyright 2003 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "config.h" -#include "wine/port.h" - -#ifndef HAVE_SIGSETJMP - -int sigsetjmp( sigjmp_buf buf, int savesigs ) -{ - return setjmp( buf ); -} - -void siglongjmp( sigjmp_buf buf, int val ) -{ - longjmp( buf, val ); -} - -#endif /* HAVE_SIGSETJMP */ diff --git a/programs/Makeprog.rules.in b/programs/Makeprog.rules.in index f73498e7711..2beec5133a1 100644 --- a/programs/Makeprog.rules.in +++ b/programs/Makeprog.rules.in @@ -31,7 +31,7 @@ $(BASEMODULE): $(WINEWRAPPER) # Rules for .exe main module $(MODULE): $(OBJS) $(RCOBJS) Makefile.in - $(CC) $(APPMODE) $(OBJS) $(RCOBJS) -o $@ $(LIBWINE) $(ALL_LIBS) + $(CC) $(APPMODE) $(OBJS) $(RCOBJS) -o $@ -L$(DLLDIR) $(IMPORTS:%=-L$(DLLDIR)/%) $(DELAYIMPORTS:%=-L$(DLLDIR)/%) $(LIBWINE) $(ALL_LIBS) # Rules for testing diff --git a/programs/cmd/Ja.rc b/programs/cmd/Ja.rc index 1acc8e9cf9d..76286257039 100644 --- a/programs/cmd/Ja.rc +++ b/programs/cmd/Ja.rc @@ -199,6 +199,12 @@ Wine WCMD_VOL, "VOL‚̃wƒ‹ƒv\n" + WCMD_PUSHD, "PUSHD saves the current directory onto a\n\ +stack, and then changes the current directory to the supplied one.\n" + + WCMD_POPD, "POPD changes current directory to the last one saved with\n\ +PUSHD.\n" + WCMD_MORE, "MORE displays output of files or piped input in pages.\n" WCMD_EXIT, @@ -220,7 +226,9 @@ MD (MKDIR)\t MORE\t\tDisplay output in pages\n\ MOVE\t\tƒtƒ@ƒCƒ‹‚Ü‚½‚̓fƒBƒŒƒNƒgƒŠƒcƒŠ�[‚ðˆÚ“®\n\ PATH\t\tƒpƒX‚ð•\Ž¦–”‚Í�Ý’è\n\ +POPD\t\tRestores the directory to the last one saved with PUSHD\n\ PROMPT\t\tƒRƒ}ƒ“ƒhƒvƒ�ƒ“ƒvƒg‚ð•Ï�X\n\ +PUSHD\t\tChanges to a new directory, saving the current one\n\ REN (RENAME)\tƒtƒ@ƒCƒ‹‚ðƒŠƒl�[ƒ€\n\ RD (RMDIR)\tƒTƒuƒfƒBƒŒƒNƒgƒŠ‚ð�í�œ\n\ SET\t\tŠÂ‹«•Ï�”‚ð�Ý’è–”‚Í•\Ž¦\n\ diff --git a/programs/notepad/Fi.rc b/programs/notepad/Fi.rc index eebf8c27c25..914c8bd006f 100644 --- a/programs/notepad/Fi.rc +++ b/programs/notepad/Fi.rc @@ -28,6 +28,7 @@ MAIN_MENU MENU MENUITEM "&Avaa...\tCtrl+O", CMD_OPEN MENUITEM "Ta&lleta\tCtrl+S", CMD_SAVE MENUITEM "Talleta &nimellä...", CMD_SAVE_AS + MENUITEM SEPARATOR MENUITEM "T&ulosta...\tCtrl+P", CMD_PRINT MENUITEM "&Sivun asetukset...", CMD_PAGE_SETUP MENUITEM "&Kirjoittimen asetukset...", CMD_PRINTER_SETUP @@ -46,6 +47,7 @@ POPUP "&Muokkaa" { MENUITEM "&Aika/Päivämäärä\tF5", CMD_TIME_DATE MENUITEM SEPARATOR MENUITEM "Ka&tkaise pitkä rivi", CMD_WRAP + MENUITEM "&Font...", CMD_FONT } POPUP "&Etsi" { MENUITEM "Etsi...", CMD_SEARCH diff --git a/programs/notepad/Hu.rc b/programs/notepad/Hu.rc index a5f411aad5b..9c9d90f75d1 100644 --- a/programs/notepad/Hu.rc +++ b/programs/notepad/Hu.rc @@ -29,8 +29,8 @@ MAIN_MENU MENU LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT MENUITEM "&Mentés\tCtrl+S", CMD_SAVE MENUITEM "Mentés má&sként...", CMD_SAVE_AS MENUITEM SEPARATOR - MENUITEM "&Oldalbeállítás...", CMD_PAGE_SETUP MENUITEM "Nyom&tatás...\tCtrl+P", CMD_PRINT + MENUITEM "&Oldalbeállítás...", CMD_PAGE_SETUP MENUITEM "Nyomtató &beállítás...", CMD_PRINTER_SETUP MENUITEM SEPARATOR MENUITEM "&Kilépés", CMD_EXIT @@ -47,6 +47,7 @@ POPUP "S&zerkeszt MENUITEM "&Idõ/dátum\tF5", CMD_TIME_DATE MENUITEM SEPARATOR MENUITEM "&Hosszú sorok tördelése", CMD_WRAP + MENUITEM "&Font...", CMD_FONT } POPUP "&Keresés" { MENUITEM "&Keresés...", CMD_SEARCH diff --git a/programs/notepad/Makefile.in b/programs/notepad/Makefile.in index 685a898384f..a44fe714bce 100644 --- a/programs/notepad/Makefile.in +++ b/programs/notepad/Makefile.in @@ -3,8 +3,8 @@ TOPOBJDIR = ../.. SRCDIR = @srcdir@ VPATH = @srcdir@ MODULE = notepad.exe -APPMODE = -mwindows -IMPORTS = comdlg32 shell32 shlwapi user32 gdi32 msvcrt advapi32 kernel32 +APPMODE = -mwindows -mno-cygwin +IMPORTS = comdlg32 shell32 shlwapi user32 gdi32 advapi32 kernel32 EXTRAINCL = -I$(TOPSRCDIR)/include/msvcrt MODCFLAGS = @BUILTINFLAG@ EXTRADEFS = -DNO_LIBWINE_PORT diff --git a/programs/notepad/Sk.rc b/programs/notepad/Sk.rc deleted file mode 100644 index 70a2a74e54a..00000000000 --- a/programs/notepad/Sk.rc +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Notepad (Slovak resources) - * - * Copyright 1997,98 Marcel Baur - * Proofread 1998 by David Lee Lambert - * Copyright 2002 Sylvain Petreolle - * - * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT - -MAIN_MENU MENU -{ - POPUP "&File" { - MENUITEM "&New\tCtrl+N", CMD_NEW - MENUITEM "&Open...\tCtrl+O", CMD_OPEN - MENUITEM "&Save\tCtrl+S", CMD_SAVE - MENUITEM "Save &as...", CMD_SAVE_AS - MENUITEM "&Print...\tCtrl+P", CMD_PRINT - MENUITEM "Page Se&tup...", CMD_PAGE_SETUP - MENUITEM "P&rinter Setup...", CMD_PRINTER_SETUP - MENUITEM SEPARATOR - MENUITEM "&Exit", CMD_EXIT - } -POPUP "&Edit" { - MENUITEM "&Undo\tCtrl+Z", CMD_UNDO - MENUITEM SEPARATOR - MENUITEM "Cu&t\tCtrl+X", CMD_CUT - MENUITEM "&Copy\tCtrl+C", CMD_COPY - MENUITEM "&Paste\tCtrl+V", CMD_PASTE - MENUITEM "&Delete\tDel", CMD_DELETE - MENUITEM SEPARATOR - MENUITEM "Select &all", CMD_SELECT_ALL - MENUITEM "&Time/Date\tF5", CMD_TIME_DATE - MENUITEM SEPARATOR - MENUITEM "&Wrap long lines", CMD_WRAP - } -POPUP "&Search" { - MENUITEM "&Search...", CMD_SEARCH - MENUITEM "&Search next\tF3", CMD_SEARCH_NEXT - } -POPUP "&Help" { - MENUITEM "&Contents", CMD_HELP_CONTENTS - MENUITEM "&Search...", CMD_HELP_SEARCH - MENUITEM "&Help on help", CMD_HELP_ON_HELP - MENUITEM SEPARATOR - MENUITEM "&About Notepad...", CMD_HELP_ABOUT_NOTEPAD - } -} - -/* Dialog `Page setup' */ - -DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Page Setup" -{ -LTEXT "&Header:", 0x140, 10, 07, 40, 15 -EDITTEXT IDC_PAGESETUP_HEADERVALUE, 60, 05,110, 12, WS_BORDER | WS_TABSTOP -LTEXT "&Footer:", 0x142, 10, 24, 40, 15 -EDITTEXT IDC_PAGESETUP_FOOTERVALUE, 60, 22,110, 12, WS_BORDER | WS_TABSTOP - -GROUPBOX "&Margins:", 0x144, 10, 43,160, 45 -LTEXT "&Left:", 0x145, 20, 55, 30, 10, WS_CHILD -EDITTEXT IDC_PAGESETUP_LEFTVALUE, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Top:", 0x148, 20, 73, 30, 10, WS_CHILD -EDITTEXT IDC_PAGESETUP_TOPVALUE, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Right:", 0x14B, 100, 55, 30, 10, WS_CHILD -EDITTEXT IDC_PAGESETUP_RIGHTVALUE, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Bottom:", 0x14E,100, 73, 30, 10, WS_CHILD -EDITTEXT IDC_PAGESETUP_BOTTOMVALUE, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP - -DEFPUSHBUTTON "OK", IDOK, 180, 3, 40, 15, WS_TABSTOP -PUSHBUTTON "Cancel", IDCANCEL, 180, 21, 40, 15, WS_TABSTOP -PUSHBUTTON "&Help", IDHELP, 180, 39, 40, 15, WS_TABSTOP -} - -STRINGTABLE DISCARDABLE -{ -STRING_PAGESETUP_HEADERVALUE, "&f" -STRING_PAGESETUP_FOOTERVALUE, "Page &p" - -STRING_NOTEPAD, "Notepad" -STRING_ERROR, "ERROR" -STRING_WARNING, "WARNING" -STRING_INFO, "Information" - -STRING_UNTITLED, "(untitled)" - -STRING_ALL_FILES, "All files (*.*)" -STRING_TEXT_FILES_TXT, "Text files (*.txt)" - -STRING_TOOLARGE, "File '%s' is too large for notepad.\n \ -Please use a different editor." -STRING_NOTEXT, "You didn't enter any text. \ -\nPlease type something and try again" -STRING_DOESNOTEXIST, "File '%s'\ndoes not exist\n\n \ -Do you want to create a new file ?" -STRING_NOTSAVED, "File '%s'\nhas been modified\n\n \ -Would you like to save the changes ?" -STRING_NOTFOUND, "'%s' can not be found." -STRING_OUT_OF_MEMORY, "Not enough memory to complete this \ -task. \nClose one or more applications to increase the amount of \nfree \ -memory." - -} diff --git a/programs/notepad/Wa.rc b/programs/notepad/Wa.rc index b65f6e8b671..72963c7572c 100644 --- a/programs/notepad/Wa.rc +++ b/programs/notepad/Wa.rc @@ -31,6 +31,7 @@ MAIN_MENU MENU MENUITEM "&Drovî...\tCtrl+O", CMD_OPEN MENUITEM "&Schaper\tCtrl+S", CMD_SAVE MENUITEM "Schaper èt r&lomer...", CMD_SAVE_AS + MENUITEM SEPARATOR MENUITEM "&Rexhe...\tCtrl+P", CMD_PRINT MENUITEM "Arrandjmint del &Pådje...", CMD_PAGE_SETUP MENUITEM "&Apontiaedje del scrirece...", CMD_PRINTER_SETUP @@ -49,6 +50,7 @@ POPUP "&Candj MENUITEM "&Eure/Date\tF5", CMD_TIME_DATE MENUITEM SEPARATOR MENUITEM "Côper les ro&yes", CMD_WRAP + MENUITEM "&Font...", CMD_FONT } POPUP "C&werî" { MENUITEM "Cwerî...", CMD_SEARCH diff --git a/programs/notepad/Zh.rc b/programs/notepad/Zh.rc index 090ac0cca5d..09c5e675111 100644 --- a/programs/notepad/Zh.rc +++ b/programs/notepad/Zh.rc @@ -25,6 +25,7 @@ MAIN_MENU MENU LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED MENUITEM "´ò¿ª£¨&O£©...\tCtrl+O", CMD_OPEN MENUITEM "±£´æ£¨&S£©\tCtrl+S", CMD_SAVE MENUITEM "Áí´æΪ(&A)...", CMD_SAVE_AS + MENUITEM SEPARATOR MENUITEM "´òÓ¡£¨&P£©...\tCtrl+P", CMD_PRINT MENUITEM "Ò³ÃæÉèÖã¨&T£©...", CMD_PAGE_SETUP MENUITEM "´òÓ¡ÉèÖã¨&R£©...", CMD_PRINTER_SETUP diff --git a/programs/notepad/rsrc.rc b/programs/notepad/rsrc.rc index 0275c03cf80..911ad3c339e 100644 --- a/programs/notepad/rsrc.rc +++ b/programs/notepad/rsrc.rc @@ -67,7 +67,6 @@ IDI_NOTEPAD ICON "notepad.ico" #include "Ro.rc" #include "Ru.rc" #include "Si.rc" -#include "Sk.rc" #include "Sv.rc" #include "Th.rc" #include "Tr.rc" diff --git a/programs/regedit/Bg.rc b/programs/regedit/Bg.rc index be03c6a2c5b..afc9b014360 100644 --- a/programs/regedit/Bg.rc +++ b/programs/regedit/Bg.rc @@ -52,6 +52,7 @@ BEGIN MENUITEM "&Òåêñòîâà ñòîéíîñò", ID_EDIT_NEW_STRINGVALUE MENUITEM "&Äâîè÷íà ñòîéíîñò", ID_EDIT_NEW_BINARYVALUE MENUITEM "&DWORD ñòîéíîñò", ID_EDIT_NEW_DWORDVALUE + MENUITEM "&Multi String Value", ID_EDIT_NEW_MULTI_STRINGVALUE END MENUITEM SEPARATOR MENUITEM "&Èçòðèé\tDel", ID_EDIT_DELETE @@ -102,11 +103,13 @@ BEGIN MENUITEM "&Òåêñòîâà ñòîéíîñò", ID_EDIT_NEW_STRINGVALUE MENUITEM "&Äâîè÷íà ñòîéíîñò", ID_EDIT_NEW_BINARYVALUE MENUITEM "&DWORD ñòîéíîñò", ID_EDIT_NEW_DWORDVALUE + MENUITEM "&Multi String Value", ID_EDIT_NEW_MULTI_STRINGVALUE END MENUITEM SEPARATOR MENUITEM "&Èçòðèé\tDel", ID_EDIT_DELETE MENUITEM "&Ïðåèìåíóâàé\tF2", ID_EDIT_RENAME MENUITEM SEPARATOR + MENUITEM "&Export ...", ID_EDIT_EXPORT MENUITEM "&Êîïèðàé èìåòî íà êëþ÷à", ID_EDIT_COPYKEYNAME MENUITEM SEPARATOR MENUITEM "&Òúðñè\tCtrl+F", ID_EDIT_FIND, GRAYED @@ -269,6 +272,7 @@ BEGIN IDS_DELETE_BOX_TEXT "Íàèñòèíà ëè èñêàòå äà èçòðèåòå ñòîéíîñòòà '%s'?" IDS_NEWKEY "Íîâ êëþ÷ #%d" IDS_NEWVALUE "Íîâà ñòîéíîñò #%d" + IDS_NOTFOUND "Search string '%s' not found" END /*****************************************************************/ diff --git a/programs/regedit/De.rc b/programs/regedit/De.rc index f2d3dda6111..c5805ea5fb2 100644 --- a/programs/regedit/De.rc +++ b/programs/regedit/De.rc @@ -41,50 +41,50 @@ BEGIN ID_REGISTRY_DISCONNECTNETWORKREGISTRY , GRAYED MENUITEM SEPARATOR - MENUITEM "&Drucken\tStrg+P", ID_REGISTRY_PRINT, GRAYED + MENUITEM "&Drucken\tStrg+P", ID_REGISTRY_PRINT, GRAYED MENUITEM SEPARATOR MENUITEM "&Beenden", ID_REGISTRY_EXIT END POPUP "&Bearbeiten" BEGIN - MENUITEM "&Ändern", ID_EDIT_MODIFY + MENUITEM "&Ändern", ID_EDIT_MODIFY MENUITEM SEPARATOR POPUP "&Neu" BEGIN - MENUITEM "&Schlüssel", ID_EDIT_NEW_KEY + MENUITEM "&Schlüssel", ID_EDIT_NEW_KEY MENUITEM SEPARATOR MENUITEM "&Zeichenfolge", ID_EDIT_NEW_STRINGVALUE MENUITEM "&Binärwert", ID_EDIT_NEW_BINARYVALUE - MENUITEM "&DWORD Wert", ID_EDIT_NEW_DWORDVALUE + MENUITEM "&DWORD-Wert", ID_EDIT_NEW_DWORDVALUE MENUITEM "&Mehrteilige Zeichenfolge", ID_EDIT_NEW_MULTI_STRINGVALUE END MENUITEM SEPARATOR - MENUITEM "&Löschen\tEntf", ID_EDIT_DELETE - MENUITEM "&Umbenennen", ID_EDIT_RENAME + MENUITEM "&Löschen\tEntf", ID_EDIT_DELETE + MENUITEM "&Umbenennen", ID_EDIT_RENAME MENUITEM SEPARATOR - MENUITEM "Schlüsselname &kopieren", ID_EDIT_COPYKEYNAME + MENUITEM "Schlüsselnamen &kopieren", ID_EDIT_COPYKEYNAME MENUITEM SEPARATOR - MENUITEM "&Suchen\tStrg+F", ID_EDIT_FIND, GRAYED - MENUITEM "&Nächstes finden\tF3", ID_EDIT_FINDNEXT, GRAYED + MENUITEM "&Suchen\tStrg+F", ID_EDIT_FIND, GRAYED + MENUITEM "&Weitersuchen\tF3", ID_EDIT_FINDNEXT, GRAYED END POPUP "&Ansicht" BEGIN - MENUITEM "Status&leiste", ID_VIEW_STATUSBAR + MENUITEM "Status&leiste", ID_VIEW_STATUSBAR MENUITEM SEPARATOR - MENUITEM "&Trennen", ID_VIEW_SPLIT + MENUITEM "&Trennen", ID_VIEW_SPLIT MENUITEM SEPARATOR - MENUITEM "&Aktualisieren\tF5", ID_VIEW_REFRESH + MENUITEM "&Aktualisieren\tF5", ID_VIEW_REFRESH END POPUP "&Favoriten" BEGIN - MENUITEM "Zu den Favoriten &hinzufügen", ID_FAVORITES_ADDTOFAVORITES - MENUITEM "Von den Favoriten &löschen", ID_FAVORITES_REMOVEFAVORITE + MENUITEM "Zu den Favoriten &hinzufügen", ID_FAVORITES_ADDTOFAVORITES + MENUITEM "Von den Favoriten &löschen", ID_FAVORITES_REMOVEFAVORITE END POPUP "&Hilfe" BEGIN - MENUITEM "&Hilfethemen\tF1", ID_HELP_HELPTOPICS + MENUITEM "&Hilfethemen\tF1", ID_HELP_HELPTOPICS MENUITEM SEPARATOR - MENUITEM "&Über Registry Editor", ID_HELP_ABOUT + MENUITEM "&Über Registry Editor", ID_HELP_ABOUT END END @@ -92,30 +92,31 @@ IDR_POPUP_MENUS MENU DISCARDABLE BEGIN POPUP "" BEGIN - MENUITEM "&Ändern", ID_EDIT_MODIFY - MENUITEM "Binäre Daten ändern", ID_EDIT_MODIFY_BIN + MENUITEM "&Ändern", ID_EDIT_MODIFY + MENUITEM "Binäre Daten ändern", ID_EDIT_MODIFY_BIN MENUITEM SEPARATOR - MENUITEM "&Löschen\tEntf", ID_EDIT_DELETE - MENUITEM "&Umbennenen", ID_EDIT_RENAME + MENUITEM "&Löschen\tEntf", ID_EDIT_DELETE + MENUITEM "&Umbennenen", ID_EDIT_RENAME END POPUP "" BEGIN POPUP "&Neu" BEGIN - MENUITEM "&Schlüssel", ID_EDIT_NEW_KEY + MENUITEM "&Schlüssel", ID_EDIT_NEW_KEY MENUITEM SEPARATOR - MENUITEM "&Zeichenfolge", ID_EDIT_NEW_STRINGVALUE - MENUITEM "&Binärwert", ID_EDIT_NEW_BINARYVALUE - MENUITEM "&DWORD Wert", ID_EDIT_NEW_DWORDVALUE - MENUITEM "&Mehrteilige Zeichenfolge", ID_EDIT_NEW_MULTI_STRINGVALUE + MENUITEM "&Zeichenfolge", ID_EDIT_NEW_STRINGVALUE + MENUITEM "&Binärwert", ID_EDIT_NEW_BINARYVALUE + MENUITEM "&DWORD Wert", ID_EDIT_NEW_DWORDVALUE + MENUITEM "&Mehrteilige Zeichenfolge", ID_EDIT_NEW_MULTI_STRINGVALUE END MENUITEM SEPARATOR - MENUITEM "&Löschen\tEntf", ID_EDIT_DELETE - MENUITEM "&Umbenennen", ID_EDIT_RENAME + MENUITEM "&Löschen\tEntf", ID_EDIT_DELETE + MENUITEM "&Umbenennen", ID_EDIT_RENAME MENUITEM SEPARATOR - MENUITEM "Schlüsselname &kopieren", ID_EDIT_COPYKEYNAME + MENUITEM "&Exportieren...", ID_EDIT_EXPORT + MENUITEM "Schlüsselnamen &kopieren", ID_EDIT_COPYKEYNAME MENUITEM SEPARATOR - MENUITEM "&Suchen\tStrg+F", ID_EDIT_FIND, GRAYED + MENUITEM "&Suchen\tStrg+F", ID_EDIT_FIND, GRAYED END END @@ -188,7 +189,7 @@ END IDD_EDIT_DWORD DIALOG DISCARDABLE 22, 17, 210, 100 STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU -CAPTION "DWORD Wert editieren" +CAPTION "DWORD-Wert editieren" FONT 8, "MS Shell Dlg" BEGIN LTEXT "Name:",IDC_STATIC,5,5,119,8 @@ -241,17 +242,17 @@ END STRINGTABLE DISCARDABLE BEGIN - IDS_APP_TITLE "Registry Editor" + IDS_APP_TITLE "Registry-Editor" END STRINGTABLE DISCARDABLE BEGIN - ID_REGISTRY_MENU "Befehle für das Bearbeiten der ganzen Registry" - ID_EDIT_MENU "Befehle für um Schlüssel oder Werte zu ändern" - ID_VIEW_MENU "Befehle um das Fenster anzupassen" + ID_REGISTRY_MENU "Befehle zum Bearbeiten der ganzen Registry" + ID_EDIT_MENU "Befehle zum Ändern von Schlüsseln oder Werten" + ID_VIEW_MENU "Befehle zum Anpassen des Fensters" ID_FAVORITES_MENU "Befehle für die Favoriten" - ID_HELP_MENU "Befehle um die Hilfe oder Informationen über das Programm anzuzeigen" - ID_EDIT_NEW_MENU "Befehle für das Erstellen von neuen Schlüsseln oder Daten" + ID_HELP_MENU "Befehle zum Anzeigen von Hilfe oder Informationen über das Programm" + ID_EDIT_NEW_MENU "Befehle zum Erstellen von neuen Schlüsseln oder Daten" END STRINGTABLE DISCARDABLE @@ -260,13 +261,13 @@ BEGIN ID_EDIT_NEW_KEY "Fügt einen neuen Schlüssel hinzu" ID_EDIT_NEW_STRINGVALUE "Fügt eine neue Zeichenfolge hinzu " ID_EDIT_NEW_BINARYVALUE "Fügt einen neuen Binärwert hinzu" - ID_EDIT_NEW_DWORDVALUE "Fügt einen neuen DWORD Wert hinzu" + ID_EDIT_NEW_DWORDVALUE "Fügt einen neuen DWORD-Wert hinzu" ID_EDIT_NEW_MULTI_STRINGVALUE "Fügt eine neue mehrteilige Zeichenfolge hinzu" ID_REGISTRY_IMPORTREGISTRYFILE "Importiert eine Textdatei in die Registry" ID_REGISTRY_EXPORTREGISTRYFILE "Exportiert Teile oder die ganze Registry in eine Textdatei" ID_REGISTRY_CONNECTNETWORKREGISTRY - "Verbindet zu einer Registry eines Fremdcomputers" + "Verbindet zu der Registry eines Fremdcomputers" ID_REGISTRY_DISCONNECTNETWORKREGISTRY "Trennt die Verbindung zu der Registry eines Fremdcomputers" ID_REGISTRY_PRINT "Druckt Teile oder die gesamte Registry aus" @@ -276,7 +277,7 @@ END STRINGTABLE DISCARDABLE BEGIN - ID_REGISTRY_EXIT "Beendet den Registry Editor" + ID_REGISTRY_EXIT "Beendet den Registry-Editor" ID_FAVORITES_ADDTOFAVORITES "Fügt Schlüssel zu den Favoriten hinzu" ID_FAVORITES_REMOVEFAVORITE "Löscht Schlüssel von den Favoriten" ID_VIEW_STATUSBAR "Zeigt oder versteckt die Statusleiste" diff --git a/programs/regedit/En.rc b/programs/regedit/En.rc index 4dc0ca48eed..14630d1efd5 100644 --- a/programs/regedit/En.rc +++ b/programs/regedit/En.rc @@ -26,6 +26,16 @@ STRINGTABLE DISCARDABLE BEGIN ID_FAVORITES_ADDTOFAVORITES "Adds keys to the favourites list" ID_FAVORITES_REMOVEFAVORITE "Removes keys from the favourites list" + /* Just a copy of the English (DEFAULT) strings. */ + ID_REGISTRY_EXIT "Quits the registry editor" + ID_VIEW_STATUSBAR "Shows or hides the status bar" + ID_VIEW_SPLIT "Change position of split between two panes" + ID_VIEW_REFRESH "Refreshes the window" + ID_EDIT_DELETE "Deletes the selection" + ID_EDIT_RENAME "Renames the selection" + ID_EDIT_COPYKEYNAME "Copies the name of the selected key to the clipboard" + ID_EDIT_FIND "Finds a text string in a key, value or data" + ID_EDIT_FINDNEXT "Finds next occurrence of text specified in previous search" END IDR_REGEDIT_MENU MENU DISCARDABLE @@ -85,9 +95,9 @@ BEGIN END END -/* US English Resources */ +/* English Default (US) Resources */ -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT /* * Menu @@ -175,7 +185,7 @@ BEGIN MENUITEM "&Delete\tDel", ID_EDIT_DELETE MENUITEM "&Rename\tF2", ID_EDIT_RENAME MENUITEM SEPARATOR - MENUITEM "&Export . . .", ID_EDIT_EXPORT + MENUITEM "&Export...", ID_EDIT_EXPORT MENUITEM "&Copy Key Name", ID_EDIT_COPYKEYNAME MENUITEM SEPARATOR MENUITEM "&Find\tCtrl+F", ID_EDIT_FIND, GRAYED diff --git a/programs/regedit/Hu.rc b/programs/regedit/Hu.rc index 2b24ac19b89..53a0a3b54d9 100644 --- a/programs/regedit/Hu.rc +++ b/programs/regedit/Hu.rc @@ -47,6 +47,7 @@ BEGIN MENUITEM "&Sztring érték", ID_EDIT_NEW_STRINGVALUE MENUITEM "&Bináris érték", ID_EDIT_NEW_BINARYVALUE MENUITEM "&DWORD érték", ID_EDIT_NEW_DWORDVALUE + MENUITEM "&Multi String Value", ID_EDIT_NEW_MULTI_STRINGVALUE END MENUITEM SEPARATOR MENUITEM "&Törlés\tDel", ID_EDIT_DELETE diff --git a/programs/regedit/Ja.rc b/programs/regedit/Ja.rc index 9d75875f71e..f1019ea641d 100644 --- a/programs/regedit/Ja.rc +++ b/programs/regedit/Ja.rc @@ -49,6 +49,7 @@ BEGIN MENUITEM "•¶Žš—ñ(&S)", ID_EDIT_NEW_STRINGVALUE MENUITEM "ƒoƒCƒiƒŠ(&B)", ID_EDIT_NEW_BINARYVALUE MENUITEM "DWORD’l(&D)", ID_EDIT_NEW_DWORDVALUE + MENUITEM "&Multi String Value", ID_EDIT_NEW_MULTI_STRINGVALUE END MENUITEM SEPARATOR MENUITEM "�í�œ(&D)\tDel", ID_EDIT_DELETE @@ -99,11 +100,13 @@ BEGIN MENUITEM "•¶Žš—ñ(&S)", ID_EDIT_NEW_STRINGVALUE MENUITEM "ƒoƒCƒiƒŠ(&B)", ID_EDIT_NEW_BINARYVALUE MENUITEM "DWORD’l(&D)", ID_EDIT_NEW_DWORDVALUE + MENUITEM "&Multi String Value", ID_EDIT_NEW_MULTI_STRINGVALUE END MENUITEM SEPARATOR MENUITEM "�í�œ(&D)\tDel", ID_EDIT_DELETE MENUITEM "–¼‘O‚Ì•Ï�X(&R)\tF2", ID_EDIT_RENAME MENUITEM SEPARATOR + MENUITEM "&Export ...", ID_EDIT_EXPORT MENUITEM "ƒL�[–¼‚ðƒRƒs�[(&C)", ID_EDIT_COPYKEYNAME MENUITEM SEPARATOR MENUITEM "ŒŸ�õ(&F)\tCtrl+F", ID_EDIT_FIND, GRAYED @@ -215,6 +218,7 @@ BEGIN IDS_DELETE_BOX_TEXT "–{“–‚É '%s'‚ð�í�œ‚µ‚Ü‚·‚©?" IDS_NEWKEY "�V‚µ‚¢ƒL�[ #%d" IDS_NEWVALUE "�V‚µ‚¢’l #%d" + IDS_NOTFOUND "Search string '%s' not found" END /*****************************************************************/ diff --git a/programs/regedit/Makefile.in b/programs/regedit/Makefile.in index 2de20fb2776..9f872dca66d 100644 --- a/programs/regedit/Makefile.in +++ b/programs/regedit/Makefile.in @@ -3,8 +3,8 @@ TOPOBJDIR = ../.. SRCDIR = @srcdir@ VPATH = @srcdir@ MODULE = regedit.exe -APPMODE = -mwindows -IMPORTS = msvcrt advapi32 kernel32 +APPMODE = -mwindows -mno-cygwin +IMPORTS = advapi32 kernel32 DELAYIMPORTS = shlwapi shell32 comdlg32 comctl32 user32 gdi32 EXTRAINCL = -I$(TOPSRCDIR)/include/msvcrt EXTRADEFS = -DNO_LIBWINE_PORT diff --git a/programs/start/start.c b/programs/start/start.c index c7a4ba438fc..2b4a70e02a8 100644 --- a/programs/start/start.c +++ b/programs/start/start.c @@ -311,11 +311,14 @@ int wmain (int argc, WCHAR *argv[]) fatal_string_error(STRING_EXECFAIL, GetLastError()); } sei.hProcess = process_information.hProcess; + goto done; } } - else if (!ShellExecuteExW(&sei)) - fatal_string_error(STRING_EXECFAIL, GetLastError()); + if (!ShellExecuteExW(&sei)) + fatal_string_error(STRING_EXECFAIL, GetLastError()); + +done: HeapFree( GetProcessHeap(), 0, args ); HeapFree( GetProcessHeap(), 0, dos_filename ); HeapFree( GetProcessHeap(), 0, parent_directory ); diff --git a/programs/taskmgr/Makefile.in b/programs/taskmgr/Makefile.in index 82ecc96a2db..153a598af30 100644 --- a/programs/taskmgr/Makefile.in +++ b/programs/taskmgr/Makefile.in @@ -3,8 +3,8 @@ TOPOBJDIR = ../.. SRCDIR = @srcdir@ VPATH = @srcdir@ MODULE = taskmgr.exe -APPMODE = -mwindows -IMPORTS = psapi shell32 comctl32 msvcrt user32 gdi32 advapi32 kernel32 +APPMODE = -mwindows -mno-cygwin +IMPORTS = psapi shell32 comctl32 user32 gdi32 advapi32 kernel32 EXTRAINCL = -I$(TOPSRCDIR)/include/msvcrt EXTRADEFS = -DNO_LIBWINE_PORT MODCFLAGS = @BUILTINFLAG@ diff --git a/programs/winecfg/Bg.rc b/programs/winecfg/Bg.rc index 7cf6d886954..ff1aac0c77e 100644 --- a/programs/winecfg/Bg.rc +++ b/programs/winecfg/Bg.rc @@ -164,12 +164,16 @@ BEGIN GROUPBOX " Èçáîð íà äðàéâåð ",IDC_STATIC,8,4,244,195 LTEXT "Èçáåðåòå çâóêîâ äðàéâåð êàòî ñëîæèòå îòìåòêà íà æåëàíèÿ îò âàñ äðàéâåð. Ìîæå äà çàáðàíèòå çâóêà êàòî íå èçáåðåòå íèêàêúâ äðàéâåð. Èçáèðàíåòî íà ïîâå÷å îò åäèí äðàéâåð íå å ïðåïîðú÷èòåëíî. Ìîæå äà íàñòðîèòå äðàéâåðà êàòî ùðàêíåòå âúðõó íåãî ñ äåñíèÿ áóòîí íà ìèøêàòà.",IDC_STATIC,15,20,227,50 CONTROL "Óñòðîéñòâà",IDC_AUDIO_TREE,"SysTreeView32",WS_BORDER | WS_TABSTOP,15,70,140,120 - PUSHBUTTON "&Test Sound",IDC_AUDIO_TEST,170,50,59,14 - PUSHBUTTON "Êîíòðîëåí ïàíåë",IDC_AUDIO_CONTROL_PANEL,170,70,69,14 + PUSHBUTTON "&Test Sound",IDC_AUDIO_TEST,170,70,59,14 + PUSHBUTTON "Êîíòðîëåí ïàíåë",IDC_AUDIO_CONTROL_PANEL,170,90,69,14 GROUPBOX " DirectSound ",IDC_STATIC,8,205,244,60 LTEXT "Õàðäóåðíî óñêîðåíèå: ",IDC_STATIC,15,215,90,10 COMBOBOX IDC_DSOUND_HW_ACCEL,100,213,150,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "Ñîôòóåðíà åìóëàöèÿ",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,230,230,10 + LTEXT "Default &Sample Rate:",IDC_STATIC,15,232,70,8 + COMBOBOX IDC_DSOUND_RATES,90,230,42,76,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Default &Bits Per Sample:",IDC_STATIC,137,232,80,8 + COMBOBOX IDC_DSOUND_BITS,220,230,30,56,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "Ñîôòóåðíà åìóëàöèÿ",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,250,230,10 END IDD_DESKTOP_INTEGRATION DIALOG DISCARDABLE 0, 0, 260, 250 diff --git a/programs/winecfg/Hu.rc b/programs/winecfg/Hu.rc index 84b21ce0478..87f52bf2963 100644 --- a/programs/winecfg/Hu.rc +++ b/programs/winecfg/Hu.rc @@ -163,6 +163,10 @@ BEGIN GROUPBOX " DirectSound ",IDC_STATIC,8,205,244,60 LTEXT "Hardveres gyorsítás: ",IDC_STATIC,15,215,90,10 COMBOBOX IDC_DSOUND_HW_ACCEL,100,213,150,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Default &Sample Rate:",IDC_STATIC,15,232,70,8 + COMBOBOX IDC_DSOUND_RATES,90,230,42,76,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Default &Bits Per Sample:",IDC_STATIC,137,232,80,8 + COMBOBOX IDC_DSOUND_BITS,220,230,30,56,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "Meghajtóprogram emuláció",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,230,230,10 END diff --git a/programs/winecfg/Ja.rc b/programs/winecfg/Ja.rc index 22c18bcdde4..19111ae09c3 100644 --- a/programs/winecfg/Ja.rc +++ b/programs/winecfg/Ja.rc @@ -158,10 +158,10 @@ STYLE WS_CHILD | WS_DISABLED FONT 9, "MS UI Gothic" BEGIN GROUPBOX " Driver Selection ",IDC_STATIC,8,4,244,195 - LTEXT "ƒI�[ƒfƒBƒIƒhƒ‰ƒCƒo: ",IDC_STATIC,10,20,277,30 + LTEXT "ƒI�[ƒfƒBƒIƒhƒ‰ƒCƒo: ",IDC_STATIC,15,20,227,30 CONTROL "Devices",IDC_AUDIO_TREE,"SysTreeView32",WS_BORDER | WS_TABSTOP,15,50,140,140 PUSHBUTTON "&Test Sound",IDC_AUDIO_TEST,170,50,59,14 - PUSHBUTTON "ƒRƒ“ƒgƒ��[ƒ‹ƒpƒlƒ‹",IDC_AUDIO_CONTROL_PANEL,170,70,49,14 + PUSHBUTTON "ƒRƒ“ƒgƒ��[ƒ‹ƒpƒlƒ‹",IDC_AUDIO_CONTROL_PANEL,170,70,59,14 GROUPBOX " DirectSound ",IDC_STATIC,8,205,244,60 LTEXT "ƒn�[ƒhƒEƒFƒA�EƒAƒNƒZƒ‰ƒŒ�[ƒVƒ‡ƒ“: ",IDC_STATIC,15,215,90,10 COMBOBOX IDC_DSOUND_HW_ACCEL,100,213,150,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP @@ -169,7 +169,7 @@ BEGIN COMBOBOX IDC_DSOUND_RATES,90,230,42,76,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "Default &Bits Per Sample:",IDC_STATIC,137,232,80,8 COMBOBOX IDC_DSOUND_BITS,220,230,30,56,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "ƒhƒ‰ƒCƒo�EƒGƒ~ƒ…ƒŒ�[ƒVƒ‡ƒ“",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,230,230,10 + CONTROL "ƒhƒ‰ƒCƒo�EƒGƒ~ƒ…ƒŒ�[ƒVƒ‡ƒ“",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,250,230,10 END IDD_DESKTOP_INTEGRATION DIALOG DISCARDABLE 0, 0, 260, 250 diff --git a/programs/winecfg/Ko.rc b/programs/winecfg/Ko.rc index 2210155114a..578cc4111a3 100644 --- a/programs/winecfg/Ko.rc +++ b/programs/winecfg/Ko.rc @@ -83,7 +83,7 @@ BEGIN CONTROL "", IDC_RES_TRACKBAR, "msctls_trackbar32",WS_TABSTOP,12,161,187,15 EDITTEXT IDC_RES_DPIEDIT,204,161,23,13,ES_NUMBER|WS_TABSTOP LTEXT "dpi",IDC_STATIC,235,163,10,8 - LTEXT "ÀÌ°ÍÀº Tahoma 10 Æ÷ÀÎÆ®¸¦ »ç¿ëÇÑ »ùÇà ±ÛÀÚÀÔ´Ï´Ù ",IDC_RES_FONT_PREVIEW,15,181,230,55 + LTEXT "This is a sample text using 10 point Tahoma( Ÿȣ¸¶ 10Æ÷ÀÎÆ® ±Û²ÃÀ» »ç¿ëÇÑ »ùÇà ÅؽºÆ®ÀÔ´Ï´Ù",IDC_RES_FONT_PREVIEW,15,181,230,55 END IDD_DLLCFG DIALOG DISCARDABLE 0, 0, 260, 250 diff --git a/programs/winecfg/Zh.rc b/programs/winecfg/Zh.rc index 4740862528b..daa3b99c153 100644 --- a/programs/winecfg/Zh.rc +++ b/programs/winecfg/Zh.rc @@ -298,5 +298,4 @@ BEGIN IDC_SYSPARAMS_ACTIVE_TITLE_TEXT "Active Title Text" IDC_SYSPARAMS_INACTIVE_TITLE "Inactive Title Bar" IDC_SYSPARAMS_INACTIVE_TITLE_TEXT "Inactive Title Text" - IDC_SYSPARAMS_MSGBOX_TEXT "Message Box Text" END diff --git a/programs/winedbg/debugger.h b/programs/winedbg/debugger.h index f95c3d17df9..3fb650d4040 100644 --- a/programs/winedbg/debugger.h +++ b/programs/winedbg/debugger.h @@ -367,7 +367,7 @@ extern BOOL memory_disasm_one_insn(ADDRESS64* addr); extern char* memory_offset_to_string(char *str, DWORD64 offset, unsigned mode); extern void print_bare_address(const ADDRESS64* addr); extern void print_address(const ADDRESS64* addr, BOOLEAN with_line); -extern void print_basic(const struct dbg_lvalue* value, int count, char format); +extern void print_basic(const struct dbg_lvalue* value, char format); /* source.c */ extern void source_list(IMAGEHLP_LINE* src1, IMAGEHLP_LINE* src2, int delta); @@ -417,7 +417,7 @@ extern void print_value(const struct dbg_lvalue* addr, char format, extern int types_print_type(const struct dbg_type*, BOOL details); extern int print_types(void); extern long int types_extract_as_integer(const struct dbg_lvalue*); -extern LONGLONG types_extract_as_longlong(const struct dbg_lvalue*); +extern LONGLONG types_extract_as_longlong(const struct dbg_lvalue*, unsigned* psize); extern void types_extract_as_address(const struct dbg_lvalue*, ADDRESS64*); extern BOOL types_deref(const struct dbg_lvalue* value, struct dbg_lvalue* result); extern BOOL types_udt_find_element(struct dbg_lvalue* value, const char* name, long int* tmpbuf); diff --git a/programs/winedbg/gdbproxy.c b/programs/winedbg/gdbproxy.c index a47f9caa353..2fbec046147 100644 --- a/programs/winedbg/gdbproxy.c +++ b/programs/winedbg/gdbproxy.c @@ -111,7 +111,12 @@ struct gdb_context unsigned long wine_segs[3]; /* load addresses of the ELF wine exec segments (text, bss and data) */ }; -static struct be_process_io be_process_gdbproxy_io; +static struct be_process_io be_process_gdbproxy_io = +{ + NULL, /* we shouldn't use close_process() in gdbproxy */ + ReadProcessMemory, + WriteProcessMemory +}; /* =============================================== * * B A S I C M A N I P U L A T I O N S * @@ -2352,10 +2357,3 @@ int gdb_main(int argc, char* argv[]) #endif return -1; } - -static struct be_process_io be_process_gdbproxy_io = -{ - NULL, /* we shouldn't use close_process() in gdbproxy */ - ReadProcessMemory, - WriteProcessMemory -}; diff --git a/programs/winedbg/memory.c b/programs/winedbg/memory.c index 50fe3dfb6b6..3d7a15b287c 100644 --- a/programs/winedbg/memory.c +++ b/programs/winedbg/memory.c @@ -464,7 +464,7 @@ static void print_typed_basic(const struct dbg_lvalue* lvalue) * * Implementation of the 'print' command. */ -void print_basic(const struct dbg_lvalue* lvalue, int count, char format) +void print_basic(const struct dbg_lvalue* lvalue, char format) { if (lvalue->type.id == dbg_itype_none) { @@ -474,14 +474,20 @@ void print_basic(const struct dbg_lvalue* lvalue, int count, char format) if (format != 0) { - LONGLONG res = types_extract_as_longlong(lvalue); + unsigned size; + LONGLONG res = types_extract_as_longlong(lvalue, &size); + DWORD hi; WCHAR wch; /* FIXME: this implies i386 byte ordering */ switch (format) { case 'x': - dbg_printf("0x%x", (DWORD)(ULONG64)res); + hi = (ULONG64)res >> 32; + if (size == 8 && hi) + dbg_printf("0x%x%08x", hi, (DWORD)res); + else + dbg_printf("0x%x", (DWORD)res); return; case 'd': @@ -509,7 +515,7 @@ void print_basic(const struct dbg_lvalue* lvalue, int count, char format) } if (lvalue->type.id == dbg_itype_segptr) { - dbg_print_longlong(types_extract_as_longlong(lvalue), TRUE); + dbg_print_longlong(types_extract_as_longlong(lvalue, NULL), TRUE); dbg_printf("\n"); } else print_typed_basic(lvalue); diff --git a/programs/winedbg/types.c b/programs/winedbg/types.c index 06b7355da76..fd13dac85e6 100644 --- a/programs/winedbg/types.c +++ b/programs/winedbg/types.c @@ -53,7 +53,7 @@ BOOL types_get_real_type(struct dbg_type* type, DWORD* tag) * Given a lvalue, try to get an integral (or pointer/address) value * out of it */ -LONGLONG types_extract_as_longlong(const struct dbg_lvalue* lvalue) +LONGLONG types_extract_as_longlong(const struct dbg_lvalue* lvalue, unsigned* psize) { LONGLONG rtn; DWORD tag, bt; @@ -68,6 +68,7 @@ LONGLONG types_extract_as_longlong(const struct dbg_lvalue* lvalue) return (long int)memory_to_linear_addr(&lvalue->addr); } + if (psize) *psize = 0; switch (tag) { case SymTagBaseType: @@ -96,6 +97,7 @@ LONGLONG types_extract_as_longlong(const struct dbg_lvalue* lvalue) case btFloat: RaiseException(DEBUG_STATUS_NOT_AN_INTEGER, 0, 0, NULL); } + if (psize) *psize = (unsigned)size; break; case SymTagPointerType: if (!be_cpu->fetch_integer(lvalue, sizeof(void*), FALSE, &rtn)) @@ -131,7 +133,7 @@ LONGLONG types_extract_as_longlong(const struct dbg_lvalue* lvalue) */ long int types_extract_as_integer(const struct dbg_lvalue* lvalue) { - return types_extract_as_longlong(lvalue); + return types_extract_as_longlong(lvalue, NULL); } /****************************************************************** @@ -148,7 +150,7 @@ void types_extract_as_address(const struct dbg_lvalue* lvalue, ADDRESS64* addr) else { addr->Mode = AddrModeFlat; - addr->Offset = types_extract_as_longlong( lvalue ); + addr->Offset = types_extract_as_longlong(lvalue, NULL); } } @@ -457,7 +459,7 @@ void print_value(const struct dbg_lvalue* lvalue, char format, int level) /* FIXME: this in not 100% optimal (as we're going through the typedef handling * stuff again */ - print_basic(lvalue, 1, format); + print_basic(lvalue, format); break; case SymTagUDT: if (types_get_info(&type, TI_GET_CHILDRENCOUNT, &count)) diff --git a/programs/winetest/Makefile.in b/programs/winetest/Makefile.in index 03c5dae92e2..e7c6fb6a470 100644 --- a/programs/winetest/Makefile.in +++ b/programs/winetest/Makefile.in @@ -271,7 +271,7 @@ ws2_32_test.exe: $(DLLDIR)/ws2_32/tests/ws2_32_test.exe$(DLLEXT) winetest.res: $(TESTBINS) clean:: - $(RM) tests.rc dist.res winetest-dist winetest-dist.exe $(TESTBINS) + $(RM) dist.res winetest-dist winetest-dist.exe $(TESTBINS) # Rules for building distributable executable @@ -288,9 +288,6 @@ winetest-dist: $(WINEWRAPPER) winetest-dist.exe: $(OBJS) dist.res.o Makefile.in $(CC) $(APPMODE) $(OBJS) dist.res.o -o $@ $(DELAYIMPORTS:%=-l%) $(ALL_LIBS) -tests.rc: maketest Makefile.in - $(SRCDIR)/maketest $(TOPSRCDIR) > $@ || ($(RM) $@ && exit 1) - -dist.res: winetest.rc tests.rc build.id build.nfo tests.url winetest.ico $(TESTBINS) +dist.res: winetest.rc build.nfo tests.url winetest.ico $(TESTBINS) @DEPENDENCIES@ # everything below this line is overwritten by make depend diff --git a/programs/winetest/dist.rc b/programs/winetest/dist.rc index 111bf9c7eae..e7080db0f4b 100644 --- a/programs/winetest/dist.rc +++ b/programs/winetest/dist.rc @@ -19,10 +19,6 @@ */ #include "winetest.rc" -#include "tests.rc" - -/* @makedep: build.id */ -WINE_BUILD STRINGRES "build.id" /* @makedep: build.nfo */ BUILD_INFO STRINGRES "build.nfo" diff --git a/programs/winetest/main.c b/programs/winetest/main.c index 79f7e79ab36..7d61da59e6c 100644 --- a/programs/winetest/main.c +++ b/programs/winetest/main.c @@ -49,18 +49,12 @@ struct wine_test char *exename; }; -struct rev_info -{ - const char* file; - const char* rev; -}; - char *tag = NULL; static struct wine_test *wine_tests; static int nr_of_files, nr_of_tests; -static struct rev_info *rev_infos = NULL; static const char whitespace[] = " \t\r\n"; static const char testexe[] = "_test.exe"; +static char build_id[64]; static char * get_file_version(char * file_name) { @@ -219,43 +213,6 @@ static const char* get_test_source_file(const char* test, const char* subtest) return buffer; } -static const char* get_file_rev(const char* file) -{ - const struct rev_info* rev; - - for(rev = rev_infos; rev->file; rev++) { - if (strcmp(rev->file, file) == 0) return rev->rev; - } - - return "-"; -} - -static void extract_rev_infos (void) -{ - char revinfo[256], *p; - int size = 0, i; - unsigned int len; - HMODULE module = GetModuleHandle (NULL); - - for (i = 0; TRUE; i++) { - if (i >= size) { - size += 100; - rev_infos = xrealloc (rev_infos, size * sizeof (*rev_infos)); - } - memset(rev_infos + i, 0, sizeof(rev_infos[i])); - - len = LoadStringA (module, REV_INFO+i, revinfo, sizeof(revinfo)); - if (len == 0) break; /* end of revision info */ - if (len >= sizeof(revinfo) - 1) - report (R_FATAL, "Revision info too long."); - if(!(p = strrchr(revinfo, ':'))) - report (R_FATAL, "Revision info malformed (i=%d)", i); - *p = 0; - rev_infos[i].file = strdup(revinfo); - rev_infos[i].rev = strdup(p + 1); - } -} - static void* extract_rcdata (LPTSTR name, int type, DWORD* size) { HRSRC rsrc; @@ -276,24 +233,30 @@ extract_test (struct wine_test *test, const char *dir, LPTSTR res_name) { BYTE* code; DWORD size; - FILE* fout; char *exepos; + HANDLE hfile; + DWORD written; code = extract_rcdata (res_name, TESTRES, &size); if (!code) report (R_FATAL, "Can't find test resource %s: %d", res_name, GetLastError ()); test->name = xstrdup( res_name ); - test->exename = strmake (NULL, "%s/%s", dir, test->name); + test->exename = strmake (NULL, "%s\\%s", dir, test->name); exepos = strstr (test->name, testexe); if (!exepos) report (R_FATAL, "Not an .exe file: %s", test->name); *exepos = 0; test->name = xrealloc (test->name, exepos - test->name + 1); report (R_STEP, "Extracting: %s", test->name); - if (!(fout = fopen (test->exename, "wb")) || - (fwrite (code, size, 1, fout) != 1) || - fclose (fout)) report (R_FATAL, "Failed to write file %s.", - test->exename); + hfile = CreateFileA(test->exename, GENERIC_READ | GENERIC_WRITE, 0, NULL, + CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + if (hfile == INVALID_HANDLE_VALUE) + report (R_FATAL, "Failed to open file %s.", test->exename); + + if (!WriteFile(hfile, code, size, &written, NULL)) + report (R_FATAL, "Failed to write file %s.", test->exename); + + CloseHandle(hfile); } /* Run a command for MS milliseconds. If OUT != NULL, also redirect @@ -448,10 +411,9 @@ run_test (struct wine_test* test, const char* subtest, const char *tempdir) { int status; const char* file = get_test_source_file(test->name, subtest); - const char* rev = get_file_rev(file); char *cmd = strmake (NULL, "%s %s", test->exename, subtest); - xprintf ("%s:%s start %s %s\n", test->name, subtest, file, rev); + xprintf ("%s:%s start %s -\n", test->name, subtest, file); status = run_ex (cmd, NULL, tempdir, 120000); free (cmd); xprintf ("%s:%s done (%d)\n", test->name, subtest, status); @@ -501,7 +463,6 @@ run_tests (char *logname) int logfile; char *strres, *eol, *nextline; DWORD strsize; - char build[64]; SetErrorMode (SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX); @@ -538,11 +499,7 @@ run_tests (char *logname) report (R_DIR, tempdir); xprintf ("Version 4\n"); - strres = extract_rcdata (MAKEINTRESOURCE(WINE_BUILD), STRINGRES, &strsize); - xprintf ("Tests from build "); - if (LoadStringA( 0, IDS_BUILD_ID, build, sizeof(build) )) xprintf( "%s\n", build ); - else if (strres) xprintf ("%.*s", strsize, strres); - else xprintf ("-\n"); + xprintf ("Tests from build %s\n", build_id[0] ? build_id : "-" ); strres = extract_rcdata (MAKEINTRESOURCE(TESTS_URL), STRINGRES, &strsize); xprintf ("Archive: "); if (strres) xprintf ("%.*s", strsize, strres); @@ -634,8 +591,7 @@ int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst, int poweroff = 0; int interactive = 1; - /* initialize the revision information first */ - extract_rev_infos(); + if (!LoadStringA( 0, IDS_BUILD_ID, build_id, sizeof(build_id) )) build_id[0] = 0; cmdLine = strtok (cmdLine, whitespace); while (cmdLine) { @@ -720,10 +676,14 @@ int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst, } report (R_TAG); + if (!build_id[0]) + report( R_WARNING, "You won't be able to submit results without a valid build id.\n" + "To submit results, winetest needs to be built from a git checkout." ); + if (!logname) { logname = run_tests (NULL); - if (report (R_ASK, MB_YESNO, "Do you want to submit the " - "test results?") == IDYES) + if (build_id[0] && + report (R_ASK, MB_YESNO, "Do you want to submit the test results?") == IDYES) if (!send_file (logname) && remove (logname)) report (R_WARNING, "Can't remove logfile: %d.", errno); free (logname); diff --git a/programs/winetest/maketest b/programs/winetest/maketest deleted file mode 100755 index ff4d88b009f..00000000000 --- a/programs/winetest/maketest +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh - -TOPSRCDIR="$1" -shift - -echo "/* Automatically generated -- do not edit! */" -echo "STRINGTABLE {" - -i=0 -cd $TOPSRCDIR -if [ -d .git ] -then - git-ls-files -c -s --abbrev=10 -- "dlls/*/tests/*.c" |\ - sed -ne "s|^[0-7]* \([0-9a-f]*\) [0-9] \(.*\)$|\2:\1|p" -else - for dir in dlls/*/tests; do - sed -ne "s|^/\([^.]*.c\)/\([^/]*\).*|$dir/\1:\2|p" $dir/CVS/Entries 2>/dev/null - done -fi |\ -while read line; do - echo "REV_INFO+$i \"$line\"" - i=`expr $i + 1` -done - -echo "}" diff --git a/programs/winetest/resource.h b/programs/winetest/resource.h index a40c089416f..4b21491cff7 100644 --- a/programs/winetest/resource.h +++ b/programs/winetest/resource.h @@ -51,9 +51,5 @@ /* String resources */ -#define WINE_BUILD 10000 #define BUILD_INFO 10001 #define TESTS_URL 10002 - -/* Revision info strings start from this index: */ -#define REV_INFO 30000 diff --git a/programs/winhlp32/De.rc b/programs/winhlp32/De.rc index b9cdece9cba..846ef9baaf9 100644 --- a/programs/winhlp32/De.rc +++ b/programs/winhlp32/De.rc @@ -73,10 +73,33 @@ STID_HLPFILE_ERROR_s, "Fehler beim Lesen der Hilfe-Datei `%s'" STID_CONTENTS, "&Inhalt" STID_SEARCH, "&Suchen" STID_BACK, "&Zurück" -STID_HISTORY, "&Bisher" +STID_HISTORY, "&Chronik" STID_TOPICS, "&Themen" STID_ALL_FILES, "Alle Dateien (*.*)" STID_HELP_FILES_HLP, "Hilfe-Dateien (*.hlp)" STID_FILE_NOT_FOUND_s "'%s' konnte nicht gefunden werden. Wollen Sie selber nach dieser Datei suchen?" -STID_NO_RICHEDIT "Cannot find a richedit implementation... Aborting" +STID_NO_RICHEDIT "Die Richedit Implementation konnte nicht gefunden werden... Breche ab." } + +CONTEXT_MENU MENU LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL +BEGIN +POPUP "" +BEGIN +MENUITEM "Anmerken...", MNID_CTXT_ANNOTATE +MENUITEM "Kopieren", MNID_CTXT_COPY +MENUITEM "Drucken...", MNID_CTXT_PRINT +POPUP "Schriftgröße" +BEGIN +MENUITEM "Klein", MNID_CTXT_FONTS_SMALL +MENUITEM "Normal", MNID_CTXT_FONTS_NORMAL +MENUITEM "Groß", MNID_CTXT_FONTS_LARGE +END +POPUP "Hilfe immer sichtbar" +BEGIN +MENUITEM "Standard", MNID_CTXT_HELP_DEFAULT +MENUITEM "Sichtbar", MNID_CTXT_HELP_VISIBLE +MENUITEM "Nicht sichtbar", MNID_CTXT_HELP_NONVISIBLE +END +MENUITEM "Systemfarben verwenden", MNID_CTXT_SYSTEM_COLORS +END +END diff --git a/programs/winhlp32/Sk.rc b/programs/winhlp32/Sk.rc index e8da9d0fc70..14398363ada 100644 --- a/programs/winhlp32/Sk.rc +++ b/programs/winhlp32/Sk.rc @@ -25,6 +25,7 @@ MAIN_MENU MENU LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT MENUITEM SEPARATOR MENUITEM "&Tlaèi�", MNID_FILE_PRINT MENUITEM "&Nastavenie tlaèe...", MNID_FILE_SETUP + MENUITEM SEPARATOR MENUITEM "U&konèi�", MNID_FILE_EXIT } POPUP "&Upravi�" { diff --git a/programs/wordpad/En.rc b/programs/wordpad/En.rc index d4d53987cd8..298fb89f8e6 100644 --- a/programs/wordpad/En.rc +++ b/programs/wordpad/En.rc @@ -22,16 +22,16 @@ IDM_MAINMENU MENU DISCARDABLE BEGIN POPUP "&File" BEGIN - MENUITEM "&New . . .\tCtrl+N", ID_FILE_NEW - MENUITEM "&Open . . .\tCtrl+O", ID_FILE_OPEN + MENUITEM "&New...\tCtrl+N", ID_FILE_NEW + MENUITEM "&Open...\tCtrl+O", ID_FILE_OPEN MENUITEM "&Save\tCtrl+S", ID_FILE_SAVE - MENUITEM "Save &as . . .", ID_FILE_SAVEAS + MENUITEM "Save &as...", ID_FILE_SAVEAS MENUITEM SEPARATOR - MENUITEM "&Print . . .\tCtrl+P", ID_PRINT - MENUITEM "Print previe&w . . .", ID_PREVIEW - MENUITEM "Pag&e setup . . .", ID_PRINTSETUP + MENUITEM "&Print...\tCtrl+P", ID_PRINT + MENUITEM "Print previe&w...", ID_PREVIEW + MENUITEM "Pag&e setup...", ID_PRINTSETUP MENUITEM SEPARATOR - MENUITEM "E&xit", ID_FILE_EXIT + MENUITEM "E&xit", ID_FILE_EXIT END POPUP "&Edit" BEGIN @@ -44,9 +44,9 @@ BEGIN MENUITEM "&Clear\tDEL", ID_EDIT_CLEAR MENUITEM "&Select all\tCtrl+A", ID_EDIT_SELECTALL MENUITEM SEPARATOR - MENUITEM "&Find . . .\tCrtl+F", ID_FIND + MENUITEM "&Find...\tCrtl+F", ID_FIND MENUITEM "Find &next\tF3", ID_FIND_NEXT - MENUITEM "&Replace . . .\tCtrl+H", ID_REPLACE + MENUITEM "&Replace...\tCtrl+H", ID_REPLACE MENUITEM SEPARATOR MENUITEM "Read-&only", ID_EDIT_READONLY MENUITEM "&Modified", ID_EDIT_MODIFIED @@ -67,18 +67,18 @@ BEGIN MENUITEM "&Ruler", ID_TOGGLE_RULER MENUITEM "&Statusbar", ID_TOGGLE_STATUSBAR MENUITEM SEPARATOR - MENUITEM "&Options . . .", ID_VIEWPROPERTIES + MENUITEM "&Options...", ID_VIEWPROPERTIES END POPUP "&Insert" BEGIN - MENUITEM "&Date and time . . .", ID_DATETIME + MENUITEM "&Date and time...", ID_DATETIME END POPUP "F&ormat" BEGIN - MENUITEM "&Font . . .", ID_FONTSETTINGS + MENUITEM "&Font...", ID_FONTSETTINGS MENUITEM "&Bullet points" ID_BULLET - MENUITEM "&Paragraph . . ." ID_PARAFORMAT - MENUITEM "&Tabs . . ." ID_TABSTOPS + MENUITEM "&Paragraph..." ID_PARAFORMAT + MENUITEM "&Tabs..." ID_TABSTOPS POPUP "Backgroun&d" BEGIN MENUITEM "&System\tCtrl+1", ID_BACK_1 @@ -100,7 +100,7 @@ BEGIN MENUITEM "&Paste", ID_EDIT_PASTE MENUITEM SEPARATOR MENUITEM "&Bullet points" ID_BULLET - MENUITEM "&Paragraph . . ." ID_PARAFORMAT + MENUITEM "&Paragraph..." ID_PARAFORMAT END END diff --git a/programs/wordpad/Makefile.in b/programs/wordpad/Makefile.in index aa247f5f0ca..461da31d7ae 100644 --- a/programs/wordpad/Makefile.in +++ b/programs/wordpad/Makefile.in @@ -3,8 +3,8 @@ TOPOBJDIR = ../.. SRCDIR = @srcdir@ VPATH = @srcdir@ MODULE = wordpad.exe -APPMODE = -mwindows -IMPORTS = comdlg32 shell32 user32 gdi32 msvcrt advapi32 kernel32 comctl32 +APPMODE = -mwindows -mno-cygwin +IMPORTS = comdlg32 shell32 user32 gdi32 advapi32 kernel32 comctl32 EXTRAINCL = -I$(TOPSRCDIR)/include/msvcrt EXTRADEFS = -DNO_LIBWINE_PORT MODCFLAGS = @BUILTINFLAG@ diff --git a/programs/wordpad/wordpad.c b/programs/wordpad/wordpad.c index 4fa8009b856..92255fd6d22 100644 --- a/programs/wordpad/wordpad.c +++ b/programs/wordpad/wordpad.c @@ -1200,7 +1200,7 @@ static int current_units_to_twips(float number) static void append_current_units(LPWSTR buffer) { - static const WCHAR space[] = {' '}; + static const WCHAR space[] = {' ', 0}; lstrcatW(buffer, space); lstrcatW(buffer, units_cmW); } diff --git a/programs/xcopy/Makefile.in b/programs/xcopy/Makefile.in index f1fe31baf6b..18dd3ab4a94 100644 --- a/programs/xcopy/Makefile.in +++ b/programs/xcopy/Makefile.in @@ -3,8 +3,8 @@ TOPOBJDIR = ../.. SRCDIR = @srcdir@ VPATH = @srcdir@ MODULE = xcopy.exe -APPMODE = -mconsole -municode -IMPORTS = shell32 user32 msvcrt kernel32 +APPMODE = -mconsole -municode -mno-cygwin +IMPORTS = shell32 user32 kernel32 EXTRADEFS = -DUNICODE EXTRAINCL = -I$(TOPSRCDIR)/include/msvcrt MODCFLAGS = @BUILTINFLAG@ diff --git a/tools/wine.inf.in b/tools/wine.inf.in index 05e4f7d50c6..251f70662b8 100644 --- a/tools/wine.inf.in +++ b/tools/wine.inf.in @@ -2225,6 +2225,7 @@ HKLM,%CurrentVersion%\Telephony\Country List\998,"SameAreaRule",,"G" 10,system, 10,temp, 11,spool\drivers\color, +11,spool\printers, 10,,explorer.exe 10,,hh.exe 10,,notepad.exe @@ -2251,6 +2252,7 @@ HKLM,%CurrentVersion%\Telephony\Country List\998,"SameAreaRule",,"G" 11,,dsound.dll 11,,dsound.vxd 11,,gdi32.dll +11,,glu32.dll 11,,hhctrl.ocx 11,,imaadp32.acm 11,,imagehlp.dll diff --git a/tools/winedump/msc.c b/tools/winedump/msc.c index 7fb77c45b4e..60814c9c9bb 100644 --- a/tools/winedump/msc.c +++ b/tools/winedump/msc.c @@ -1189,13 +1189,19 @@ int codeview_dump_symbols(const void* root, unsigned long size) break; case S_MSTOOL_V3: /* info about tool used to create CU */ { - const unsigned short* ptr = ((const unsigned short*)sym) + 2; - + const unsigned short* ptr = ((const unsigned short*)sym) + 2; + const char* x1; + const char* x2 = (const char*)&ptr[9]; /* FIXME: what are all those values for ? */ printf("\tTool V3 ??? %x-%x-%x-%x-%x-%x-%x-%x-%x %s\n", ptr[0], ptr[1], ptr[2], ptr[3], ptr[4], ptr[5], ptr[6], ptr[7], - ptr[8], (const char*)(&ptr[9])); - dump_data((const void*)sym, sym->generic.len + 2, "\t\t"); + ptr[8], x2); + while (*(x1 = x2 + strlen(x2) + 1)) + { + x2 = x1 + strlen(x1) + 1; + if (!*x2) break; + printf("\t\t%s: %s\n", x1, x2); + } } break; -- 2.11.4.GIT