diff -Nru wine1.3-1.3.30/ANNOUNCE wine1.3-1.3.31/ANNOUNCE --- wine1.3-1.3.30/ANNOUNCE 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/ANNOUNCE 2011-10-21 18:38:36.000000000 +0000 @@ -1,17 +1,16 @@ -The Wine development release 1.3.30 is now available. +The Wine development release 1.3.31 is now available. What's new in this release (see below for details): - - DirectSound reimplemented on top of MMDevAPI. - - Support for StretchBlt in the DIB engine. - - User interface improvements in HTML help. - - Some MSXML fixes. - - Performance improvements in cmd. + - BiDi text support in the single-line edit control. + - Support for StretchDIBits and AlphaBlend in the DIB engine. + - A number of audio fixes. + - VBScript improvements. - Various bug fixes. The source is available from the following locations: - http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.3.30.tar.bz2 - http://prdownloads.sourceforge.net/wine/wine-1.3.30.tar.bz2 + http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.3.31.tar.bz2 + http://prdownloads.sourceforge.net/wine/wine-1.3.31.tar.bz2 Binary packages for various distributions will be available from: @@ -27,536 +26,565 @@ ---------------------------------------------------------------- -Bugs fixed in 1.3.30: +Bugs fixed in 1.3.31: - 201 Igowin: masking problem - image is not transparent - 4140 Emu48 with HP49 ROM: parts of emulated screen stays black - 5180 vb6 ide can't run a simple test case - 5181 vb6 can't compile a simple file - 5322 Both MSVC6 and MSVB6 installers die very early - 5623 GetAsyncKeyState wrong if querying process doesn't have focus - 5841 XML database manipulation through ADO nonfunctional (support for MSXML2.XMLPARSER.3.0 -> CLSID {F5078F31-C551-11D3-89B9-0000F81FE221} needed) - 6620 ALEPH500 crashes with X11DRV_DIB_DeleteDIBSection - 7182 Arabic letters not positioned correctly - 7563 neoragex 0.6b does not run - 9400 Panzer General III Scorched Earth random hang, threading-related - 9454 Panzer General III Scorched Earth hang with seh:setup_exception nested exception - 12450 Adobe Acrobat Pro 6 & 7 / Acrobat Reader 6 & 7 -- "Detect and Repair" does nothing (MsiReinstallProduct) - 13383 Firefox 3.0rc1 crashes on startup on 64bit Kubuntu 8.04 [dogfood] - 13502 BRenBot application fails to start - 13564 VeohTV beta login window is improperly drawn - 13885 Visio 2003 crash on digit entry or paste - 13985 Skype 4 crashes - 14118 wine needs its own dxdiag - 14316 Elona is really slow - 15186 Grand Theft Auto crashes on game engine start - 15187 Combos changes in Win16 dialogs not noticed by TopDraw - 15218 Microsoft Office 2007: Exiting Groove Manager/Server crashes in kernel32 - 15258 Program for programming HAM radios exits with 541 error - 15760 Wrong window size in QIP - 15945 WinSnap can't capture screen. - 16216 Arturia Minimoog VST: Interface controls doesn't draw well - 16270 ratDVD installer has (non-fatal) crash in winmm/time - 16491 Pindersoft DotNet Test hangs when advancing months (monthcal day state/notification data handling) - 16590 Audiosurf: Lines not breaking properly - 16594 Oberon game launcher does not show the buttons to launch the game. - 17068 HDR not correctly rendered (Counter-Strike: Source) - 17864 ipstats.c:1427: warning: 'append_udp_row' defined but not used on FreeBSD/OS X - 18086 Wine should provide a Tango compliant Icon - 18415 MarketMaker Crash during install - 18582 DVDFab: changing window focus causes window to shrink and can't bring back properly - 18651 Microsoft Reader hangs in full screen mode - 18979 Installation of Microsoft SQL Server Express crashes - 19196 XIII: no textures and fonts - 19310 Rosetta Stone crashes - 19645 Lotus 123 97 causes a page fault - 19740 Google Earth: "View in Google Maps" doesn't work (dogfood) - 19755 Open Watcom 1.8's binw/wcc.exe complains "Not enough memory on exec" - 19975 runasdate: child processes do not receive (adjusted) time - 19976 runasdate: running without /immediate causes a crash - 20009 Scrabble Online failed assertion - 20030 game, Taikodom doesn't run - 20364 The Dig (from STEAM) doesn't run on Arch Linux x86_64 - 20462 Unable to uninstall Caesar IV - 20565 Emu42: change in StretchBlt causes black display background - 20600 City of Heroes crashes when disabling 3D sound in preferences - 20688 FIFA 2010: Sound does not work in multiplayer (Internet Game) match - 20778 Open Office Writer crash when press on Hebrew letters - 20872 Sim City 4 Deluxe: No texture in the minimap while loading a city - 20873 SimCity 4 Deluxe crash while loading the game - 20966 Everquest 1 crashes on startup - 20980 Tiny globe in Google Earth in DirectX mode [dogfood] - 21144 cmd missing newline in output? - 21409 Progecad 2009 Pro crashes on save - save as - 21533 Civilization II 16-bit crashes when showing the main menu. - 21647 Random hang in Europa Universalis III - 21685 ICQ 7 exits on load - 21686 ICQ 7 page fault - 21710 MotorM4X menu background image is not shown - 21885 uTorrent: inactive toolbar buttons have non-transparent icons - 22787 Irfanview: Crashes after clicking on website link - 22982 SyncToy help links always lead to the default overview page - 23113 winrar 3.93 installer displays garbage instead of licensing agreement - 23619 GTA San Andreas doesn't find widescreen video modes - 23850 Aliens vs Predator (2010) silently exits during startup, needs IGameExplorer::VerifyAccess (parental controls) - 24153 Adobe Audition 3 parts of interface not drawn - 24278 Transparent PNG are shown inverted by applications compiled with Lazarus - 24297 Google Earth Plugin install via BITS quits with an error message - 24859 EnhanceMySe7en: Fails to start - 25293 Starcraft II cursor on-game is blank - 25448 Filemaker Pro 11 can't be started from Linux main menu icon - Invalid or incorrect link - 25524 Hexplore installer complains about not being able to open a tmp file. - 25549 Mega Games Pack fails to draw bitmap graphics - 25552 winecfg audio test under-run errors - 25591 MS Office Pro 2010 Trial: garbled display on ribbon and file tab - 25714 All tool buttons in CHM viewer are displayed as printer - 25948 explorerframe/nstc tests shows some a leak in comctl32 under valgrind - 26009 Adventure games from Kheops Studio have wrong text alignment - 26053 urlmon/sec_mgr tests show some invalid writes under valgrind - 26601 The Void: audio stutters badly (when using ALSA full hardware acceleration) - 26640 Disciples II: sound artifacts during music playback - 26816 native msi2 installer exits with status 20, can't get version of mspatcha.dll - 27283 can not start IBankWizard.msi installer - 27301 Space Empires: Star Fury doesn't display text in-game (orm=backbuffer) - 27382 WinRAR 4.x installer crashes when being run from certain filesystems - 27449 "pause" command behaviour differs from windows - 27540 Typing of the Dead demo: Crashes upon launch when directsound is set to emulation - 27542 Iexplore can't open url regression 2 - 27557 Alice: Madness Returns - Securom Matroschka doesn't work out of the box - 27928 Program SIMPLO installer crashes - 27981 Ems Mysql manager and Ems Sql Manager do not start anymore wine 1.3.25 - 27998 IE7 & IE8 have black back ground where page tabs should be and .GIF's no longer render - 28024 icy tower: installer wont launch - 28094 pwsafe 3.26: login box logo is replaced by a black square - 28112 Missing mouse cursor in menus of Atlantis Evolution - 28130 CamelSystems Power Post crashes - 28255 d3dx9/shader.ok fails with WINEDEBUG=warn+heap - 28262 mshtml/style.ok crashes when WINEDEBUG=warn+heap - 28284 HoverAce: audio becomes distorted then it cuts out during races (Alsa=emulation) - 28286 Backyard Baseball 2001 won't start - 28294 XPR108258.exe (csf player installer) crash - 28348 Age of Empires 2 rendering broken with OpenGL renderer - 28351 Hundred Swords demo: Fails to initialize Direct3D - 28369 WinRar 3.93 installer crashes after starting - 28376 djdecks for DX does not work - 28383 secur32/schannel test consistently fails on 32-bit debian testing - 28408 vbscript gc test crashes with WINEDEBUG=warn+heap - 28415 MIDI Broken (in, at least, the program VSTHost) - 28449 GnuTLS internal error in wine test case - 28466 Copy-Paste bug - 28484 .NET Framework 4.0: Crash after extracting files - unimplemented wer.WerReportAddDump - 28494 Purple areas in MS Word 2003's horizontal ruler - 28499 Enterprise Architect docked window icons fail no longer have a transparent background - 28502 Everest Poker and Casino crash when loading through proxy - 28517 Pikachu Volleyball stops playing sound effects - 28521 Black box around the mouse cursor - 28525 Wine doesn't start Dosbox if $PWD = ~/.wine - 28526 HTML-Kit 292's small icons have a white background - 28534 Igowin: miscolored shadows - 28561 crash while installing Vixi Freecorder with mono28/mono210 installed and without gecko-dbg installed - 28565 Mask color showing as background in toolbar buttons - 28566 winedbg crashes on gdb command remote file get - 28567 gdiplus/image.ok crashes on win64 - 28568 secur32/schannel test often hangs with gnutls 2.12.10-2 - 28587 League Of Legends PVP.net client can't retrieve profile information - 28591 Guild Wars: the audio track includes loud static bursts while playing the background music - 28606 Gnome-screensaver cannot lock screen while runing full-screen games - 28610 SystemParametersInfo(SPI_GETNONCLIENTMETRICS) should tolerate larger ncm.cbSize values - 28630 Crash on start of ahnenblatt + 7333 Where in the World is Carmen San Diego fails to install + 8498 builtin msxml3 fails to validate MSN Messenger's xml + 10112 BitBlt between 8 bit color index DIBs wrong + 10249 ollydbg complains about unexpected debug events from child processes after attaching to the debuggee + 10423 Painkiller Single-Player Demo #3: change in shader_glsl_lit() caused white turrets + 10910 winealsa and PulseAudio + 11167 Wrong usage of GL_GENERATE_MIPMAP_HINT_SGIS + 12071 MSI SQL joins on tables with many rows are extremely slow ("Nero 7 essentials", "NI Multisim 11.x" installer) + 12894 kernel32: thread test fails in PC-BSD but not Linux + 16549 Chuzzle causes page fault + 16822 Mass Effect: Mouse input does not work (almost completely) + 17206 alt.binz 0.24.6: Minimize to systray, icon flickers, right click on systray icon, icon menu won't disappear + 18140 FastMail: vertical stripes in the fields + 19037 CTRL key automatically released? + 19370 Secret of Monkey Island audio functioning is dependent on Wine's sample rate + 19522 Team Fortress 2 (TF2) missing menu fonts + 19558 Many Faces of Go 12 - Stone backgrounds are not transparent + 19971 NFS: Undercover crashes upon launch + 20554 Populous 3 fails to start + 21889 F/A-18E Super Hornet fails to start + 22683 Jedi Knight: Dark Forces II weapon is missing + 23480 AD-muncher does not install + 23658 Acclaim Re-Volt: All transparent objects not displayed correctly (black/blinky) + 23911 Mathcad 14: unimplemented function msvcr80.dll._getptd, aborting + 24024 CandyWorldSetup.exe from Candy World III: Heart of Heaven Demo show incorrect font + 24504 Plants vs Zombies: Game loses sound when restarting game + 24957 32-bit Explorer++ shows garbage in the status bar while opening menu bar menus + 25163 HTML broken in OpenDiscDVD application + 25251 Multi-byte characters handled incorrectly by MSVCRT_isleadbyte() + 25291 Galcon Fusion: Music doesn't works with hardware accelerated sound + 25774 Crysis demo: water flickering + 25971 UPX packed 'Link 7000 Plus' exits silently + 25978 Secret of Monkey Island wants msvcp80.dll.?classic@locale@std@@SAABV12@XZ + 26074 shell32/brsfolder tests show some valgrind warnings + 26087 Notepad++ 5.x: window "Find in files" does not respond + 26091 Finale 2010 - lines that are supposed to be dashed are solid + 26140 comdlg32/finddlg shows an uninitialized value under valgrind + 26187 Need For Speed: Underground crashes with extra effects enabled (blur, people) + 26486 Cannot run ArcGIS + 26552 Wine sets the resolution incorrectly on widescreen monitors + 26572 The 4th Coming: Deadlocks or crashes with "out of GDI object handles" errors + 27094 Lord of the Rings Online can't make entry in taskbar + 27101 Assassin's Creed Brotherhood needs msvcp90.dll.?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ (purist) + 27230 Corel Ventura 10's Installer hangs during setup process. Unable to finish setup. + 27261 first build of wine fails with "/usr/bin/ld: cannot find -lwinecrt0" + 27331 kernel32.GetLocaleInfoA/W needs to be more strict about invalid LCTYPE values (Dirt3 installer shows language selection with empty strings) + 27332 richedit EM_STREAMIN handler needs to return the number of characters read (Dirt3 installer shows error instead of EULA text) + 27507 Mount&Blade: Warband: Mouse pointer not shown in menu after entering battle mode + 27534 Call of Duty 4 MW: Graphical glitches when shooting + 27635 FlyLinkDC: Incorrect display images + 27682 Avant Browser needs HTMLDocument_elementFromPoint + 27762 EVE Online Singularity build crashes on start due to changes in winsock + 27956 Dragon Naturally Speaking: Sound no longer works; sample rates and size is no longer supported + 28056 Problems with sound under FreeBSD + 28086 Army Builder v3.3b: buttons not clickable + 28261 Original War: the user interface appears incorrectly (ddr=opengl) + 28291 Heroes III: sound stops and program hangs at exit + 28346 Paraworld hangs after playing the intro videos with Opengl renderer + 28352 Nightly (x64) needs msvcp90.dll.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z + 28356 Loki requires msvcp80.dll.??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDU_Size_type_nosscl@01@@Z + 28395 MAKING HISTORY II: The War of the World Demo wants msvcp90.dll.??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WU_Size_type_nosscl@01@@Z + 28397 gdi32/bitmap test broken on debian testing and ubuntu 11.04 + 28399 Kindle for PC needs msvcp90.dll.?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z + 28452 warning: argument to 'sizeof' in 'memcpy' call is the same expression as the source; did you mean to provide an explicit length? [-Wsizeof-pointer-memaccess] + 28454 Audacity 1.3 crashes on startup - unimplemented function msvcp90.dll.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z + 28485 Pegasus Mail version 4.62 crashes on startup (needs GetProcessDEPPolicy stub) + 28497 Dawn of War: Soulstorm no longer starts + 28500 Fails to parse DIM a statement that is on more than one line. + 28548 Messiah demo installer crashes (ddr=opengl) + 28551 Adobe Reader X fails to uninstall + 28560 Time is 1 hour behind in cmd.exe and notepad (F5) + 28569 From Dust installer wants url.dll.OpenURLA + 28574 Unimplemented function msvcp80.dll.?begin@?$basic_string@DU? $char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV? $_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ + 28588 Diner Dash 5 clicking sound during gameplay + 28594 mshtml/style.ok crashes when run without DISPLAY + 28616 Plants vs Zombies: no music + 28617 FlatOut 2 v1.2 crashes on launch (audio related) + 28619 Armored Fist 3: distorted audio playback + 28624 Unimplemented function msvcp80.dll.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z + 28625 Sanitarium: intermittent freezing while moving the mouse + 28642 Multiple apps crash on start (incl. Office 2007 & 2010) + 28644 Uru launcher using up CPU and RAM on startup + 28648 unable to run HelpNDoc - A program that helps you create chm files + 28662 kernel32/loader test crashes on FreeBSD7/9 (at least) + 28679 Corrupt sound in many apps + 28684 Incomplete check for Mesa's gl_vendor_string in wined3d_guess_card_vendor. + 28700 And Yet It Moves refuses to launch: 'err:seh:raise_exception Exception frame is not in stack limits' + 28707 Nightly (x64) needs msvcp90.dll.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z + 28714 vbscript/run.ok: invalid write in DispatchEx_Release + 28720 Kindle for PC needs msvcp90.dll.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z + 28722 Assassins Creed installer fails with GameuxInstallHelper.AddToGameExplorerW error 0x80040707 + 28731 Drakensang (The Dark Eye) crashes before reaching the main menu + 28732 use-after-free in MONTHCAL_UpdateSize + 28733 Rome: Total War segfaults on startup when multisampling enabled + 28737 shell32: invalid free in BrsFolderDlgProc in func_brsfolder in "make brsfolder.ok"? + 28740 Google Music Manager can't open music player + 28742 comctl32/tests/monthcal.ok: Invalid read in MONTHCAL_NotifyDayState() in test_daystate() + 28753 AniDB O'Matic shows exception dialog on startup (madcodehook, gcc 4.6.x frame pointer omission in Wine code) + 28773 Kindle for PC exposes some heap corruption in msvcp90 + 28780 VBScript fails to parse hex literals + 28791 XSetDashes is being passed 0 as one of the dashes causing a BadValue Error + 28794 user32:edit crashes on Mac + 28796 ntdll: read buffer overrun in lookup_manifest_file + 28811 Invalid read in ScriptBreak() + 28812 Uninitialized memory read in ContextualShape_Oriya() in test_ScriptShapeOpenType + 28813 usp10/tests: uninitialized stack variable in test_ScriptXtoX ---------------------------------------------------------------- -Changes since 1.3.29: +Changes since 1.3.30: -Akihiro Sagawa (2): - ddraw: Use the same device name as Windows for the Direct3D HAL device. - po: Update Japanese translation. - -Alexander Lakhin (1): - po: Update Russian translation. - -Alexandre Julliard (11): - winex11: Force the alpha channel to zero for mono->color blits. - winex11: Avoid recomputing the DC format when it hasn't changed. - winex11: Remove redundant pixmap prefix in X_PHYSBITMAP field names. - winex11: Pre-compute the color shifts for the supported XRender formats. - winecfg: Set the background color for the web link. - winex11: Get rid of the client-side DIB optimization in StretchBlt. - winex11: Fall back to the DIB engine for client-side stretching. - makedep: Ensure that error messages contain "error". - winex11: Remove no longer needed support for a source DIB color map in XRender StretchBlt. - winex11: Remove no longer needed support for a source DIB color map in X11 StretchBlt. - winex11: Force alpha channel to 0 when doing color conversion in PutImage. - -Alistair Leslie-Hughes (7): - msxml3: Support creating IXMLParser Interface. - mshtml: IID_IHTMLCurrentStyle4 isn't supported on IE6. - mscoree: Add ICorDebug interface support. - mscoree: Return S_OK from ICorDebug Initialize. - mscoree: Define ICorDebugManagedCallback2 and ICorDebugMDA interfaces. - mpr: Remove DllCanUnloadNow and DllGetClassObject. - mscoree: Implement ICorDebug SetManagedHandler. - -Andrew Eikum (21): - winealsa.drv: Remove wave, mixer, and dsound driver code. - wineoss.drv: Remove wave, mixer, and dsound driver code. - winecoreaudio.drv: Remove wave, mixer, and dsound driver code. - dsound: Remove hardware acceleration support. - dsound: Validate buffer pointers in Unlock methods. - winecfg: Replace DirectSound settings with Driver Diagnostics. - dsound: Reimplement rendering devices on mmdevapi. - dsound: Reimplement capturing devices on mmdevapi. - dsound: Reimplement PropertySet on mmdevapi. - dsound: Eliminate leftover driver structures. - mmdevapi: Don't fail if dwChannelMask is not set correctly. - wineoss.drv: Use a temporary OSS device to check format support. - winealsa.drv: Fix default device creation logic. - mmdevapi: Don't use invalid This pointer on static object. - winmm: Handle DRV_QUERYMAPPABLE in waveXxxMessage. - audio: Change winmm import to delayed import. - winecfg: Reload winmm for each sound test. - mmdevapi: Attempt to determine default devices from the registry. - winecfg: Allow user to select default audio devices. - dsound: Remove a few unused variables. - dsound: Fix fragment position calculations. - -Andrew Talbot (21): - cabinet: Mark some fall-throughs in switch statements. - comdlg32: Add a break statement to mark a semantic separation. - d3d10: Mark a fall-through in a switch statement. - d3dcompiler_43: Mark fall-throughs in switch statement. - ddeml.dll16: Move break outside of if statement. - dbghelp: Mark a fall-through in a switch statement. - gdi32: Mark a fall-through in a switch statement. - mapi32: Mark some fall-throughs in a switch statement. - msacm32: Mark fall-through in switch statement. - mshtml: Mark some fall-throughs in switch statements. - mshtml: Mark fall-through in switch statement. - msi: Add a break to a switch statement. - msi: Mark fall-throughs in switch statements. - msvcrt: Mark some fall-throughs in a switch statement. - msvcrt: Remove a superfluous semicolon. - msxml3: Add a break to a switch statement. - ntdll: Mark some fall-throughs in a switch statement. - oleaut32: Mark some fall-throughs in a switch statement. - jscript: Mark a fall-through in a switch statement. - jscript: Add breaks to some switch statements. - dsound: Remove unneeded address-of operator from function name. - -André Hentschel (13): - gdi32: Add traces for the gamma functions. - wer: Add stub for WerReportAddDump. - d3d9/tests: Don't test function directly when reporting GetLastError(). - shell32/tests: Don't test function directly when reporting GetLastError(). - user32/tests: Don't test function directly when reporting GetLastError(). - kernel32/tests: Don't test function directly when reporting GetLastError(). - ntdll/tests: Don't test function directly when reporting GetLastError(). - wininet: Fix UrlComponents initialisation. - winevdm: Don't give up if we can't shorten the current directory. - po: Update German translation. - ole32: Return if out of memory (Coverity). - tools: Upgrade the config.guess/config.sub scripts. - ntdll: Map ETIME to STATUS_IO_TIMEOUT. - -Aric Stewart (2): - usp10: Correct ScriptStringGetLogicalWidths to be based on char not glyph. - usp10: Handle the SSA_PASSWORD flag in ScriptStringAnalyse. +Alex Henrie (6): + po: Update Catalan translation. + po: Update Catalan translation. + winecfg: Add Catalan translation. + comctl32: Add Catalan translation. + comdlg32: Update Catalan translation. + shell32: Update Catalan translation. + +Alexander Morozov (2): + kernel32/tests: Shared lock can overlap exclusive if handles are equal. + server: Fix overlapping shared and exclusive locks support. + +Alexandre Julliard (41): + winex11: Fall back to client-side blit for color -> monochrome conversions. + winex11: Fall back to client-side blit when the source needs palette mapping. + winex11: Require an A8R8G8B8 format for blending with a source alpha. + gdi32/tests: Add tests for GdiAlphaBlend with source alpha. + gdi32: Add an AlphaBlend entry point in the DIB driver. + winex11: Get rid of the client-side DIB optimization in AlphaBlend. + gdi32: Add an all-one alpha channel when converting a DIB for blending. + gdi32: Move some common code out of the individual copy_rect functions. + gdi32: Add a helper function to look up color table entries, and default to 0 for missing entries. + gdi32: Add support for arbitrary DIB bitfields for 32-bpp conversions. + gdi32: Add support for arbitrary DIB bitfields for 16-bpp conversions. + gdi32: Get rid of the return value in DIB conversion functions, they never fail now. + gdi32: Add a check for null bitfields in SetDIBits. + gdi32: Add a helper for RGB to color index mapping to avoid redundant shifts. + gdi32: Use a reduced precision for RGB to palette mapping in DIB conversions. + gdi32/tests: Add tests for DIB conversions from various source formats. + gdi32/tests: Add more tests for arbitrary 32-bpp bitfields as destination. + gdi32/tests: Add more tests for various palette formats as destination. + gdi32: Overlapping rectangles are not allowed in GdiAlphaBlend. + gdi32: Implement a BlendImage entry point in the DIB driver. + gdi32/tests: Add test cases for DIB blending. + gdi32: Add a fall back implementation of BlendImage using client-side blending. + wineps: Get rid of the StretchDIBits entry point. + gdi32: Get rid of the DC_FUNCTIONS typedef. + gdi32: Return the correct error code when selecting objects in a metafile. + ntdll: Unwind the stack before calling exit/abort_thread on i386 the same way we do on x86_64. + ntdll: Fix string comparison against non null-terminated string (Valgrind). + gdi32: Add support for pushing a font driver on the DC driver stack. + gdi32: Add an initial Freetype font driver. + gdi32: Implement SelectFont as a standard driver entry point. + gdi32/tests: Add intermediate pointers to color tables to simplify the code and avoid array bounds warnings. + gdi32: Add an intermediate variable to avoid array bounds warnings. + gdiplus/tests: Add an intermediate variable to avoid array bounds warnings. + ntdll/tests: Clear the full atom structure before every test. + winex11: Chain to the next driver when not using a device font. + wineps: Chain to the next driver when not using a device font. + gdi32: Implement GetTextExtentExPointW as a standard driver entry point. + gdi32: Implement GetCharWidthW as a standard driver entry point. + xcopy: Fix varargs handling for 64-bit. + winex11: Filter out zero-size dashes for PS_USERSTYLE pens. + wineps: Add support for PS_USERSTYLE pens. + +Alistair Leslie-Hughes (6): + mshtml: Implement IHTMLDOMNode replaceChild. + mscoree: Add WARN when ICorDebugManagedCallback2 cannot be found. + url: Remove DllCanUnloadNow and DllGetClassObject. + mscoree: Register interfaces. + mmcndmgr: Add MMC interfaces. + mmcndmgr: Add mmcndmgr dll. + +Andrew Eikum (13): + winealsa.drv: Don't try to control ALSA's behavior. + wineoss.drv: Trim the sub-device part of the device path. + wineoss.drv: Only write as much data as will fit into the OSS buffer. + winmm: Also track input device position. + winmm: Use buffer offset when recording. + dsound: Request a more exact buffer size from MMDevAPI. + winecoreaudio.drv: Don't fail if setting volume fails. + winealsa.drv: Fix invalid pointer dereference on error path. + dsound: Fix type conversion problems. + dsound: Don't make the capture buffer object address public until it is prepared. + shell32: ShellExec with empty operation should behave same as with NULL operation. + dsound: Don't claim to support hardware buffers. + dsound: Always enumerate the default device first. + +Andrew Talbot (7): + windowscodecs: Mark some fall-throughs in switch statements. + winealsa.drv: Add some return statements to mark semantic separations. + wined3d: Mark some fall-throughs in switch statements. + winex11.drv: Mark some fall-throughs in switch statements. + wininet: Add a break to a switch statement. + ws2_32: Mark a fall-through in a switch statement. + ws2_32: Replace switch statement with more suitable if statement. + +André Hentschel (6): + include: Add more postscript commands. + wineps.drv: Print the commands in decimal. + dbghelp: Remove superfluous PATH_MAX defines. + mshtml: Add stub for QUERY_IS_CACHED_AND_USABLE_OFFLINE. + dbghelp: Rewrite stabs parsing to not need PATH_MAX. + msvcr90: Add x86_64 stubs and forwards. + +Aric Stewart (17): + user32: Use uniscribe ScriptBreak to handle edit control linebreaking. + usp10: Improve handling of tabs and SSA_TAB. + usp10: Implement SSA_FALLBACK. + usp10: Correct where the trailing flag transitions in the middle of a glyph. + usp10: Correct buffer reading overrun. + usp10: Add fallback font for Armenian and Georgian. + usp10: Handle the fNeedsCaretInfo flag in XtoCP and CPtoX. + usp10: Break out get_cluster_size and use it to correct ScriptStringGetLogicalWidths for clusters. + usp10: Handle advance for multi-glyph clusters correctly. + usp10: Properly adjust LogClust when composing indic consonants. + usp10: Properly adjust LogClust when decomposing indic vowels. + user32: Use Uniscribe in the single line edit control. + usp10: Handle multi-glyph clusters in ScriptStringOut. + user32: Recalculate string length when cropping string to fit. + usp10: Correct read overflow in ScriptBreak found by Valgrind. + usp10/tests: Initialize our SCRIPT_VISATTR array. + usp10: Correct some reading buffer overruns when parsing indic syllables. -Aurimas Fišeras (4): - winecfg: Update Lithuanian translation. +Aurimas Fišeras (3): po: Update Lithuanian translation. - winecfg: Update Lithuanian translation. + comdlg32: Update Lithuanian translation. po: Update Lithuanian translation. -Bernhard Loos (7): - server: Store sharing state for named pipes. - server: Only the sharing parameter of two instances of the same pipe have to match. - server: Sharing 0 is not allowed for named pipes. - server: It's possible to call NtQueryInformationFile on a pipe if it was opened with access 0. - server: Correctly implement permission checking for named pipes. - ntdll: Implement the NamedPipeConfiguration value for the FilePipeLocalInformation class of NtQueryInformationFile. - server: If a debugger is attached to a process, child processes shouldn't get debugged. - -Bruno Jesus (1): - ws2_32: Fix UDP LINGER support in getsockopt. - -Charles Davis (7): - libwine: Fix resetting the install_name on Mac OS. - winegcc: On Mac OS, turn -s into -Wl,-x. - loader: Fix constant address warning on Mac OS. - iphlpapi: Implement GetUdpTable() on Mac OS and the BSDs. - server: Use syscall(2) instead of inline assembly on Mac OS, too. - winemenubuilder: Don't define crc16() on Mac OS. - wldap32: Silence a compiler warning. - -Damjan Jovanovic (1): - windowscodecs: Read PNGs sequentially. - -Dmitry Timoshkov (5): - kernel32: Add a bunch of VirtualProtect tests. - ntdll: Use STATUS_INVALID_PAGE_PROTECTION as return value for invalid protections. - kernel32: Fix a typo in the LoadLibrary return value testing. - user32: Add support for iPaddedBorderWidth in NONCLIENTMETRICS. - user32: Fix the logic deciding when to write to the destination structure. - -Dylan Smith (4): - richedit: Return number of bytes read for EM_STREAMIN with SF_TEXT. - richedit: Return number of chars inserted for EM_STREAMIN with SF_RTF. - riched20/tests: Avoid using flaky method of simulating typing. - riched20/tests: Remove unnecessary SetFocus calls. - -Eric Pouech (1): - winedbg: Don't assert() on unsupported v-packets, but rather report an error. - -Erich Hoover (7): - hhctrl.ocx: Use the STD_PROPERTIES icon for the 'Options' toolbar button. - hhctrl.ocx: Use a modified (two color) refresh icon for the 'Sync' toolbar button. - hhctrl.ocx: Use separate icons for 'Hide' and 'Show' toolbar buttons based on the HIST_VIEWTREE icon. - hhctrl.ocx: Use the correct values for current_tab when some tabs are disabled. - hhctrl.ocx: Default to the correct tab for different HH_DISPLAY_* values. - hhctrl.ocx: Open a specific topic when requested. - hhctrl.ocx: When called as a program, quit when HtmlHelp call fails. - -Francois Gouget (21): - po: Mark a number of obviously incomplete cmd help messages as fuzzy in the Turkish translation. - oleview: Separate the file filters with a space. - winecfg: Separate the file filters with a semi-colon and a space. - wordpad: Use a lowercase extension in a file filter. - comctl32/tests: Add basic tests for the SysLink control. - comctl32: Send a WM_CTLCOLORSTATIC message and erase the background while painting. - gdi32/tests: Use if(0) instead of #if 0 to make sure code still compiles. - msi/tests: Avoid #if 0 to make sure code still compiles. - d3drm/tests: Remove an unneeded assert.h include. - shell32: Add definitions for the IEnumACString interface. - gdi32: The GetKerningPairsA() test should pass on all the platforms we care about now. - tests: Remove unneeded assert.h includes. - Assorted spelling fixes & co. - po: Mark translations with mismatched printf format directives as fuzzy. - browseui/tests: Skip some tests if IEnumACString is not supported. - kernel32: Reset LastError if GetModuleFileName() succeeds. - kernel32/tests: Check what happens if QueryDosDeviceA() is given an insufficient buffer. - kernel32/tests: Test K32GetProcessImageFileNameA() and improve the QueryFullProcessImageNameA() tests. - kernel32/tests: Better check the NT path returned by QueryFullProcessImageName(). - kernel32: Fix the NT path returned by QueryFullProcessImageName(). - ntdll: ETIME is not defined on FreeBSD. - -Frédéric Delanoy (20): - cmd: Use helper function to return file io buffer. - cmd: Add WCMD_output_stderr function to output error messages to stderr. - cmd: Output error messages to stderr where appropriate. - cmd: Fix WCMD_fgets documentation. - cmd: Fix comments in WCMD_color. - msvcrt/tests: Remove dead assignments (Clang). - cmd: Avoid reading char by char from console. - cmd: Avoid checking whether we're in console mode for every read. - cmd: Get rid of unused parameter in WCMD_ReadFile. - cmd/tests: Don't convert lines with DOS endings in convert_input_data. - cmd: Output error messages to stderr instead of stdout where appropriate. - cmd: Improve WCMD_fgets documentation. - cmd: Handle truncation for console reads. - cmd: Avoid dead assignments (Clang). - cmd: Improve handle type recognition in WCMD_ReadFile. - cmd: Rename a parameter in WCMD_fgets. - cmd: Infer handle type from handle value in WCMD_fgets and WCMD_ReadAndParseLine. - cmd: Avoid reading char by char from files. - cmd: Consistently use infinitive forms in commands help summary. - cmd: Make PAUSE accept any keypress instead of a full input line. - -Hans Leidekker (7): - wtsapi32: Return success from WTSRegisterSessionNotification. - explorer: Add a version resource. - wininet: Ignore the accept types array in HttpOpenRequestA if there are invalid pointers. - msi/tests: Properly preserve pending file renames. - include: Add patchapi.h. - mspatcha: Forward ApplyPatchToFileA to ApplyPatchToFileW. - mspatcha: Add a stub implementation of GetFilePatchSignatureA/W. - -Henri Verbeet (10): - secur32: Use gnutls_record_get_max_size() to get the maximum message size. - secur32: Return failure if chan_EncryptMessage() can't encrypt the entire buffer. - secur32: Properly handle GNUTLS_E_AGAIN in (GnuTLS) schan_imp_send(). - secur32: Properly handle GNUTLS_E_AGAIN in (GnuTLS) schan_imp_recv(). - wined3d: Make the device parameter to wined3d_device_present() const. - secur32: Handle the schan_buffers limit field in schan_get_buffer() instead of schan_pull(). - wined3d: Return WINED3DERR_NOTFOUND if the render target is NULL in wined3d_device_get_render_target(). - d3d9/tests: Add a test for IDirect3DDevice9::GetRenderTarget(). - winex11: Print the GL renderer and version when complaining about software / indirect rendering. - wined3d: Make the device parameter to wined3d_device_get_primitive_type() const. - -Huw Davies (15): - gdi32: Make clip_line external. - gdi32: stretch_bitmapinfo may need to adjust the dst visrect. - gdi32: Implement stretch_bitmapinfo. - gdi32: Forward StretchBlt calls from the dib driver to the null driver. - gdi32: Use a separate variable to indicate the default has been retrieved. - winex11: Remove some unused function ptrs. - winex11: Initialise the dib color table. - gdi32: Display the depth of a bitmap rather than the total number colors. - gdi32: Keep track of the english family name if there's a localised name as well. - gdi32: Move the font list initialisation to a separate function. - gdi32: Cache the loaded font list properties. - gdi32: Load the font properties from the cache if it exists. - gdi32: Move some common default fonts to the head of the font list. - gdi32: Require that we have freetype's FT_Load_Sfnt_Table function and remove the hacky fallback. - wineps: The truetype metrics should now be obtained from gdi32, so remove obsolete code. +Austin English (4): + wined3d: Recognize "Brian Paul" as a mesa card vendor. + d3d9/tests: Only skip the visual tests if d3d cannot be initialized on Windows. + configure: Use -fno-omit-frame-pointer when available. + kernel32: Add a stub for GetProcessDEPPolicy. + +Bernhard Loos (5): + server: PIPE_TYPE_BYTE | PIPE_READMODE_MESSAGE is invalid for named pipes. + ntdll/tests: FILE_OVERWRITE and FILE_OVERWRITE_IF aren't legal for NtCreateNamedPipeFile. + msi: Reorder tables to optimize condition evaluation. + msi: Get rid of JOINVIEW. + msi: Always use WHEREVIEW for sorting. + +Charles Davis (2): + ntdll: Also set CPU_FEATURE_HTT on Mac OS. + libwine: Fix linking with non-Apple GCC. + +Dan Kegel (6): + msi: Initialize variable to placate static analyzers. + winealsa.drv: When allocating opaque blobs for alsa, initialize them to zero. + gdiplus/tests: Must define biClrUsed when calling CreateDIBSection. + shlwapi/tests: Initialize size parameter in test_SHGetShellKey. + comdlg32/tests: Initialize find & replace strings before testing FindTextA, etc. + mlang/tests: Don't call lstrcpyW on a null string. + +Daniel Santos (2): + winex11.drv: Add on-screen PS_USERSTYLE support to pens. + gdi32: Remove PS_USERSTYLE FIXME and workarounds. + +Dmitry Timoshkov (4): + user32: Respect the requested size of NONCLIENTMETRICSW structure. + ntdll: FreeBSD needs page read access when execute access is requested. + ntdll: Move adding VPROT_READ for Solaris to the same place where it's done for FreeBSD. + ntdll: Take into account timezone bias changes when detecting daylight saving rules. + +Dylan Smith (1): + d3dx9: Removed a duplicate NULL check. + +Francois Gouget (10): + comctl32/tests: Make impl_from_IStream() static. + po: Fix translations with a mismatched '\n' ending or mark them as fuzzy. + po: Fix Catalan translations with a mismatched '\n' ending. + xcopy: Reorder the functions to avoid forward declarations. + xcopy: Use FormatMessage() for better internationalization support. + shlwapi: Don't use a long where an int is more than big enough. + winefile: Fix a string resource so its format placeholders can be reordered. + wineconsole: Fix a string resource so its format placeholders can be reordered. + attrib: Use FormatMessageW() for better internationalization support. + net: Use FormatMessageW() for better internationalization support. + +Frédéric Delanoy (17): + po: Update French translation. + cmd/tests: Add MOVE tests. + cmd/tests: Show that read-only files are MOVEable. + cmd: Make MOVE work for read-only files. + inetmib1: Avoid idempotent operation in findSupportedQuery function (Clang). + cmd/tests: Add tests for directories RENAMEs. + cmd/tests: Show that read-only files are RENAMEable. + cmd: Make RENAME work for read-only files. + cryptui: Avoid idempotent operation (Clang). + po: Update French translation. + cmd: Rename WCMD_opt_s_strip_quotes function. + dmime: Avoid idempotent operation (Clang). + mlang/tests: Fix a typo. + dinput: Avoid casting return value of HeapAlloc calls. + dpnet/tests: Avoid casting return value of HeapAlloc calls. + msvcrt: Avoid superfluous cast of MSVCRT_malloc return value. + cmd: Constify WCMD_pushd parameter. + +Hans Leidekker (3): + msi: Don't attempt to patch files if the component action resolves to anything other than INSTALLSTATE_LOCAL. + msi: Properly build the shortcut target path. + cryptnet: Respect proxy settings. + +Henri Verbeet (35): + gameux: Parse GDFs in a separate thread. + gameux/tests: Run the game explorer tests in a multithreaded apartment as well. + wined3d: Make the device parameter to wined3d_device_get_front_buffer_data() const. + wined3d: Make the device parameter to wined3d_device_validate_device() const. + wined3d: Make the device parameter to wined3d_device_get_software_vertex_processing() const. + gameux: Don't shadow hr in GAMEUX_RegisterGame(). + wined3d: Get rid of the mostly unused "pfd" variable in context_create(). + wined3d: Cleanup context_create() error handling a bit. + wined3d: Make the device parameter to wined3d_device_get_raster_status() const. + wined3d: Make the device parameter to wined3d_device_get_npatch_mode() const. + wined3d: Don't bother updating the context's window in context_destroy_gl_resources(). + wined3d: Don't try to access the swapchain of a destroyed context in context_set_gl_context(). + wined3d: Also restore the pixel format in context_restore_gl_context(). + wined3d: Make the device parameter to wined3d_device_get_render_target() const. + wined3d: Make the device parameter to wined3d_device_get_depth_stencil() const. + wined3d: Keep surfaces in sysmem if they're both already there in wined3d_surface_blt(). + wined3d: Mark default pool surfaces lost when they're unloaded. + ddraw: Destroy the swapchain in ddraw_destroy() if it still exists. + wined3d: Make the device parameter to invalidate_active_texture() const. + wined3d: Make the device parameter to is_display_mode_supported() const. + ddraw: Initialize the surface desc's dwFlags field to 0 before surface locks. + ddraw: Clear attached_iface before releasing it in ddraw_surface_delete_attached_surface(). + wined3d: Detach any attached overlays on surface cleanup. + wined3d: Make the present_parameters parameter to wined3d_device_reset() const. + wined3d: Make the device parameter to wined3d_device_get_creation_parameters() const. + wined3d: Allow loading multisampled surfaces into sysmem. + d3d8/tests: Add a small test for multisampled CopyRects(). + d3d9/tests: Add a small test for multisampled GetRenderTargetData(). + wined3d: Make the device parameter to wined3d_device_set_gamma_ramp() const. + wined3d: Make the device parameter to wined3d_device_get_gamma_ramp() const. + wined3d: Move the cursor in wined3d_device_set_cursor_position(). + d3d8/tests: Add a small test for IDirect3DDevice8::SetCursorPosition(). + d3d9/tests: Add a small test for IDirect3DDevice9::SetCursorPosition(). + wined3d: Make the device parameter to wined3d_device_get_surface_from_dc() const. + wined3d: Make the device parameter to context_choose_pixel_format() const. + +Huw Davies (25): + gdi32: Remove no longer needed include file. + gdi32: Now that we require a less ancient freetype, we can assume several other functions are also present. + gdi32: Add a helper to retrieve the bounding rectangle. + gdi32: The text extents functions fail if passed a negative count. + gdi32: Move to a more scalable mechanism for picking the default fonts. + gdi32: Add the liberation fonts to the default fallback lists. + gdi32: Use the helper to get the bounding rectangle. + gdi32: Allow a caller to build_rle_bitmap to not request the clip region. + gdi32: Move the intersection of vis rects into a separate function. + gdi32: Make the convert_bits and stretch_bits helpers external. + gdi32: Implement nulldrv_StretchDIBits using the PutImage gdi driver function. + gdi32/tests: Add some StretchDIBits tests. + gdi32/tests: Remove unused legacy values. + gdi32: Introduce a unified function to perform COLORREF to pixel color mapping. + gdi32: Add support for non-rgb colorrefs. + gdi32/tests: Add tests for non-rgb colorrefs. + gdi32: Add pixel_to_colorref primitives. + gdi32: Implement SetPixel. + gdi32/tests: Add tests for SetPixel. + gdi32: Add get_pixel primitives. + gdi32: Implement GetPixel. + gdi32/tests: Add tests for GetPixel. + gdi32/tests: Remove the no longer used todo functionality of the test_color macro. + gdi32: Fix character code metrics for bitmap fonts. + gdi32: Add a fake 1-entry color table for 1-bpp ddbs. -Hwang YunSong (3): +Hwang YunSong (2): po: Updated Korean translation. po: Updated Korean translation. - winecfg: Updated Korean translation. -Jacek Caban (2): - mshtml: Set frame interface to NULL after releasing it in IOleInPlaceObjectWindowless::InPlaceDeactivate. - mshtml: Properly release body element in basic_style_test. - -Jörg Höhle (6): - winealsa: Simplify the test for 8bit linear PCM. - wineoss: Simplify the test for 8bit linear PCM. - winmm: Fix sum of available samples. - winmm: Separate WINMM_Pause and WINMM_Reset. - winmm: waveOutReset returns all buffers. - winmm: Mark headers WHDR_DONE at the last possible time. - -Louis Lenders (6): - dpnet: Fill the DPN_SP_CAPS structure in IDirectPlay8Peer_GetSPCaps with some sane values + tests. - gdiplus: Return zero properties in stubbed GdipGetPropertyCount. - include: Add lmat.h. - netapi32: Add stub for NetScheduleJobEnum. - wine.inf: Add key for InstallDate under CurrentVersionNT. - dwmapi: Add stub for DwmRegisterThumbnail. +Jacek Caban (28): + vbscript: Pass arguments to 1-arg functions directly if they are VT_VARIANT|VT_BYREF. + vbscript: Added Hex function implementation. + vbscript: Added Hex function tests. + vbscript: Make sure to remove an object from object list in collect_objects. + vbscript: Keep script context alive after Close call, but make it reusable. + vbscript: Added more script state tests. + vbscript: Properly release global variables. + vbscript: Added more releasing tests. + shlwapi: Make sure we don't write anything to output buffer if its size is too small to store the whole result. + vbscript: Added lexer support for '_'. + mshtml: Better error handling in NSContainer initialization. + vbscript: Added support for hex literals not ending with '&'. + mshtml: Added IHTMLDocument2::elementFromPoint implementation. + urlmon: Skip tests that fail on too old IEs. + wscript: Added tests using vbscript. + mshtml.idl: Added IHTMLWindow5 and IHTMLStorage declarations. + mshtml: Added IHTMLWindow6 stub implementation. + vbscript: Get rid of no longer needed VB_VARIANT|VT_BYREF in Global_IsObject. + vbscript: Added Global_IsEmpty implementation. + vbscript: Added Global_isNull implementation. + ieframe: ieframe variant of IEWinMain is Unicode. + vbscript: Added vbSunday constant implementation. + vbscript: Added remaining week day constants implementations. + hlink: Reorder functions to avoid vtbl forward declaration. + hlink: Don't use WINAPI for internal functions. + hlink: Moved HLinkBrowseContext_Constructor to avoid vtbl forward declaration. + hlink: Return S_FALSE in GetTargetFrameName when returning NULL. + hlink: Added TargetFrameName tests. + +Juan Lang (2): + shell32: Check size of input parameters before copying to fixed length buffers. + shell32: Use existing buffer rather than copying, and potentially truncating, a filename prior to executing it. + +Ken Sharp (3): + ntdll: Update Win2k8 to SP2. + winecfg: Update English resource. + browseui: Update English resources. + +Ken Thomases (4): + winecoreaudio: Fix a leak. + winecoreaudio: Fix a test for allocation failure (copy/paste error). + winecoreaudio: Avoid an extra copy/conversion of a string. + winecoreaudio: Improved tracing. + +Louis Lenders (2): + kernel32: Add stub for GetThreadPreferredUILanguages. + kernel32: Add stubs for several SRW lock functions. -Luca Bennati (1): +Luca Bennati (7): + po: Update Italian translation. + dinput: Add Italian translation. + inetcpl: Update Italian translation. + comdlg32: Update Italian translation. + winecfg: Update Italian translation. + po: Update Italian translation. po: Update Italian translation. -Maarten Lankhorst (2): - quartz: Fix support for mpeg layer 1 and 2. - winemp3: Add support for WAVE_FORMAT_MPEG. - -Marcus Meissner (13): - dpnet: Fixed bad pointer addition (Coverity). - wpp: Add semicolons at end of code rules. - dibdrv: Mark get_rop_codes as hidden. - mscoree: Mark cordebug_init as hidden. - mshtml: Mark replace_node_by_html as hidden. - vbscript: Mark some symbols as hidden. - msdaps: Mark create_* functions as hidden. - dsound: Mark enum_callback and search_callback static. - winex11.drv: Mark xrenderdrv_ExtTextOut as static. - winmm: Mark two functions as hidden. - ole32: Mark two functions as hidden. - dsound: Make a function static, remove a no longer used array. - kernel32: Fixed QueryDosDeviceNameW size (chars not bytes). - -Marko Nikolic (3): - comctl32/tests: Removed sign comparison warning in dpa tests. - advapi32: Removed sign comparison warning. - comctl32/tests: Removed sign comparison warning in datetime tests. - -Matteo Bruni (5): - wined3d: When creating a new shader, check shader type and version. - d3d10core: Fixup HRESULT in a bunch of error cases. - d3d8/tests: Test creating shaders with wrong type or version. - d3d9/tests: Test creating shaders with wrong type or version. - d3d10core/tests: Add some shader creation tests. +Marcus Meissner (20): + winhttp: Fixed sizeof calls (Coverity). + wined3d: Fixed sizeof (Coverity). + dsound: Added missing LeaveCriticalSection (Coverity). + winecfg: Added missing break (Coverity). + user32: Load PaddedBorderWidth from registry too (Coverity). + usp10: Fixed some oom handling (Coverity). + dsound: Remove dead code from mixer (Coverity). + setupx.dll16: Fixed bad sizeof() (Coverity). + msvcrt: Replaced bad memcpy by strcpy (Coverity). + msvcrt: Use correct sizeof to realloc (Coverity). + mshtml: Adjusted some incorrect sizeofs (Coverity). + gdi32: Remove a incorrect sizeof from pointer arithmetic (Coverity). + explorerframe: Fixed incorrect sizeof (Coverity). + directshow: Removed bad sizeof in copy/pasted code (Coverity). + ddraw: Lowercase variable names to fix a incorrect sizeof() (Coverity). + shlwapi: Fixed bad pointer arithmentic by removing sizeof() (Coverity). + user.exe16: Fixed incorrect sizeof() (Coverity). + ntdll: Avoid shadowing "de" variable. + ntdll: Avoid shadowing size variable. + ntdll: Avoid shadowing "p" variable. + +Matteo Bruni (1): + wined3d: Remove an obsolete comment. Michael Mc Donnell (1): - d3dx9_36/tests: Fixed adjacency double free (valgrind). + shell32: Set pointer to NULL after free to avoid double free. + +Michael Stefaniuc (5): + msi: Move a TRACE before the continue (Smatch). + msi: Remove a break after return (Smatch). + msi: Remove a redundant NULL check before free (Smatch). + urlmon: Remove a redundant NULL check before free (Smatch). + winealsa.drv: Remove redundant NULL checks before free (Smatch). + +Nikolay Sivov (3): + ntdll: Fix SID data copy length. + comctl32/monthcal: Update pointer after reallocation (Valgrind). + comctl32/tests: Make state data accessible to caller (Valgrind). + +Octavian Voicu (3): + ddraw/tests: Test detachment of attached surfaces on Release. + ddraw: Be consistent about param and local var naming across AddAttachedSurface implementations. + ddraw: Keep track of interface attached by AddAttachedSurface and detach correct interface when parent is released. + +Piotr Caban (36): + msvcrt: Don't overwrite mbcinfo inside setlocale. + msvcrt: Handle C locale in _setmbcp. + msvcrt: Use ismbcodepage instead of mb_cur_max in mbcodepage dependent functions. + msvcrt: Use _ismbblead instead of _isleadbyte in mbcodepage dependent functions. + msvcrt: Move _pctype definition to locale.c. + msvcrt: Added _mbtowc_l implementation. + msvcrt: Don't duplicate _setmbcp functionality inside _create_locale function. + msvcp90: Added basic_string::find_first_not_of implementation. + msvcp90: Added operator+(basic_string, char) implementation. + msvcp90: Added basic_string::reserve implementation. + msvcp90: Added basic_string::replace implementation. + msvcp90: Added basic_string::replace implementation. + msvcp90: Added basic_string::operator[] implementation. + msvcp: Sync spec files. + msvcrt: Added missing calling convention specification. + msvcrt: Fix handling of locales without region in MSVCRT_locale_to_LCID. + msvcp90: Added basic_string::operator<= implementation. + msvcp90: Added basic_string::operator> implementation. + msvcp90: Added basic_string::operator>= implementation. + msvcp90: Added more basic_string::assing functions. + msvcp90: Added more basic_string constructor implementations. + msvcp90: Added basic_string::max_size implementation. + msvcp90: Remove code that is never executed. + msvcp90: Added _String_val class implementation. + msvcp: Sync spec files. + msvcp90: Added basic_string::rfind implementation. + msvcp90: Added basic_string::find_last_not_of implementation. + msvcp90: Added basic_string::replace iterator based functions. + msvcp90: Added basic_string::erase iterator based functions. + msvcp90: Added basic_string::get_allocator implementation. + msvcp90: Fix buffer size in basic_string_char_grow. + msvcp90: Use debugstr_a to avoid overflow in traces. + msvcp: Sync spec files. + msvcrt: Initialize all ctype fields. + shell32: Don't convert output parameter in SHBrowseForFolderA (Valgrind). + shell32/tests: Fix uninitialized memory access (Valgrind). + +Ričardas Barkauskas (12): + ddraw: Use unsafe_impl_from_IDirect3DDevice for application provided interfaces. + ddraw: Rename device_from_device1 to impl_from_IDirect3DDevice. + ddraw: COM cleanup for IDirect3DDevice interface. + ddraw: Use unsafe_impl_from_IDirect3DDevice2 for application provided interfaces. + ddraw: Rename device_from_device2 to impl_from_IDirect3DDevice2. + ddraw: COM cleanup for IDirect3DDevice2 interface. + ddraw: Use unsafe_impl_from_IDirect3DDevice3 for application provided interfaces. + ddraw: Rename device_from_device3 to impl_from_IDirect3DDevice3. + ddraw: COM cleanup for IDirect3DDevice3 interface. + ddraw: Use unsafe_impl_from_IDirect3DDevice7 for application provided interfaces. + ddraw: Use impl_from_IDirect3DDevice7 for application provided interfaces. + ddraw: COM cleanup for IDirect3DDevice7 interface. + +Stefan Dösinger (3): + d3d8: Remove the palette implementation methods. + d3d9: Remove the palette implementation methods. + wined3d: Remove d3d8/9 palette support. -Michael Stefaniuc (28): - wineqtdecoder: Use FAILED instead of !SUCCEEDED. - oleaut32/tests: Use FAILED instead of !SUCCEEDED. - wshom.ocx: Don't bother with a FIXME in DllCanUnloadNow(). - ieframe: Don't open code CONTAINING_RECORD(). - krnl386.exe16: Don't open code CONTAINING_RECORD(). - shell32: COM cleanup in shellpath.c. - shell32: Pass the object instead of the iface to helper functions. - d3dx9_36/tests: Avoid using fmaxf. - comctl32/tests: Standardize COM in imagelist.c. - comctl32/tests: Don't accept Win95 behavior. - gameux: Don't compare with TRUE. - sane.ds: Don't compare with TRUE. - wordpad: Don't compare with TRUE. - msxml3: Use SUCCEEDED instead of !FAILED. - oleaut32: Fix some VarCyFrom* tests. - oleaut32/tests: Make the EXPECT_* macros that take no args more robust. - oleaut32/tests: Cleanup the EXPECTRES macros. - include: Remove 'l' modifier from numeric constants in winerror.h. - quartz: Free two assert calls from having side effects. - dsound: COM cleanup for the IDirectSoundCapture iface. - shell32: Merge enumidlist.h into the main header file. - shell32: Pass an object instead of an iface to a helper function. - shell32: Basic COM cleanup for the IEnumIDList iface. - shell32: Avoid the forward declaration of the IEnumIDList vtbl. - shell32: Get rid of a local typedef for a struct. - shell32: Simplify RecycleBin_EnumObjects() a little. - shell32: Return the IEnumIDList object on its creation. - shell32: Avoid an unsafe iface to object cast in AddToEnumList(). - -Nikolay Sivov (20): - comctl32/monthcal: Fix week numbers background color. - comctl32/monthcal: Also invalidate today label while setting new today date. - comctl32/monthcal: After notification safely free buffer allocated on heap. - comctl32/tests: Fix a test that depends on control size. - comctl32/treeview: Free checkbox imagelist when control is about to be killed. - kernel32/tests: Move CompareStringA data to a table. - msxml3: Accept disabling of external entities loading. - msxml3: Accept disabled parameter entities feature. - msxml3: Accept lexical handler parameter entities switch. - msxml3: Accept DTD prohibition feature. - msxml3: Support setting unlimited xml stream length for a reader. - msxml3: Support setting unlimited nesting depth for a reader. - msxml3: Support setting namespaces feature to default value. - msxml3: Use provided qualified name length while writing end element tag. - advapi32/tests: Add one more QueryServiceStatusEx() test. - msxml3: Add some useful traces and demangle some parameter names. - msxml3: Use helper to set properties. - msxml3: Use a helper to get property values. - oleaut32/typelib: Properly handle allocation failure on creation. - oleaut32/typelib: Use BSTR for filename. - -Peter Schellenbach (1): - comctl32/statusbar: Fixed missing icon in owner draw panels. - -Piotr Caban (4): - msvcrt: Fix wcsncpy_s implementation. - msvcrt: Fix __pioinfo block size. - msvcrt: Free fd entries with incorrect HANDLE value. - msvcrt: Added _iswdigit_l implementation. - -Ričardas Barkauskas (9): - ddraw: Use unsafe_impl_from_IDirectDrawPalette for application provided interfaces. - ddraw: COM cleanup for the IDirectDrawPalette interface. - ddraw/tests: IDirect3DViewport3, IDirect3DViewport2 and IDirect3DViewport use same implementation. - ddraw: Use unsafe_impl_from_IDirect3DViewport3 for application provided interfaces. - ddraw: Use impl_from_IDirect3DViewport3 instead of cast to IDirect3DViewportImpl*. - ddraw: Compare IDirect3DViewport3 interface instead of IDirect3DViewportImpl. - ddraw: COM cleanup for IDirect3DViewport3 interface. - ddraw: Use unsafe_impl_from_IDirect3DViewport for application provided interfaces. - ddraw: Use unsafe_impl_from_IDirect3DViewport2 for application provided interfaces. - -Stefan Dösinger (4): - ddraw/tests: Use sizeof instead of a magic number. - ddraw/tests: Use the variable instead of the type in sizeof(). - d3d9: Implement FPUSETUP for msvc. - d3d8: Implement FPUSETUP for msvc. - -Thomas Faber (5): - shell32/tests: Fix build with MSVC. - gdi32/tests: Fix MSVC build in icm.c. - gdi32/tests: Fix MSVC build in bitmap.c. - kernel32/tests: Fix MSVC build in file.c and pipe.c. - kernel32/tests: Fix MSVC build in console.c. - -Thomas Mullaly (5): - urlmon: Added custom security manager support to MapUrlToZoneEx2. - urlmon: Improved MapUrlToZone{Ex2} and GetSecurityId support. - urlmon: Improved IUri support for wildcard URLs. - urlmon/tests: Added tests for GetSecurityIdEx2. - urlmon: Added basic GetSecurityIdEx2 implementation. +Stefan Leichter (1): + url: Add stub for OpenURLA. + +Thomas Faber (1): + ntdll/tests: Fix build with MSVC. + +Uwe Bonnes (1): + ntdll: Generate a single EV_TXEMPTY when the TX buffer turns empty. Vincent Povirk (2): - gdiplus: Include an alpha channel in HBITMAPs created from Bitmaps. - gdiplus: Fix pointer math for the 64-bit tests. + windowscodecs: Use a smaller magic number to detect JPEG files. + msi: Use MsgWaitForMultipleObjectsEx to do waits. + +Vitaliy Margolen (7): + dinput: GetDeviceData always succeeds regardless if buffering is enabled or device is acquired. + dinput: Acquire should not reset buffer position. + dinput: Fix buffer size in test. + dinput: Add buffer overflow check. + dinput: Don't mask buffer overflow error. + dinput: Put some checks back into GetDeviceData for DirectInput 8. + dinput: Add some logging to base class. + +Łukasz Wojniłowicz (2): + po: Update Polish translation. + winecfg: Update Polish translation. -- Alexandre Julliard diff -Nru wine1.3-1.3.30/configure wine1.3-1.3.31/configure --- wine1.3-1.3.30/configure 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/configure 2011-10-21 18:38:36.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for Wine 1.3.30. +# Generated by GNU Autoconf 2.68 for Wine 1.3.31. # # Report bugs to . # @@ -560,8 +560,8 @@ # Identity of this package. PACKAGE_NAME='Wine' PACKAGE_TARNAME='wine' -PACKAGE_VERSION='1.3.30' -PACKAGE_STRING='Wine 1.3.30' +PACKAGE_VERSION='1.3.31' +PACKAGE_STRING='Wine 1.3.31' PACKAGE_BUGREPORT='wine-devel@winehq.org' PACKAGE_URL='http://www.winehq.org' @@ -1375,7 +1375,7 @@ # 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.3.30 to adapt to many kinds of systems. +\`configure' configures Wine 1.3.31 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1444,7 +1444,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Wine 1.3.30:";; + short | recursive ) echo "Configuration of Wine 1.3.31:";; esac cat <<\_ACEOF @@ -1588,7 +1588,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Wine configure 1.3.30 +Wine configure 1.3.31 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. @@ -2106,7 +2106,7 @@ 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.3.30, which was +It was created by Wine $as_me 1.3.31, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -10262,8 +10262,7 @@ freetype/ftoutln.h \ freetype/ftwinfnt.h \ freetype/ftmodapi.h \ - freetype/ftlcdfil.h \ - freetype/internal/sfnt.h + freetype/ftlcdfil.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#ifdef HAVE_FT2BUILD_H @@ -10304,21 +10303,6 @@ fi - ac_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $ac_freetype_libs" - for ac_func in FT_Load_Sfnt_Table -do : - ac_fn_c_check_func "$LINENO" "FT_Load_Sfnt_Table" "ac_cv_func_FT_Load_Sfnt_Table" -if test "x$ac_cv_func_FT_Load_Sfnt_Table" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_FT_LOAD_SFNT_TABLE 1 -_ACEOF - -fi -done - - CFLAGS="$ac_save_CFLAGS" - CPPFLAGS="$ac_save_CPPFLAGS" if test "$ac_cv_header_freetype_freetype_h" = "yes" -a "$wine_cv_fttrigon" = "yes" then @@ -12030,6 +12014,34 @@ EXTRACFLAGS="$EXTRACFLAGS -Wwrite-strings" fi + case $host_cpu in + *i[3456789]86*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -fno-omit-frame-pointer" >&5 +$as_echo_n "checking whether the compiler supports -fno-omit-frame-pointer... " >&6; } +if ${ac_cv_cflags__fno_omit_frame_pointer+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_wine_try_cflags_saved=$CFLAGS +CFLAGS="$CFLAGS -fno-omit-frame-pointer" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_cflags__fno_omit_frame_pointer=yes +else + ac_cv_cflags__fno_omit_frame_pointer=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +CFLAGS=$ac_wine_try_cflags_saved +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags__fno_omit_frame_pointer" >&5 +$as_echo "$ac_cv_cflags__fno_omit_frame_pointer" >&6; } +if test $ac_cv_cflags__fno_omit_frame_pointer = yes; then : + EXTRACFLAGS="$EXTRACFLAGS -fno-omit-frame-pointer" +fi ;; + esac + saved_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Wpointer-arith -Werror" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken string.h that generates warnings with -Wpointer-arith" >&5 @@ -14894,6 +14906,7 @@ wine_fn_config_dll midimap enable_midimap wine_fn_config_dll mlang enable_mlang implib wine_fn_config_test dlls/mlang/tests mlang_test +wine_fn_config_dll mmcndmgr enable_mmcndmgr wine_fn_config_dll mmdevapi enable_mmdevapi wine_fn_config_test dlls/mmdevapi/tests mmdevapi_test wine_fn_config_dll mmdevldr.vxd enable_win16 @@ -15901,7 +15914,7 @@ # 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.3.30, which was +This file was extended by Wine $as_me 1.3.31, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -15972,7 +15985,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -Wine config.status 1.3.30 +Wine config.status 1.3.31 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" diff -Nru wine1.3-1.3.30/configure.ac wine1.3-1.3.31/configure.ac --- wine1.3-1.3.30/configure.ac 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/configure.ac 2011-10-21 18:38:36.000000000 +0000 @@ -1373,8 +1373,7 @@ freetype/ftoutln.h \ freetype/ftwinfnt.h \ freetype/ftmodapi.h \ - freetype/ftlcdfil.h \ - freetype/internal/sfnt.h,,, + freetype/ftlcdfil.h,,, [#ifdef HAVE_FT2BUILD_H # include #endif]) @@ -1383,11 +1382,6 @@ [Define if you have the header file.]) wine_cv_fttrigon=yes],[wine_cv_fttrigon=no]) AC_CHECK_TYPES(FT_TrueTypeEngineType,,,[#include ]) - ac_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $ac_freetype_libs" - AC_CHECK_FUNCS(FT_Load_Sfnt_Table) - CFLAGS="$ac_save_CFLAGS" - CPPFLAGS="$ac_save_CPPFLAGS" dnl Check that we have at least freetype/freetype.h if test "$ac_cv_header_freetype_freetype_h" = "yes" -a "$wine_cv_fttrigon" = "yes" then @@ -1690,6 +1684,11 @@ WINE_TRY_CFLAGS([-Wunused-but-set-parameter]) WINE_TRY_CFLAGS([-Wwrite-strings]) + dnl gcc-4.6+ omits frame pointers by default, breaking some copy protections + case $host_cpu in + *i[[3456789]]86*) WINE_TRY_CFLAGS([-fno-omit-frame-pointer]) ;; + esac + dnl Check for noisy string.h saved_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Wpointer-arith -Werror" @@ -2587,6 +2586,7 @@ WINE_CONFIG_DLL(midimap) WINE_CONFIG_DLL(mlang,,[implib]) WINE_CONFIG_TEST(dlls/mlang/tests) +WINE_CONFIG_DLL(mmcndmgr) WINE_CONFIG_DLL(mmdevapi) WINE_CONFIG_TEST(dlls/mmdevapi/tests) WINE_CONFIG_DLL(mmdevldr.vxd,enable_win16) diff -Nru wine1.3-1.3.30/debian/changelog wine1.3-1.3.31/debian/changelog --- wine1.3-1.3.30/debian/changelog 2011-10-22 03:01:21.000000000 +0000 +++ wine1.3-1.3.31/debian/changelog 2011-10-22 03:01:25.000000000 +0000 @@ -1,3 +1,14 @@ +wine1.3 (1.3.31-0ubuntu1~ppa1~lucid1) lucid; urgency=low + + * New upstream release + - BiDi text support in the single-line edit control. + - Support for StretchDIBits and AlphaBlend in the DIB engine. + - A number of audio fixes. + - VBScript improvements. + - Various bug fixes. + + -- Scott Ritchie Fri, 21 Oct 2011 17:07:24 -0700 + wine1.3 (1.3.30-0ubuntu1~ppa1~lucid1) lucid; urgency=low * New upstream release diff -Nru wine1.3-1.3.30/dlls/browseui/browseui.rc wine1.3-1.3.31/dlls/browseui/browseui.rc --- wine1.3-1.3.30/dlls/browseui/browseui.rc 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/browseui/browseui.rc 2011-10-21 18:38:36.000000000 +0000 @@ -22,7 +22,7 @@ STRINGTABLE { - IDS_CANCELLING "Cancelling..." + IDS_CANCELLING "Canceling..." } #define WINE_FILEDESCRIPTION_STR "Wine core dll" diff -Nru wine1.3-1.3.30/dlls/comctl32/comctl_Ca.rc wine1.3-1.3.31/dlls/comctl32/comctl_Ca.rc --- wine1.3-1.3.30/dlls/comctl32/comctl_Ca.rc 1970-01-01 00:00:00.000000000 +0000 +++ wine1.3-1.3.31/dlls/comctl32/comctl_Ca.rc 2011-10-21 18:38:36.000000000 +0000 @@ -0,0 +1,66 @@ +/* + * 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 "comctl32.h" + +LANGUAGE LANG_CATALAN, SUBLANG_DEFAULT + +IDD_PROPSHEET DIALOG 0, 0, 220, 140 +STYLE DS_CONTEXTHELP | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE +CAPTION "Propietats de %s" +FONT 8, "MS Shell Dlg" +BEGIN + DEFPUSHBUTTON "D'acord", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP + PUSHBUTTON "Cancella", IDCANCEL,58,122,50,14 + PUSHBUTTON "&Aplica", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED + PUSHBUTTON "Ajuda", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP + CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP|TCS_MULTILINE,4,4,212,114 +END + + +IDD_WIZARD DIALOG 0, 0, 290, 159 +STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE +CAPTION "Wizard" +FONT 8, "MS Shell Dlg" +BEGIN + PUSHBUTTON "< &Enrere", IDC_BACK_BUTTON,71,138,50,14 + DEFPUSHBUTTON "&Proper >", IDC_NEXT_BUTTON,121,138,50,14 + DEFPUSHBUTTON "Finalitza", IDC_FINISH_BUTTON,121,138,50,14 + PUSHBUTTON "Cancella", IDCANCEL,178,138,50,14 + PUSHBUTTON "Ajuda", IDHELP,235,138,50,14,WS_GROUP + LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN + CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5 + LTEXT "", IDC_SUNKEN_LINEHEADER,0,35,290,1,SS_LEFT | SS_SUNKEN | WS_CHILD | WS_VISIBLE +END + + +IDD_TBCUSTOMIZE DIALOG 10, 20, 357, 125 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Customize Toolbar" +FONT 8, "MS Shell Dlg" +BEGIN + DEFPUSHBUTTON "&Tanca", IDCANCEL,308,6,44,14 + PUSHBUTTON "R&einicia", IDC_RESET_BTN,308,23,44,14 + PUSHBUTTON "&Ajuda", IDC_HELP_BTN,308,40,44,14 + PUSHBUTTON "Mou A&munt", IDC_MOVEUP_BTN,308,74,44,14 + PUSHBUTTON "Mou A&baix", IDC_MOVEDN_BTN,308,91,44,14 + LTEXT "&Botons disponibles:", -1,4,5,84,10 + LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP + PUSHBUTTON "&Afegeix ->", IDOK, 131, 42, 44, 14 + PUSHBUTTON "<- &Treu", IDC_REMOVE_BTN,131,62,44,14 + LTEXT "Botons de barra d'&eines:", -1,182,5,78,10 + LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP +END diff -Nru wine1.3-1.3.30/dlls/comctl32/Makefile.in wine1.3-1.3.31/dlls/comctl32/Makefile.in --- wine1.3-1.3.30/dlls/comctl32/Makefile.in 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/comctl32/Makefile.in 2011-10-21 18:38:36.000000000 +0000 @@ -45,6 +45,7 @@ RC_SRCS = \ comctl32.rc \ comctl_Bg.rc \ + comctl_Ca.rc \ comctl_Cs.rc \ comctl_Da.rc \ comctl_De.rc \ diff -Nru wine1.3-1.3.30/dlls/comctl32/monthcal.c wine1.3-1.3.31/dlls/comctl32/monthcal.c --- wine1.3-1.3.30/dlls/comctl32/monthcal.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/comctl32/monthcal.c 2011-10-21 18:38:36.000000000 +0000 @@ -2543,6 +2543,11 @@ infoPtr->monthdayState = ReAlloc(infoPtr->monthdayState, MONTHCAL_GetMonthRange(infoPtr, GMR_DAYSTATE, 0)*sizeof(MONTHDAYSTATE)); MONTHCAL_NotifyDayState(infoPtr); + + /* update pointers that we'll need */ + title = &infoPtr->calendars[0].title; + wdays = &infoPtr->calendars[0].wdays; + days = &infoPtr->calendars[0].days; } for (i = 1; i < MONTHCAL_GetCalCount(infoPtr); i++) diff -Nru wine1.3-1.3.30/dlls/comctl32/tests/imagelist.c wine1.3-1.3.31/dlls/comctl32/tests/imagelist.c --- wine1.3-1.3.30/dlls/comctl32/tests/imagelist.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/comctl32/tests/imagelist.c 2011-10-21 18:38:36.000000000 +0000 @@ -579,7 +579,7 @@ ULONG iml_data_size; }; -struct my_IStream *impl_from_IStream(IStream *iface) +static struct my_IStream *impl_from_IStream(IStream *iface) { return CONTAINING_RECORD(iface, struct my_IStream, IStream_iface); } diff -Nru wine1.3-1.3.30/dlls/comctl32/tests/monthcal.c wine1.3-1.3.31/dlls/comctl32/tests/monthcal.c --- wine1.3-1.3.30/dlls/comctl32/tests/monthcal.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/comctl32/tests/monthcal.c 2011-10-21 18:38:36.000000000 +0000 @@ -474,7 +474,7 @@ case MCN_GETDAYSTATE: { NMDAYSTATE *nmstate = (NMDAYSTATE*)lParam; - MONTHDAYSTATE months[14] = { 0 }; + static MONTHDAYSTATE months[14] = { 0 }; ok(nmstate->cDayState > 0, "got %d\n", nmstate->cDayState); ok(nmstate->cDayState <= 14, "got %d\n", nmstate->cDayState); diff -Nru wine1.3-1.3.30/dlls/comdlg32/cdlg_Ca.rc wine1.3-1.3.31/dlls/comdlg32/cdlg_Ca.rc --- wine1.3-1.3.30/dlls/comdlg32/cdlg_Ca.rc 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/comdlg32/cdlg_Ca.rc 2011-10-21 18:38:36.000000000 +0000 @@ -120,10 +120,10 @@ CHOOSE_FONT DIALOG 13, 54, 264, 147 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Tipus de lletra" +CAPTION "Tipus de Lletra" FONT 8, "MS Shell Dlg" { - LTEXT "&Tipus de lletra:",1088 ,6,3,40,9 + LTEXT "&Tipus de lletra:",1088 ,6,3,50,9 COMBOBOX 1136 ,6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE LTEXT "&Estil del tipus de lletra:",1089 ,108,3,44,9 @@ -144,7 +144,7 @@ CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP GROUPBOX "Exemple",grp2,98,72,120,36,WS_GROUP CTEXT "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE - LTEXT "Scr&ipt (translate):",stc7 ,98,114,80,9 + LTEXT "Scr&ipt:",stc7 ,98,114,80,9 COMBOBOX cmb5,98,124,120,90,CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP } @@ -219,3 +219,151 @@ PUSHBUTTON "Tancar", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "A&juda", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP } + + +PRINT32 DIALOG 32, 32, 288, 186 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "Imprimir" +FONT 8, "MS Shell Dlg" +{ + DEFPUSHBUTTON "D'acord", IDOK, 180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON + PUSHBUTTON "Cancella", IDCANCEL, 232,164, 48,14, WS_GROUP + + GROUPBOX "Printer", grp4, 8, 4, 272,84, WS_GROUP + PUSHBUTTON "A&juda", pshHelp, 50, 161, 48,14, WS_GROUP + CONTROL "Imprimeix a &fitxer", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12 + PUSHBUTTON "&Propietats", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "&Nom:", stc6, 16, 20, 36,8 + COMBOBOX cmb4, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Estat:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "Estat de Maniqu", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Tipus:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Tipus de Maniqu", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "On:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Ubicaci de Maniqu", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Comentari:", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "Observaci de Maniqu", stc13, 52, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "Copies", grp2, 160, 92, 120,64, WS_GROUP + LTEXT "Nombre de &copies:",stc5,168,108,68,8 + ICON "", ico3, 162,124, 76,24, WS_GROUP | SS_CENTERIMAGE + CONTROL "C&ompagina", chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,240,130,36,12 + EDITTEXT edt3, 240,106, 32,12, WS_GROUP | ES_NUMBER + + GROUPBOX "Interval d'impressi", grp1, 8,92, 144,64, WS_GROUP + CONTROL "&Tot", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12 + CONTROL "Pa&ges", rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12 + CONTROL "&Selecci", rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12 + EDITTEXT edt1, 74,122, 26,12, WS_GROUP | ES_NUMBER + EDITTEXT edt2, 118,122, 26,12, WS_GROUP | ES_NUMBER + RTEXT "&de:", stc2, 52,124, 20,8 + RTEXT "&a:", stc3, 100,124, 16,8 +} + +PRINT32_SETUP DIALOG 32, 32, 288, 178 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "Configuraci de la Impressi" +FONT 8, "MS Shell Dlg" +BEGIN + DEFPUSHBUTTON "D'acord",IDOK,180,156,48,14,WS_GROUP + PUSHBUTTON "Cancella",IDCANCEL,232,156,48,14 +/* PUSHBUTTON "Network...", psh5, 284,156,48,14 */ + + GROUPBOX "Impressora", grp4, 8, 4, 272,84, WS_GROUP + PUSHBUTTON "&Propietats", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "&Nom:", stc6, 16, 20, 36,8 + COMBOBOX cmb1, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Estat:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "Estat de Maniqu", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Tipus:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Tipus de Maniqu", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "On:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Ubicaci de Maniqu", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Comentari:", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "Observaci de Maniqu", stc13, 52, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "Paper", grp2, 8, 92, 164,56, WS_GROUP + LTEXT "&Mida:", stc2, 16,108, 36, 8 + COMBOBOX cmb2, 52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "&Font:", stc3, 16,128, 36, 8 + COMBOBOX cmb3, 52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + + GROUPBOX "Orientaci", grp1, 180, 92, 100,56, WS_GROUP + ICON "", ico1, 195,112, 18,20, WS_GROUP + CONTROL "&Vertical", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12 + CONTROL "&Horizontal", rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12 +END + +PAGESETUPDLGORD DIALOG 32, 32, 240, 240 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Configuraci de la Pgina" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "", rct1, "Static", SS_WHITERECT, 80, 8, 80, 80 + CONTROL "", rct2, "Static", SS_GRAYRECT, 160, 12, 4, 80 + CONTROL "", rct3, "Static", SS_GRAYRECT, 84, 88, 80, 4 + GROUPBOX "Paper", grp2, 8, 96, 224, 56, BS_GROUPBOX + LTEXT "&Mida:", stc2, 16, 112, 36, 8 + COMBOBOX cmb2, 64, 110, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL + LTEXT "&Safata:", stc3, 16, 132, 36, 8 + COMBOBOX cmb3, 64, 130, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL + GROUPBOX "Orientaci", grp1, 8, 156, 64, 56, BS_GROUPBOX + AUTORADIOBUTTON "&Vertical", rad1, 16, 170, 52, 12, BS_AUTORADIOBUTTON + AUTORADIOBUTTON "&Horizontal", rad2, 16, 190, 52, 12, BS_AUTORADIOBUTTON + GROUPBOX "Vores", grp4, 80, 156, 152, 56, BS_GROUPBOX + LTEXT "&Esquerra:", stc15, 88, 172, 21, 8 + EDITTEXT edt4, 111, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&Dreta:", stc16, 159, 172, 27, 8 + EDITTEXT edt6, 187, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "S&uperior:", stc17, 88, 192, 21, 8 + EDITTEXT edt5, 111, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&Inferior:", stc18, 159, 192, 23, 8 + EDITTEXT edt7, 187, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + DEFPUSHBUTTON "D'acord", IDOK, 71, 220, 50, 14, BS_PUSHBUTTON + PUSHBUTTON "Cancella", IDCANCEL, 126, 220, 50, 14 + PUSHBUTTON "Imp&ressora...", psh3, 184, 220, 48, 14 +END + +NEWFILEOPENORD DIALOG 0, 0, 280, 164 +STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN +CAPTION "Obrir" +FONT 8, "MS Shell Dlg" +{ + LTEXT "Cerca &en:",IDC_LOOKINSTATIC,4,6,43,8, SS_NOTIFY + COMBOBOX IDC_LOOKIN,49,3,132,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + + LTEXT "" , IDC_TOOLBARSTATIC, 181, 2, 102, 17, NOT WS_GROUP | NOT WS_VISIBLE + LISTBOX IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE + + LTEXT "&Nom de fitxer:",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY + EDITTEXT IDC_FILENAME,60,110,155,12,ES_AUTOHSCROLL + + LTEXT "Fitxers de &tipus:",IDC_FILETYPESTATIC,5,128,55,8, SS_NOTIFY + COMBOBOX IDC_FILETYPE,60,126,155,53,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + + CONTROL "Obre per noms &lectura",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10 + + DEFPUSHBUTTON "&Obre", IDOK,222,110,50,14 + PUSHBUTTON "Cancella", IDCANCEL,222,128,50,14 + PUSHBUTTON "&Ajuda", pshHelp,222,145,50,14 +} + +NEWFILEOPENV3ORD DIALOG 0, 0, 440, 300 +STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN | + WS_THICKFRAME +CAPTION "Obrir" +FONT 8, "MS Shell Dlg" +{ + LTEXT "Nom de fitxer:", IDC_FILENAMESTATIC, 160, 240, 60, 9, SS_RIGHT + EDITTEXT IDC_FILENAME, 226, 240, 100, 12, WS_CHILD | WS_VISIBLE | WS_TABSTOP + + LTEXT "Fitxers de tipus:", IDC_FILETYPESTATIC, 160, 256, 60, 9, SS_RIGHT + COMBOBOX IDC_FILETYPE, 226, 256, 100, 12, WS_CHILD | WS_VISIBLE | WS_TABSTOP | + CBS_HASSTRINGS | CBS_DROPDOWNLIST + + DEFPUSHBUTTON "&Obre", IDOK, 350, 240, 40, 14, WS_GROUP + PUSHBUTTON "Cancella", IDCANCEL, 395, 240, 40, 14 + PUSHBUTTON "&Ajuda", pshHelp, 350, 272, 40, 14 +} diff -Nru wine1.3-1.3.30/dlls/comdlg32/cdlg_It.rc wine1.3-1.3.31/dlls/comdlg32/cdlg_It.rc --- wine1.3-1.3.30/dlls/comdlg32/cdlg_It.rc 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/comdlg32/cdlg_It.rc 2011-10-21 18:38:36.000000000 +0000 @@ -2,7 +2,7 @@ * Copyright 1996 Tristan Tarrant * Copyright 2004 Ivan Leo Puoti * Copyright 2006 Antonio Codazzi - * Copyright 2010 Luca Bennati + * Copyright 2010,2011 Luca Bennati * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -36,20 +36,20 @@ CAPTION "Apri" FONT 8, "MS Shell Dlg" { - LTEXT "&Nome file:", stc3, 6, 6, 76, 9 - EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LTEXT "&Nome del file:", stc3, 6, 6, 76, 9 + EDITTEXT edt1, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP LISTBOX lst1, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP LTEXT "&Percorso:", -1, 110, 6, 92, 9 LTEXT "", stc1, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP LISTBOX lst2, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP - LTEXT "&Tipo di file:", stc2, 6, 104, 90, 9 - COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Tipo del file:", stc2, 6, 104, 90, 9 + COMBOBOX cmb1, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP LTEXT "&Unità:", stc4, 110, 104, 92, 9 - COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX cmb2, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP DEFPUSHBUTTON "Apri", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP PUSHBUTTON "Annulla", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "&Aiuto", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP - CHECKBOX "Sola &Lettura", 1040, 208, 68, 52, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Aiuto", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Sola lettura", chx1, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP } @@ -58,20 +58,20 @@ CAPTION "Salva con nome..." FONT 8, "MS Shell Dlg" { - LTEXT "&Nome file:", stc3, 6, 6, 76, 9 - EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP + LTEXT "&Nome del file:", stc3, 6, 6, 76, 9 + EDITTEXT edt1, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP LISTBOX lst1, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP LTEXT "&Percorso:", -1, 110, 6, 92, 9 LTEXT "", stc1, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP LISTBOX lst2, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP - LTEXT "&Tipo di file:", stc2, 6, 104, 90, 9 - COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "&Tipo del file:", stc2, 6, 104, 90, 9 + COMBOBOX cmb1, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP LTEXT "&Unità:", stc4, 110, 104, 92, 9 - COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP - DEFPUSHBUTTON "Salva come", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + COMBOBOX cmb2, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Salva con nome", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP PUSHBUTTON "Annulla", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "&Aiuto", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP - CHECKBOX "&Sola lettura", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Aiuto", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Sola lettura", chx1, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP } @@ -82,45 +82,45 @@ { LTEXT "Stampante:", stc1, 6, 6, 40, 9 LTEXT "", stc2, 60, 6, 150, 9 - GROUPBOX "Pagine da stampare", 1072, 6, 30, 160, 65, BS_GROUPBOX - RADIOBUTTON "&Tutte", 1056, 16, 45, 60, 12 - RADIOBUTTON "S&elezione", 1057, 16, 60, 60, 12 - RADIOBUTTON "&Pagine", 1058, 16, 75, 60, 12 + GROUPBOX "Pagine da stampare", grp1, 6, 30, 160, 65, BS_GROUPBOX + RADIOBUTTON "&Tutte", rad1, 16, 45, 60, 12 + RADIOBUTTON "S&elezione", rad2, 16, 60, 60, 12 + RADIOBUTTON "&Pagine", rad3, 16, 75, 60, 12 DEFPUSHBUTTON "Stampa", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP PUSHBUTTON "Annulla", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "&Configura", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Configura", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP LTEXT "&Da:", stc3, 60, 80, 30, 9 LTEXT "&A:", stc4, 120, 80, 30, 9 LTEXT "&Qualità di stampa:", stc5, 6, 100, 76, 9 - COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP - CHECKBOX "Stampa su fi&le", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP - CHECKBOX "Condensato", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + COMBOBOX cmb1, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + CHECKBOX "Stampa su fi&le", chx1, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Condensato", chx2, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP } -PRINT_SETUP DIALOG 36, 24, 274, 154 +PRINT_SETUP DIALOG 36, 24, 264, 134 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Configurazione Stampante" +CAPTION "Impostazioni di stampa" FONT 8, "MS Shell Dlg" { - GROUPBOX "Stampante", 1072, 6, 10, 180, 72, BS_GROUPBOX - RADIOBUTTON "Stampante &preferita", 1056, 16, 20, 78, 12 + GROUPBOX "Stampante", grp1, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON "Stampante pre&definita", rad1, 16, 20, 80, 12 LTEXT "[nessuna]", stc1, 35, 35, 120, 9 - RADIOBUTTON "Stampante &specifica", 1057, 16, 50, 78, 12 - COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP - DEFPUSHBUTTON "OK", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + RADIOBUTTON "Stampante s&pecifica", rad2, 16, 50, 80, 12 + COMBOBOX cmb1, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP PUSHBUTTON "Annulla", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "&Installa", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP - GROUPBOX "Orientamento", 1073, 6, 85, 100, 50, BS_GROUPBOX - RADIOBUTTON "&Verticale", 1058, 50, 100, 42, 12 - RADIOBUTTON "&Orizzontale", 1059, 50, 115, 50, 12 - ICON "LANDSCAP", 1097, 10, 95, 32, 32 - ICON "PORTRAIT", 1098, 10, 95, 32, 32 - GROUPBOX "Carta", 1074, 120, 85, 150, 50, BS_GROUPBOX - LTEXT "&Dimensione", stc2, 130, 100, 30, 9 - LTEXT "&Sorgente", stc3, 130, 115, 30, 9 - COMBOBOX 1137, 168, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP - COMBOBOX 1138, 168, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "&Configura", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "Orientamento", grp2, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "&Ritratto", rad3, 50, 100, 50, 12 + RADIOBUTTON "&Paesaggio", rad4, 50, 115, 50, 12 + ICON "LANDSCAP", stc10, 10, 95, 32, 32 + ICON "PORTRAIT", stc11, 10, 95, 32, 32 + GROUPBOX "Carta", grp3, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "Dimen&sione", stc2, 130, 95, 30, 9 + LTEXT "&Origine", stc3, 130, 110, 30, 9 + COMBOBOX cmb2, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX cmb3, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP } @@ -129,28 +129,28 @@ CAPTION "Carattere" FONT 8, "MS Shell Dlg" { - LTEXT "&Carattere:",1088 ,6,3,40,9 - COMBOBOX 1136 ,6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + LTEXT "&Carattere:",stc1 ,6,3,40,9 + COMBOBOX cmb1, 6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE - LTEXT "St&ile:",1089 ,108,3,42,9 - COMBOBOX 1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + LTEXT "&Stile:",stc2 ,108,3,44,9 + COMBOBOX cmb2,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE - LTEXT "&Dimensione:",1090,175,3,38,9 - COMBOBOX 1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + LTEXT "&Dimensione:",stc3,179,3,30,9 + COMBOBOX cmb3,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT - DEFPUSHBUTTON "OK",IDOK,220,6,38,14,WS_GROUP - PUSHBUTTON "Annulla",IDCANCEL,220,23,38,14,WS_GROUP - PUSHBUTTON "A&pplica", 1026,220,40,38,14,WS_GROUP - PUSHBUTTON "&Aiuto" , 1038,220,57,38,14,WS_GROUP - GROUPBOX "Effetti",1072,6,72,84,34,WS_GROUP - CHECKBOX "&Barrato", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP - CHECKBOX "&Sottolineato", 1041, 10,94,50,10, BS_AUTOCHECKBOX - LTEXT "&Colore:", 1091 ,6,110,30,9 - COMBOBOX 1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + DEFPUSHBUTTON "Ok",IDOK,218,6,40,14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "Annulla",IDCANCEL,218,23,40,14,WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Applica", psh3,218,40,40,14,WS_GROUP | WS_TABSTOP + PUSHBUTTON "A&iuto" , pshHelp,218,57,40,14,WS_GROUP | WS_TABSTOP + GROUPBOX "Effetti",grp1,6,72,84,34,WS_GROUP + CHECKBOX "&Barrato", chx1, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "S&ottolineato", chx2, 10,94,50,10, BS_AUTOCHECKBOX + LTEXT "Co&lore:", 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 "Esempio",grp2,98,72,120,36,WS_GROUP CTEXT "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE - LTEXT "Scr&ipt (translate):",stc7 ,98,114,80,9 + LTEXT "Sc&ript:",stc7 ,98,114,40,9 COMBOBOX cmb5,98,124,120,90,CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP } @@ -161,8 +161,8 @@ CAPTION "Colore" FONT 8, "MS Shell Dlg" { - LTEXT "Colori di &Base:", stc1, 4, 4, 140, 10 - LTEXT "Colori &Utente:", stc2, 4, 106, 140, 10 + LTEXT "Colori di base:", stc1, 4, 4, 140, 10 + LTEXT "&Colori personalizzati:", stc2, 4, 106, 140, 10 LTEXT "Colore | Sol&ido", stc3, 150, 151, 48, 10 LTEXT "&Rosso:", 726 /*1094*/,249,126,24,10 EDITTEXT 706, 275,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP @@ -181,12 +181,12 @@ CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 - DEFPUSHBUTTON "OK", IDOK, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + DEFPUSHBUTTON "Ok", IDOK, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP PUSHBUTTON "Annulla", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "Aiuto", 1038,100,166, 44, 14 - PUSHBUTTON "&Aggiungi ai Colori Utente", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "&Definisci Colori Utente >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "&i",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ + PUSHBUTTON "Aiuto", pshHelp,100,166, 44, 14 + PUSHBUTTON "&Aggiungi ai colori personalizzati", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Definisci i colori personalizzati >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&i",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ } @@ -195,17 +195,17 @@ CAPTION "Trova" FONT 8, "MS Shell Dlg" { - LTEXT "Tro&va:", -1, 4, 8, 42, 8 - EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP - CHECKBOX "&Parola Intera", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP - CHECKBOX "&Maiuscole/Minuscole", 1041, 4, 42, 74, 12, BS_AUTOCHECKBOX | WS_TABSTOP - GROUPBOX "Direzione", 1072, 107, 26, 68, 28 - CONTROL "&Su", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 24, 12 - CONTROL "&Giu'", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 38, 28, 12 - - DEFPUSHBUTTON "&Trova Prossimo", IDOK, 180, 5, 54, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "Annulla", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "&Aiuto", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP + LTEXT "&Trova:", -1, 4, 8, 42, 8 + EDITTEXT edt1, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "Solo parole &intere", chx1, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Maiuscole/Minuscole", chx2, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "Direzione", grp1, 107, 26, 68, 28 + CONTROL "S&u", rad1, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 30, 12 + CONTROL "&Giù", rad2, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 + + DEFPUSHBUTTON "Trova &successivo", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "Annulla", IDCANCEL , 182, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Aiuto", pshHelp , 182, 45, 50, 14, WS_GROUP | WS_TABSTOP } @@ -214,17 +214,18 @@ CAPTION "Sostituisci" FONT 8, "MS Shell Dlg" { - LTEXT "Tro&va:", -1, 4, 9, 48, 8 - EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP - LTEXT "Ca&mbia con:", -1, 4, 26, 48, 8 - EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP - CHECKBOX "&Parola Intera", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP - CHECKBOX "&Maiuscole/Minuscole", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP - DEFPUSHBUTTON "&Trova Prossimo", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP - PUSHBUTTON "&Cambia", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "Cambia &Tutto", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "Annulla", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "&Aiuto", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP + LTEXT "T&rova:", -1, 4, 9, 48, 8 + EDITTEXT edt1, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "S&ostituisci con:", -1, 4, 26, 48, 8 + EDITTEXT edt2, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "Solo parole &intere", chx1, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Maiuscole/Minuscole", chx2, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP + + DEFPUSHBUTTON "Trova &successivo", IDOK, 174, 4, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "Sostit&uisci", psh1 , 174, 21, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Sostituisci &tutto", psh2 , 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annulla", IDCANCEL , 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Aiuto", pshHelp , 174, 75, 50, 14, WS_GROUP | WS_TABSTOP } @@ -234,7 +235,7 @@ CAPTION "Stampa" FONT 8, "MS Shell Dlg" { - DEFPUSHBUTTON "OK", IDOK, 180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON + DEFPUSHBUTTON "Ok", IDOK, 180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON PUSHBUTTON "Annulla", IDCANCEL, 232,164, 48,14, WS_GROUP PUSHBUTTON "&Aiuto", pshHelp, 50, 161, 48,14, WS_GROUP @@ -247,19 +248,19 @@ LTEXT "Stato fittizio", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP LTEXT "Tipo:", stc7, 16, 48, 36,10, SS_NOPREFIX LTEXT "Tipo fittizio", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP - LTEXT "Su:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Dove:", stc10, 16, 60, 36,10, SS_NOPREFIX LTEXT "Locazione fittizia", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP LTEXT "Commento:", stc9, 16, 72, 36,10, SS_NOPREFIX LTEXT "Commento fittizio", stc13, 52, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP GROUPBOX "Copie", grp2, 160, 92, 120,64, WS_GROUP - LTEXT "Numero di &copie:",stc5,168,108,140,8 + LTEXT "Numero di &copie:",stc5,168,108,68,8 ICON "", ico3, 162,124, 76,24, WS_GROUP | SS_CENTERIMAGE - CONTROL "&Fascicola", chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,233,130,43,12 + CONTROL "&Fascicola", chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,240,130,36,12 EDITTEXT edt3, 240,106, 32,12, WS_GROUP | ES_NUMBER - GROUPBOX "Selezione pagine", grp1, 8,92, 144,64, WS_GROUP - CONTROL "&Tutto", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12 + GROUPBOX "Pagine da stampare", grp1, 8,92, 144,64, WS_GROUP + CONTROL "&Tutte", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12 CONTROL "Pa&gine", rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12 CONTROL "&Selezione", rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12 EDITTEXT edt1, 74,122, 26,12, WS_GROUP | ES_NUMBER @@ -271,10 +272,10 @@ PRINT32_SETUP DIALOG 32, 32, 288, 178 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | DS_CONTEXTHELP | DS_3DLOOK -CAPTION "Configurazione Stampante" +CAPTION "Impostazioni di stampa" FONT 8, "MS Shell Dlg" BEGIN - DEFPUSHBUTTON "OK",IDOK,180,156,48,14,WS_GROUP + DEFPUSHBUTTON "Ok",IDOK,180,156,48,14,WS_GROUP PUSHBUTTON "Annulla",IDCANCEL,232,156,48,14 /* PUSHBUTTON "Rete...", psh5, 284,156,48,14 */ @@ -286,51 +287,51 @@ LTEXT "Stato fittizio", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP LTEXT "Tipo:", stc7, 16, 48, 36,10, SS_NOPREFIX LTEXT "Tipo fittizio", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP - LTEXT "Su:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Dove:", stc10, 16, 60, 36,10, SS_NOPREFIX LTEXT "Locazione fittizia", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP LTEXT "Commento:", stc9, 16, 72, 36,10, SS_NOPREFIX LTEXT "Commento fittizio", stc13, 52, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP GROUPBOX "Carta", grp2, 8, 92, 164,56, WS_GROUP - LTEXT "Di&mensione:", stc2, 13,108, 38, 8 + LTEXT "&Dimensione:", stc2, 16,108, 36, 8 COMBOBOX cmb2, 52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP - LTEXT "&Origine:", stc3, 13,128, 38, 8 + LTEXT "&Origine:", stc3, 16,128, 36, 8 COMBOBOX cmb3, 52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP - GROUPBOX "Orientazione", grp1, 180, 92, 100,56, WS_GROUP + GROUPBOX "Orientamento", grp1, 180, 92, 100,56, WS_GROUP ICON "", ico1, 195,112, 18,20, WS_GROUP - CONTROL "O&rizzontale", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12 - CONTROL "V&erticale", rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12 + CONTROL "&Ritratto", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12 + CONTROL "P&aesaggio", rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12 END PAGESETUPDLGORD DIALOG 32, 32, 240, 240 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Setup di Pagina" +CAPTION "Impostazioni di pagina" FONT 8, "MS Shell Dlg" BEGIN CONTROL "", rct1, "Static", SS_WHITERECT, 80, 8, 80, 80 CONTROL "", rct2, "Static", SS_GRAYRECT, 160, 12, 4, 80 CONTROL "", rct3, "Static", SS_GRAYRECT, 84, 88, 80, 4 GROUPBOX "Carta", grp2, 8, 96, 224, 56, BS_GROUPBOX - LTEXT "&Dimensione:", stc2, 13, 112, 38, 8 + LTEXT "Di&mensione:", stc2, 16, 112, 36, 8 COMBOBOX cmb2, 64, 110, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL - LTEXT "V&assoio:", stc3, 13, 132, 36, 8 + LTEXT "&Vassoio:", stc3, 16, 132, 36, 8 COMBOBOX cmb3, 64, 130, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL - GROUPBOX "Orientazione", grp1, 8, 156, 64, 56, BS_GROUPBOX - AUTORADIOBUTTON "&Orizzontale", rad1, 13, 170, 52, 12, BS_AUTORADIOBUTTON - AUTORADIOBUTTON "&Verticale", rad2, 13, 190, 52, 12, BS_AUTORADIOBUTTON + GROUPBOX "Orientamento", grp1, 8, 156, 64, 56, BS_GROUPBOX + AUTORADIOBUTTON "&Ritratto", rad1, 16, 170, 52, 12, BS_AUTORADIOBUTTON + AUTORADIOBUTTON "&Paesaggio", rad2, 16, 190, 52, 12, BS_AUTORADIOBUTTON GROUPBOX "Bordi", grp4, 80, 156, 152, 56, BS_GROUPBOX - LTEXT "&Sinistro:", stc15, 88, 172, 21, 8 + LTEXT "Si&nistra:", stc15, 88, 172, 21, 8 EDITTEXT edt4, 111, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER - LTEXT "&Destro:", stc16, 159, 172, 27, 8 + LTEXT "&Destra:", stc16, 159, 172, 27, 8 EDITTEXT edt6, 187, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER - LTEXT "&Superiore:", stc17, 88, 192, 21, 8 + LTEXT "S&uperiore:", stc17, 88, 192, 21, 8 EDITTEXT edt5, 111, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER LTEXT "&Inferiore:", stc18, 159, 192, 23, 8 EDITTEXT edt7, 187, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER - DEFPUSHBUTTON "OK", IDOK, 71, 220, 50, 14, BS_PUSHBUTTON + DEFPUSHBUTTON "Ok", IDOK, 71, 220, 50, 14, BS_PUSHBUTTON PUSHBUTTON "Annulla", IDCANCEL, 126, 220, 50, 14 - PUSHBUTTON "S&tampante...", psh3, 184, 220, 48, 14 + PUSHBUTTON "&Stampante...", psh3, 184, 220, 48, 14 END NEWFILEOPENORD DIALOG 0, 0, 280, 164 @@ -344,15 +345,33 @@ LTEXT "" , IDC_TOOLBARSTATIC, 181, 2, 102, 17, NOT WS_GROUP | NOT WS_VISIBLE LISTBOX IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE - LTEXT "Nome &file:",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY + LTEXT "&Nome del file:",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY EDITTEXT IDC_FILENAME,54,110,155,12,ES_AUTOHSCROLL - LTEXT "File del &tipo:",IDC_FILETYPESTATIC,5,128,42,8, SS_NOTIFY + LTEXT "&Tipo del file:",IDC_FILETYPESTATIC,5,128,42,8, SS_NOTIFY COMBOBOX IDC_FILETYPE,54,126,155,53,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "Apri in &sola lettura",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10 DEFPUSHBUTTON "&Apri", IDOK,222,110,50,14 PUSHBUTTON "Annulla", IDCANCEL,222,128,50,14 - PUSHBUTTON "&Aiuto", pshHelp,222,145,50,14 + PUSHBUTTON "Ai&uto", pshHelp,222,145,50,14 +} + +NEWFILEOPENV3ORD DIALOG 0, 0, 440, 300 +STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN | + WS_THICKFRAME +CAPTION "Apri" +FONT 8, "MS Shell Dlg" +{ + LTEXT "Nome del file:", IDC_FILENAMESTATIC, 160, 240, 60, 9, SS_RIGHT + EDITTEXT IDC_FILENAME, 226, 240, 100, 12, WS_CHILD | WS_VISIBLE | WS_TABSTOP + + LTEXT "Tipo del file:", IDC_FILETYPESTATIC, 160, 256, 60, 9, SS_RIGHT + COMBOBOX IDC_FILETYPE, 226, 256, 100, 12, WS_CHILD | WS_VISIBLE | WS_TABSTOP | + CBS_HASSTRINGS | CBS_DROPDOWNLIST + + DEFPUSHBUTTON "&Apri", IDOK, 350, 240, 40, 14, WS_GROUP + PUSHBUTTON "Annulla", IDCANCEL, 395, 240, 40, 14 + PUSHBUTTON "Ai&uto", pshHelp, 350, 272, 40, 14 } diff -Nru wine1.3-1.3.30/dlls/comdlg32/cdlg_Lt.rc wine1.3-1.3.31/dlls/comdlg32/cdlg_Lt.rc --- wine1.3-1.3.30/dlls/comdlg32/cdlg_Lt.rc 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/comdlg32/cdlg_Lt.rc 2011-10-21 18:38:36.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright 2009 Aurimas Fišeras + * Copyright 2009-2011 Aurimas Fišeras * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -354,3 +354,21 @@ PUSHBUTTON "Atsisakyti", IDCANCEL,222,128,50,14 PUSHBUTTON "&Žinynas", pshHelp,222,145,50,14 } + +NEWFILEOPENV3ORD DIALOG 0, 0, 440, 300 +STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN | + WS_THICKFRAME +CAPTION "Atverti" +FONT 8, "MS Shell Dlg" +{ + LTEXT "Failo vardas:", IDC_FILENAMESTATIC, 160, 240, 60, 9, SS_RIGHT + EDITTEXT IDC_FILENAME, 226, 240, 100, 12, WS_CHILD | WS_VISIBLE | WS_TABSTOP + + LTEXT "Failų tipai:", IDC_FILETYPESTATIC, 160, 256, 60, 9, SS_RIGHT + COMBOBOX IDC_FILETYPE, 226, 256, 100, 12, WS_CHILD | WS_VISIBLE | WS_TABSTOP | + CBS_HASSTRINGS | CBS_DROPDOWNLIST + + DEFPUSHBUTTON "&Atverti", IDOK, 350, 240, 40, 14, WS_GROUP + PUSHBUTTON "Atsisakyti", IDCANCEL, 395, 240, 40, 14 + PUSHBUTTON "&Žinynas", pshHelp, 350, 272, 40, 14 +} diff -Nru wine1.3-1.3.30/dlls/comdlg32/tests/finddlg.c wine1.3-1.3.31/dlls/comdlg32/tests/finddlg.c --- wine1.3-1.3.30/dlls/comdlg32/tests/finddlg.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/comdlg32/tests/finddlg.c 2011-10-21 18:38:36.000000000 +0000 @@ -103,11 +103,13 @@ /* invalid lpstrFindWhat (NULL) */ CHECK_FINDREPLACE_FAIL(FRERR_BUFFERLENGTHZERO); fr.lpstrFindWhat = findbuffer; + strcpy(findbuffer, "abc"); /* invalid lpstrReplaceWith (NULL) for ReplaceText */ CHECK_FIND_SUCCEED(); CHECK_REPLACE_FAIL(FRERR_BUFFERLENGTHZERO); fr.lpstrReplaceWith = replacebuffer; + strcpy(replacebuffer, "def"); /* wReplaceWithLen may be 0, even for ReplaceText */ CHECK_FIND_SUCCEED(); diff -Nru wine1.3-1.3.30/dlls/cryptnet/cryptnet_main.c wine1.3-1.3.31/dlls/cryptnet/cryptnet_main.c --- wine1.3-1.3.30/dlls/cryptnet/cryptnet_main.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/cryptnet/cryptnet_main.c 2011-10-21 18:38:36.000000000 +0000 @@ -827,7 +827,7 @@ components->nPort, context, pCredentials, phInt, phInt); *phHost = NULL; - *phInt = InternetOpenW(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, + *phInt = InternetOpenW(NULL, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, context ? INTERNET_FLAG_ASYNC : 0); if (*phInt) { diff -Nru wine1.3-1.3.30/dlls/cryptui/main.c wine1.3-1.3.31/dlls/cryptui/main.c --- wine1.3-1.3.30/dlls/cryptui/main.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/cryptui/main.c 2011-10-21 18:38:36.000000000 +0000 @@ -1966,23 +1966,19 @@ static struct OIDToString *findSupportedOID(LPCSTR oid) { - int indexHigh = sizeof(oidMap) / sizeof(oidMap[0]) - 1, indexLow = 0, i; - struct OIDToString *ret = NULL; + int indexHigh = sizeof(oidMap) / sizeof(oidMap[0]) - 1, indexLow = 0; - for (i = (indexLow + indexHigh) / 2; !ret && indexLow <= indexHigh; - i = (indexLow + indexHigh) / 2) + while (indexLow <= indexHigh) { - int cmp; - - cmp = strcmp(oid, oidMap[i].oid); - if (!cmp) - ret = &oidMap[i]; - else if (cmp > 0) + int cmp, i = (indexLow + indexHigh) / 2; + if (!(cmp = strcmp(oid, oidMap[i].oid))) + return &oidMap[i]; + if (cmp > 0) indexLow = i + 1; else indexHigh = i - 1; } - return ret; + return NULL; } static void add_local_oid_text_to_control(HWND text, LPCSTR oid) diff -Nru wine1.3-1.3.30/dlls/d3d8/device.c wine1.3-1.3.31/dlls/d3d8/device.c --- wine1.3-1.3.30/dlls/d3d8/device.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/d3d8/device.c 2011-10-21 18:38:36.000000000 +0000 @@ -596,20 +596,6 @@ } wined3d_mutex_unlock(); - pPresentationParameters->BackBufferWidth = localParameters.BackBufferWidth; - pPresentationParameters->BackBufferHeight = localParameters.BackBufferHeight; - pPresentationParameters->BackBufferFormat = d3dformat_from_wined3dformat(localParameters.BackBufferFormat); - pPresentationParameters->BackBufferCount = localParameters.BackBufferCount; - pPresentationParameters->MultiSampleType = localParameters.MultiSampleType; - pPresentationParameters->SwapEffect = localParameters.SwapEffect; - pPresentationParameters->hDeviceWindow = localParameters.hDeviceWindow; - pPresentationParameters->Windowed = localParameters.Windowed; - pPresentationParameters->EnableAutoDepthStencil = localParameters.EnableAutoDepthStencil; - pPresentationParameters->AutoDepthStencilFormat = d3dformat_from_wined3dformat(localParameters.AutoDepthStencilFormat); - pPresentationParameters->Flags = localParameters.Flags; - pPresentationParameters->FullScreen_RefreshRateInHz = localParameters.FullScreen_RefreshRateInHz; - pPresentationParameters->FullScreen_PresentationInterval = localParameters.PresentationInterval; - return hr; } @@ -1838,61 +1824,36 @@ static HRESULT WINAPI IDirect3DDevice8Impl_SetPaletteEntries(IDirect3DDevice8 *iface, UINT PaletteNumber, const PALETTEENTRY *pEntries) { - IDirect3DDevice8Impl *This = impl_from_IDirect3DDevice8(iface); - HRESULT hr; + FIXME("iface %p, palette_idx %u, entries %p unimplemented\n", iface, PaletteNumber, pEntries); - TRACE("iface %p, palette_idx %u, entries %p.\n", iface, PaletteNumber, pEntries); + /* GPUs stopped supporting palettized textures with the Shader Model 1 generation. Wined3d + * does not have a d3d8/9-style palette API */ - wined3d_mutex_lock(); - hr = wined3d_device_set_palette_entries(This->wined3d_device, PaletteNumber, pEntries); - wined3d_mutex_unlock(); - - return hr; + return D3DERR_INVALIDCALL; } static HRESULT WINAPI IDirect3DDevice8Impl_GetPaletteEntries(IDirect3DDevice8 *iface, UINT PaletteNumber, PALETTEENTRY *pEntries) { - IDirect3DDevice8Impl *This = impl_from_IDirect3DDevice8(iface); - HRESULT hr; + FIXME("iface %p, palette_idx %u, entries %p unimplemented.\n", iface, PaletteNumber, pEntries); - TRACE("iface %p, palette_idx %u, entries %p.\n", iface, PaletteNumber, pEntries); - - wined3d_mutex_lock(); - hr = wined3d_device_get_palette_entries(This->wined3d_device, PaletteNumber, pEntries); - wined3d_mutex_unlock(); - - return hr; + return D3DERR_INVALIDCALL; } static HRESULT WINAPI IDirect3DDevice8Impl_SetCurrentTexturePalette(IDirect3DDevice8 *iface, UINT PaletteNumber) { - IDirect3DDevice8Impl *This = impl_from_IDirect3DDevice8(iface); - HRESULT hr; + FIXME("iface %p, palette_idx %u unimplemented.\n", iface, PaletteNumber); - TRACE("iface %p, palette_idx %u.\n", iface, PaletteNumber); - - wined3d_mutex_lock(); - hr = wined3d_device_set_current_texture_palette(This->wined3d_device, PaletteNumber); - wined3d_mutex_unlock(); - - return hr; + return D3DERR_INVALIDCALL; } static HRESULT WINAPI IDirect3DDevice8Impl_GetCurrentTexturePalette(IDirect3DDevice8 *iface, UINT *PaletteNumber) { - IDirect3DDevice8Impl *This = impl_from_IDirect3DDevice8(iface); - HRESULT hr; + FIXME("iface %p, palette_idx %p unimplemented.\n", iface, PaletteNumber); - TRACE("iface %p, palette_idx %p.\n", iface, PaletteNumber); - - wined3d_mutex_lock(); - hr = wined3d_device_get_current_texture_palette(This->wined3d_device, PaletteNumber); - wined3d_mutex_unlock(); - - return hr; + return D3DERR_INVALIDCALL; } static HRESULT WINAPI IDirect3DDevice8Impl_DrawPrimitive(IDirect3DDevice8 *iface, diff -Nru wine1.3-1.3.30/dlls/d3d8/tests/device.c wine1.3-1.3.31/dlls/d3d8/tests/device.c --- wine1.3-1.3.30/dlls/d3d8/tests/device.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/d3d8/tests/device.c 2011-10-21 18:38:36.000000000 +0000 @@ -18,6 +18,7 @@ */ #define COBJMACROS +#include #include #include #include "wine/test.h" @@ -782,6 +783,127 @@ DestroyWindow(hwnd); } +static const POINT *expect_pos; + +static LRESULT CALLBACK test_cursor_proc(HWND window, UINT message, WPARAM wparam, LPARAM lparam) +{ + if (message == WM_MOUSEMOVE) + { + if (expect_pos && expect_pos->x && expect_pos->y) + { + POINT p = {GET_X_LPARAM(lparam), GET_Y_LPARAM(lparam)}; + + ClientToScreen(window, &p); + if (expect_pos->x == p.x && expect_pos->y == p.y) + ++expect_pos; + } + } + + return DefWindowProcA(window, message, wparam, lparam); +} + +static void test_cursor_pos(void) +{ + IDirect3DSurface8 *cursor; + IDirect3DDevice8 *device; + WNDCLASSA wc = {0}; + IDirect3D8 *d3d8; + UINT refcount; + HWND window; + HRESULT hr; + BOOL ret; + + /* Note that we don't check for movement we're not supposed to receive. + * That's because it's hard to distinguish from the user accidentally + * moving the mouse. */ + static const POINT points[] = + { + {50, 50}, + {75, 75}, + {100, 100}, + {125, 125}, + {150, 150}, + {125, 125}, + {150, 150}, + {150, 150}, + {0, 0}, + }; + + if (!(d3d8 = pDirect3DCreate8(D3D_SDK_VERSION))) + { + skip("Failed to create IDirect3D8 object, skipping cursor tests.\n"); + return; + } + + wc.lpfnWndProc = test_cursor_proc; + wc.lpszClassName = "d3d8_test_cursor_wc"; + ok(RegisterClassA(&wc), "Failed to register window class.\n"); + window = CreateWindow("d3d8_test_cursor_wc", "d3d8_test", WS_OVERLAPPEDWINDOW, + 0, 0, 320, 240, NULL, NULL, NULL, NULL); + ShowWindow(window, SW_SHOW); + + device = create_device(d3d8, window, window, TRUE); + if (!device) + { + skip("Failed to create a D3D device, skipping tests.\n"); + goto done; + } + + hr = IDirect3DDevice8_CreateImageSurface(device, 32, 32, D3DFMT_A8R8G8B8, &cursor); + ok(SUCCEEDED(hr), "Failed to create cursor surface, hr %#x.\n", hr); + hr = IDirect3DDevice8_SetCursorProperties(device, 0, 0, cursor); + ok(SUCCEEDED(hr), "Failed to set cursor properties, hr %#x.\n", hr); + IDirect3DSurface8_Release(cursor); + ret = IDirect3DDevice8_ShowCursor(device, TRUE); + ok(!ret, "Failed to show cursor, hr %#x.\n", ret); + + flush_events(); + expect_pos = points; + + ret = SetCursorPos(50, 50); + ok(ret, "Failed to set cursor position.\n"); + flush_events(); + + IDirect3DDevice8_SetCursorPosition(device, 75, 75, 0); + flush_events(); + /* SetCursorPosition() eats duplicates. */ + IDirect3DDevice8_SetCursorPosition(device, 75, 75, 0); + flush_events(); + + ret = SetCursorPos(100, 100); + ok(ret, "Failed to set cursor position.\n"); + flush_events(); + /* Even if the position was set with SetCursorPos(). */ + IDirect3DDevice8_SetCursorPosition(device, 100, 100, 0); + flush_events(); + + IDirect3DDevice8_SetCursorPosition(device, 125, 125, 0); + flush_events(); + ret = SetCursorPos(150, 150); + ok(ret, "Failed to set cursor position.\n"); + flush_events(); + IDirect3DDevice8_SetCursorPosition(device, 125, 125, 0); + flush_events(); + + IDirect3DDevice8_SetCursorPosition(device, 150, 150, 0); + flush_events(); + /* SetCursorPos() doesn't. */ + ret = SetCursorPos(150, 150); + ok(ret, "Failed to set cursor position.\n"); + flush_events(); + + ok(!expect_pos->x && !expect_pos->y, "Didn't receive MOUSEMOVE %u (%d, %d).\n", + expect_pos - points, expect_pos->x, expect_pos->y); + + refcount = IDirect3DDevice8_Release(device); + ok(!refcount, "Device has %u references left.\n", refcount); +done: + DestroyWindow(window); + UnregisterClassA("d3d8_test_cursor_wc", GetModuleHandleA(NULL)); + if (d3d8) + IDirect3D8_Release(d3d8); +} + static void test_states(void) { HRESULT hr; @@ -2829,6 +2951,7 @@ test_refcount(); test_mipmap_levels(); test_cursor(); + test_cursor_pos(); test_states(); test_reset(); test_scene(); diff -Nru wine1.3-1.3.30/dlls/d3d8/tests/visual.c wine1.3-1.3.31/dlls/d3d8/tests/visual.c --- wine1.3-1.3.30/dlls/d3d8/tests/visual.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/d3d8/tests/visual.c 2011-10-21 18:38:36.000000000 +0000 @@ -2228,6 +2228,74 @@ IDirect3D8_Release(d3d8); } +static void multisample_copy_rects_test(IDirect3DDevice8 *device) +{ + IDirect3DSurface8 *original_ds, *original_rt, *rt, *readback; + RECT src_rect = {64, 64, 128, 128}; + POINT dst_point = {96, 96}; + D3DLOCKED_RECT locked_rect; + IDirect3D8 *d3d8; + D3DCOLOR color; + HRESULT hr; + + hr = IDirect3DDevice8_GetDirect3D(device, &d3d8); + ok(SUCCEEDED(hr), "Failed to get d3d8 interface, hr %#x.\n", hr); + hr = IDirect3D8_CheckDeviceMultiSampleType(d3d8, D3DADAPTER_DEFAULT, + D3DDEVTYPE_HAL, D3DFMT_A8R8G8B8, TRUE, D3DMULTISAMPLE_2_SAMPLES); + IDirect3D8_Release(d3d8); + if (FAILED(hr)) + { + skip("Multisampling not supported for D3DFMT_A8R8G8B8, skipping multisampled CopyRects test.\n"); + return; + } + + hr = IDirect3DDevice8_CreateRenderTarget(device, 256, 256, D3DFMT_A8R8G8B8, + D3DMULTISAMPLE_2_SAMPLES, FALSE, &rt); + ok(SUCCEEDED(hr), "Failed to create render target, hr %#x.\n", hr); + hr = IDirect3DDevice8_CreateImageSurface(device, 256, 256, D3DFMT_A8R8G8B8, &readback); + ok(SUCCEEDED(hr), "Failed to create readback surface, hr %#x.\n", hr); + + hr = IDirect3DDevice8_GetRenderTarget(device, &original_rt); + ok(SUCCEEDED(hr), "Failed to get render target, hr %#x.\n", hr); + hr = IDirect3DDevice8_GetDepthStencilSurface(device, &original_ds); + ok(SUCCEEDED(hr), "Failed to get depth/stencil, hr %#x.\n", hr); + + hr = IDirect3DDevice8_SetRenderTarget(device, rt, NULL); + ok(SUCCEEDED(hr), "Failed to set render target, hr %#x.\n", hr); + + hr = IDirect3DDevice8_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0xff00ff00, 0.0, 0); + ok(SUCCEEDED(hr), "Failed to clear render target, hr %#x.\n", hr); + + hr = IDirect3DDevice8_CopyRects(device, rt, NULL, 0, readback, NULL); + ok(SUCCEEDED(hr), "Failed to read render target back, hr %#x.\n", hr); + + hr = IDirect3DDevice8_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0xffff0000, 0.0, 0); + ok(SUCCEEDED(hr), "Failed to clear render target, hr %#x.\n", hr); + + hr = IDirect3DDevice8_CopyRects(device, rt, &src_rect, 1, readback, &dst_point); + ok(SUCCEEDED(hr), "Failed to read render target back, hr %#x.\n", hr); + + hr = IDirect3DSurface8_LockRect(readback, &locked_rect, NULL, D3DLOCK_READONLY); + ok(SUCCEEDED(hr), "Failed to lock readback surface, hr %#x.\n", hr); + + color = *(DWORD *)((BYTE *)locked_rect.pBits + 31 * locked_rect.Pitch + 31 * 4); + ok(color == 0xff00ff00, "Got unexpected color 0x%08x.\n", color); + + color = *(DWORD *)((BYTE *)locked_rect.pBits + 127 * locked_rect.Pitch + 127 * 4); + ok(color == 0xffff0000, "Got unexpected color 0x%08x.\n", color); + + hr = IDirect3DSurface8_UnlockRect(readback); + ok(SUCCEEDED(hr), "Failed to unlock readback surface, hr %#x.\n", hr); + + hr = IDirect3DDevice8_SetRenderTarget(device, original_rt, original_ds); + ok(SUCCEEDED(hr), "Failed to restore original render target, hr %#x.\n", hr); + + IDirect3DSurface8_Release(original_ds); + IDirect3DSurface8_Release(original_rt); + IDirect3DSurface8_Release(readback); + IDirect3DSurface8_Release(rt); +} + START_TEST(visual) { IDirect3DDevice8 *device_ptr; @@ -2306,6 +2374,7 @@ depth_buffer2_test(device_ptr); intz_test(device_ptr); shadow_test(device_ptr); + multisample_copy_rects_test(device_ptr); cleanup: if(device_ptr) { diff -Nru wine1.3-1.3.30/dlls/d3d9/device.c wine1.3-1.3.31/dlls/d3d9/device.c --- wine1.3-1.3.30/dlls/d3d9/device.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/d3d9/device.c 2011-10-21 18:38:36.000000000 +0000 @@ -582,26 +582,9 @@ hr = wined3d_device_reset(This->wined3d_device, &localParameters, reset_enum_callback); if (FAILED(hr)) - { This->notreset = TRUE; - - pPresentationParameters->BackBufferWidth = localParameters.BackBufferWidth; - pPresentationParameters->BackBufferHeight = localParameters.BackBufferHeight; - pPresentationParameters->BackBufferFormat = d3dformat_from_wined3dformat(localParameters.BackBufferFormat); - pPresentationParameters->BackBufferCount = localParameters.BackBufferCount; - pPresentationParameters->MultiSampleType = localParameters.MultiSampleType; - pPresentationParameters->MultiSampleQuality = localParameters.MultiSampleQuality; - pPresentationParameters->SwapEffect = localParameters.SwapEffect; - pPresentationParameters->hDeviceWindow = localParameters.hDeviceWindow; - pPresentationParameters->Windowed = localParameters.Windowed; - pPresentationParameters->EnableAutoDepthStencil = localParameters.EnableAutoDepthStencil; - pPresentationParameters->AutoDepthStencilFormat = d3dformat_from_wined3dformat(localParameters.AutoDepthStencilFormat); - pPresentationParameters->Flags = localParameters.Flags; - pPresentationParameters->FullScreen_RefreshRateInHz = localParameters.FullScreen_RefreshRateInHz; - pPresentationParameters->PresentationInterval = localParameters.PresentationInterval; - } else { + else This->notreset = FALSE; - } wined3d_mutex_unlock(); @@ -1790,61 +1773,33 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetPaletteEntries(IDirect3DDevice9Ex *iface, UINT PaletteNumber, const PALETTEENTRY *pEntries) { - IDirect3DDevice9Impl *This = impl_from_IDirect3DDevice9Ex(iface); - HRESULT hr; - - TRACE("iface %p, palette_idx %u, entries %p.\n", iface, PaletteNumber, pEntries); - - wined3d_mutex_lock(); - hr = wined3d_device_set_palette_entries(This->wined3d_device, PaletteNumber, pEntries); - wined3d_mutex_unlock(); + FIXME("iface %p, palette_idx %u, entries %p unimplemented.\n", iface, PaletteNumber, pEntries); - return hr; + return D3DERR_INVALIDCALL; } static HRESULT WINAPI IDirect3DDevice9Impl_GetPaletteEntries(IDirect3DDevice9Ex *iface, UINT PaletteNumber, PALETTEENTRY *pEntries) { - IDirect3DDevice9Impl *This = impl_from_IDirect3DDevice9Ex(iface); - HRESULT hr; - - TRACE("iface %p, palette_idx %u, entries %p.\n", iface, PaletteNumber, pEntries); - - wined3d_mutex_lock(); - hr = wined3d_device_get_palette_entries(This->wined3d_device, PaletteNumber, pEntries); - wined3d_mutex_unlock(); + FIXME("iface %p, palette_idx %u, entries %p unimplemented.\n", iface, PaletteNumber, pEntries); - return hr; + return D3DERR_INVALIDCALL; } static HRESULT WINAPI IDirect3DDevice9Impl_SetCurrentTexturePalette(IDirect3DDevice9Ex *iface, UINT PaletteNumber) { - IDirect3DDevice9Impl *This = impl_from_IDirect3DDevice9Ex(iface); - HRESULT hr; - - TRACE("iface %p, palette_idx %u.\n", iface, PaletteNumber); - - wined3d_mutex_lock(); - hr = wined3d_device_set_current_texture_palette(This->wined3d_device, PaletteNumber); - wined3d_mutex_unlock(); + FIXME("iface %p, palette_idx %u unimplemented.\n", iface, PaletteNumber); - return hr; + return D3DERR_INVALIDCALL; } static HRESULT WINAPI IDirect3DDevice9Impl_GetCurrentTexturePalette(IDirect3DDevice9Ex *iface, UINT *PaletteNumber) { - IDirect3DDevice9Impl *This = impl_from_IDirect3DDevice9Ex(iface); - HRESULT hr; - - TRACE("iface %p, palette_idx %p.\n", iface, PaletteNumber); + FIXME("iface %p, palette_idx %p.\n", iface, PaletteNumber); - wined3d_mutex_lock(); - hr = wined3d_device_get_current_texture_palette(This->wined3d_device, PaletteNumber); - wined3d_mutex_unlock(); - - return hr; + return D3DERR_INVALIDCALL; } static HRESULT WINAPI IDirect3DDevice9Impl_SetScissorRect(IDirect3DDevice9Ex *iface, diff -Nru wine1.3-1.3.30/dlls/d3d9/tests/device.c wine1.3-1.3.31/dlls/d3d9/tests/device.c --- wine1.3-1.3.30/dlls/d3d9/tests/device.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/d3d9/tests/device.c 2011-10-21 18:38:36.000000000 +0000 @@ -21,6 +21,7 @@ */ #define COBJMACROS +#include #include #include "wine/test.h" @@ -3125,6 +3126,128 @@ DestroyWindow(focus_window); } +static const POINT *expect_pos; + +static LRESULT CALLBACK test_cursor_proc(HWND window, UINT message, WPARAM wparam, LPARAM lparam) +{ + if (message == WM_MOUSEMOVE) + { + if (expect_pos && expect_pos->x && expect_pos->y) + { + POINT p = {GET_X_LPARAM(lparam), GET_Y_LPARAM(lparam)}; + + ClientToScreen(window, &p); + if (expect_pos->x == p.x && expect_pos->y == p.y) + ++expect_pos; + } + } + + return DefWindowProcA(window, message, wparam, lparam); +} + +static void test_cursor_pos(void) +{ + IDirect3DSurface9 *cursor; + IDirect3DDevice9 *device; + WNDCLASSA wc = {0}; + IDirect3D9 *d3d9; + UINT refcount; + HWND window; + HRESULT hr; + BOOL ret; + + /* Note that we don't check for movement we're not supposed to receive. + * That's because it's hard to distinguish from the user accidentally + * moving the mouse. */ + static const POINT points[] = + { + {50, 50}, + {75, 75}, + {100, 100}, + {125, 125}, + {150, 150}, + {125, 125}, + {150, 150}, + {150, 150}, + {0, 0}, + }; + + if (!(d3d9 = pDirect3DCreate9(D3D_SDK_VERSION))) + { + skip("Failed to create IDirect3D9 object, skipping cursor tests.\n"); + return; + } + + wc.lpfnWndProc = test_cursor_proc; + wc.lpszClassName = "d3d9_test_cursor_wc"; + ok(RegisterClassA(&wc), "Failed to register window class.\n"); + window = CreateWindow("d3d9_test_cursor_wc", "d3d9_test", WS_OVERLAPPEDWINDOW, + 0, 0, 320, 240, NULL, NULL, NULL, NULL); + ShowWindow(window, SW_SHOW); + + device = create_device(d3d9, window, window, TRUE); + if (!device) + { + skip("Failed to create a D3D device, skipping tests.\n"); + goto done; + } + + hr = IDirect3DDevice9_CreateOffscreenPlainSurface(device, 32, 32, + D3DFMT_A8R8G8B8, D3DPOOL_SCRATCH, &cursor, NULL); + ok(SUCCEEDED(hr), "Failed to create cursor surface, hr %#x.\n", hr); + hr = IDirect3DDevice9_SetCursorProperties(device, 0, 0, cursor); + ok(SUCCEEDED(hr), "Failed to set cursor properties, hr %#x.\n", hr); + IDirect3DSurface9_Release(cursor); + ret = IDirect3DDevice9_ShowCursor(device, TRUE); + ok(!ret, "Failed to show cursor, hr %#x.\n", ret); + + flush_events(); + expect_pos = points; + + ret = SetCursorPos(50, 50); + ok(ret, "Failed to set cursor position.\n"); + flush_events(); + + IDirect3DDevice9_SetCursorPosition(device, 75, 75, 0); + flush_events(); + /* SetCursorPosition() eats duplicates. */ + IDirect3DDevice9_SetCursorPosition(device, 75, 75, 0); + flush_events(); + + ret = SetCursorPos(100, 100); + ok(ret, "Failed to set cursor position.\n"); + flush_events(); + /* Even if the position was set with SetCursorPos(). */ + IDirect3DDevice9_SetCursorPosition(device, 100, 100, 0); + flush_events(); + + IDirect3DDevice9_SetCursorPosition(device, 125, 125, 0); + flush_events(); + ret = SetCursorPos(150, 150); + ok(ret, "Failed to set cursor position.\n"); + flush_events(); + IDirect3DDevice9_SetCursorPosition(device, 125, 125, 0); + flush_events(); + + IDirect3DDevice9_SetCursorPosition(device, 150, 150, 0); + flush_events(); + /* SetCursorPos() doesn't. */ + ret = SetCursorPos(150, 150); + ok(ret, "Failed to set cursor position.\n"); + flush_events(); + + ok(!expect_pos->x && !expect_pos->y, "Didn't receive MOUSEMOVE %u (%d, %d).\n", + expect_pos - points, expect_pos->x, expect_pos->y); + + refcount = IDirect3DDevice9_Release(device); + ok(!refcount, "Device has %u references left.\n", refcount); +done: + DestroyWindow(window); + UnregisterClassA("d3d9_test_cursor_wc", GetModuleHandleA(NULL)); + if (d3d9) + IDirect3D9_Release(d3d9); +} + START_TEST(device) { HMODULE d3d9_handle = LoadLibraryA( "d3d9.dll" ); @@ -3164,6 +3287,7 @@ test_mipmap_levels(); test_checkdevicemultisampletype(); test_cursor(); + test_cursor_pos(); test_reset_fullscreen(); test_reset(); test_scene(); diff -Nru wine1.3-1.3.30/dlls/d3d9/tests/visual.c wine1.3-1.3.31/dlls/d3d9/tests/visual.c --- wine1.3-1.3.30/dlls/d3d9/tests/visual.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/d3d9/tests/visual.c 2011-10-21 18:38:36.000000000 +0000 @@ -174,7 +174,7 @@ d3d9_ptr = d3d9_create(D3D_SDK_VERSION); if (!d3d9_ptr) { - skip("could not create D3D9\n"); + win_skip("could not create D3D9\n"); return NULL; } @@ -12607,6 +12607,56 @@ IDirect3DTexture9_Release(src_tex); } +static void multisample_get_rtdata_test(IDirect3DDevice9 *device) +{ + IDirect3DSurface9 *original_ds, *original_rt, *rt, *readback; + IDirect3D9 *d3d9; + HRESULT hr; + + hr = IDirect3DDevice9_GetDirect3D(device, &d3d9); + ok(SUCCEEDED(hr), "Failed to get d3d9 interface, hr %#x.\n", hr); + hr = IDirect3D9_CheckDeviceMultiSampleType(d3d9, D3DADAPTER_DEFAULT, + D3DDEVTYPE_HAL, D3DFMT_A8R8G8B8, TRUE, D3DMULTISAMPLE_2_SAMPLES, NULL); + IDirect3D9_Release(d3d9); + if (FAILED(hr)) + { + skip("Multisampling not supported for D3DFMT_A8R8G8B8, skipping multisampled CopyRects test.\n"); + return; + } + + hr = IDirect3DDevice9_CreateRenderTarget(device, 256, 256, D3DFMT_A8R8G8B8, + D3DMULTISAMPLE_2_SAMPLES, 0, FALSE, &rt, NULL); + ok(SUCCEEDED(hr), "Failed to create render target, hr %#x.\n", hr); + hr = IDirect3DDevice9_CreateOffscreenPlainSurface(device, 256, 256, D3DFMT_A8R8G8B8, + D3DPOOL_SYSTEMMEM, &readback, NULL); + ok(SUCCEEDED(hr), "Failed to create readback surface, hr %#x.\n", hr); + + hr = IDirect3DDevice9_GetRenderTarget(device, 0, &original_rt); + ok(SUCCEEDED(hr), "Failed to get render target, hr %#x.\n", hr); + hr = IDirect3DDevice9_GetDepthStencilSurface(device, &original_ds); + ok(SUCCEEDED(hr), "Failed to get depth/stencil, hr %#x.\n", hr); + + hr = IDirect3DDevice9_SetRenderTarget(device, 0, rt); + ok(SUCCEEDED(hr), "Failed to set render target, hr %#x.\n", hr); + hr = IDirect3DDevice9_SetDepthStencilSurface(device, NULL); + ok(SUCCEEDED(hr), "Failed to set depth/stencil, hr %#x.\n", hr); + + hr = IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0xff00ff00, 0.0, 0); + ok(SUCCEEDED(hr), "Failed to clear render target, hr %#x.\n", hr); + hr = IDirect3DDevice9_GetRenderTargetData(device, rt, readback); + todo_wine ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x.\n", hr); + + hr = IDirect3DDevice9_SetDepthStencilSurface(device, original_ds); + ok(SUCCEEDED(hr), "Failed to set depth/stencil, hr %#x.\n", hr); + hr = IDirect3DDevice9_SetRenderTarget(device, 0, original_rt); + ok(SUCCEEDED(hr), "Failed to restore original render target, hr %#x.\n", hr); + + IDirect3DSurface9_Release(original_ds); + IDirect3DSurface9_Release(original_rt); + IDirect3DSurface9_Release(readback); + IDirect3DSurface9_Release(rt); +} + START_TEST(visual) { IDirect3DDevice9 *device_ptr; @@ -12781,6 +12831,7 @@ srgbwrite_format_test(device_ptr); clip_planes_test(device_ptr); update_surface_test(device_ptr); + multisample_get_rtdata_test(device_ptr); cleanup: if(device_ptr) { diff -Nru wine1.3-1.3.30/dlls/d3dx9_36/mesh.c wine1.3-1.3.31/dlls/d3dx9_36/mesh.c --- wine1.3-1.3.30/dlls/d3dx9_36/mesh.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/d3dx9_36/mesh.c 2011-10-21 18:38:36.000000000 +0000 @@ -3444,7 +3444,7 @@ current_frame = frame->pFrameSibling; frame->pFrameSibling = current_frame->pFrameSibling; current_frame->pFrameSibling = NULL; - } else if (frame) { + } else { current_frame = frame; last = TRUE; } diff -Nru wine1.3-1.3.30/dlls/dbghelp/coff.c wine1.3-1.3.31/dlls/dbghelp/coff.c --- wine1.3-1.3.30/dlls/dbghelp/coff.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dbghelp/coff.c 2011-10-21 18:38:36.000000000 +0000 @@ -42,9 +42,7 @@ #ifdef HAVE_UNISTD_H # include #endif -#ifndef PATH_MAX -#define PATH_MAX MAX_PATH -#endif + #include #include "windef.h" #include "winbase.h" diff -Nru wine1.3-1.3.30/dlls/dbghelp/dwarf.c wine1.3-1.3.31/dlls/dbghelp/dwarf.c --- wine1.3-1.3.30/dlls/dbghelp/dwarf.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dbghelp/dwarf.c 2011-10-21 18:38:36.000000000 +0000 @@ -39,9 +39,6 @@ # include #endif #include -#ifndef PATH_MAX -#define PATH_MAX MAX_PATH -#endif #include #include diff -Nru wine1.3-1.3.30/dlls/dbghelp/elf_module.c wine1.3-1.3.31/dlls/dbghelp/elf_module.c --- wine1.3-1.3.30/dlls/dbghelp/elf_module.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dbghelp/elf_module.c 2011-10-21 18:38:36.000000000 +0000 @@ -42,9 +42,6 @@ #ifdef HAVE_UNISTD_H # include #endif -#ifndef PATH_MAX -#define PATH_MAX MAX_PATH -#endif #include "dbghelp_private.h" diff -Nru wine1.3-1.3.30/dlls/dbghelp/msc.c wine1.3-1.3.31/dlls/dbghelp/msc.c --- wine1.3-1.3.30/dlls/dbghelp/msc.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dbghelp/msc.c 2011-10-21 18:38:36.000000000 +0000 @@ -45,9 +45,7 @@ #ifdef HAVE_UNISTD_H # include #endif -#ifndef PATH_MAX -#define PATH_MAX MAX_PATH -#endif + #include #include "windef.h" #include "winbase.h" diff -Nru wine1.3-1.3.30/dlls/dbghelp/stabs.c wine1.3-1.3.31/dlls/dbghelp/stabs.c --- wine1.3-1.3.30/dlls/dbghelp/stabs.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dbghelp/stabs.c 2011-10-21 18:38:36.000000000 +0000 @@ -47,9 +47,6 @@ # include #endif #include -#ifndef PATH_MAX -#define PATH_MAX MAX_PATH -#endif #include #include @@ -1272,7 +1269,7 @@ struct symt_function* curr_func = NULL; struct symt_block* block = NULL; struct symt_compiland* compiland = NULL; - char srcpath[PATH_MAX]; /* path to directory source file is in */ + char* srcpath = NULL; int i; int nstab; const char* ptr; @@ -1294,7 +1291,6 @@ nstab = stablen / sizeof(struct stab_nlist); strs_end = strs + strtablen; - memset(srcpath, 0, sizeof(srcpath)); memset(stabs_basic, 0, sizeof(stabs_basic)); memset(&pending_block, 0, sizeof(pending_block)); memset(&pending_func, 0, sizeof(pending_func)); @@ -1565,7 +1561,8 @@ if (*ptr == '\0') /* end of N_SO file */ { /* Nuke old path. */ - srcpath[0] = '\0'; + HeapFree(GetProcessHeap(), 0, srcpath); + srcpath = NULL; stabs_finalize_function(module, curr_func, 0); curr_func = NULL; source_idx = -1; @@ -1583,7 +1580,10 @@ compiland = symt_new_compiland(module, 0 /* FIXME */, source_idx); } else + { + srcpath = HeapAlloc(GetProcessHeap(), 0, len + 1); strcpy(srcpath, ptr); + } } break; case N_SOL: diff -Nru wine1.3-1.3.30/dlls/ddraw/ddraw.c wine1.3-1.3.31/dlls/ddraw/ddraw.c --- wine1.3-1.3.30/dlls/ddraw/ddraw.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ddraw/ddraw.c 2011-10-21 18:38:36.000000000 +0000 @@ -410,6 +410,50 @@ return ddraw1_AddRef(&This->IDirectDraw_iface); } +void ddraw_destroy_swapchain(IDirectDrawImpl *ddraw) +{ + TRACE("Destroying the swapchain.\n"); + + wined3d_swapchain_decref(ddraw->wined3d_swapchain); + ddraw->wined3d_swapchain = NULL; + + if (DefaultSurfaceType == SURFACE_OPENGL) + { + UINT i; + + for (i = 0; i < ddraw->numConvertedDecls; ++i) + { + wined3d_vertex_declaration_decref(ddraw->decls[i].decl); + } + HeapFree(GetProcessHeap(), 0, ddraw->decls); + ddraw->numConvertedDecls = 0; + + if (FAILED(wined3d_device_uninit_3d(ddraw->wined3d_device))) + { + ERR("Failed to uninit 3D.\n"); + } + else + { + /* Free the d3d window if one was created. */ + if (ddraw->d3d_window && ddraw->d3d_window != ddraw->dest_window) + { + TRACE("Destroying the hidden render window %p.\n", ddraw->d3d_window); + DestroyWindow(ddraw->d3d_window); + ddraw->d3d_window = 0; + } + } + + ddraw->d3d_initialized = FALSE; + ddraw->d3d_target = NULL; + } + else + { + wined3d_device_uninit_gdi(ddraw->wined3d_device); + } + + TRACE("Swapchain destroyed.\n"); +} + /***************************************************************************** * ddraw_destroy * @@ -437,7 +481,16 @@ list_remove(&This->ddraw_list_entry); LeaveCriticalSection(&ddraw_cs); - /* Release the attached WineD3D stuff */ + /* This can happen more or less legitimately for ddraw 1 and 2, where + * surfaces don't keep a reference to the ddraw object. The surfaces + * will of course be broken after this, (and on native trying to do + * anything with them in that state results in an access violation), but + * the release of the ddraw object should succeed without crashing. */ + if (This->wined3d_swapchain) + { + WARN("DirectDraw object is being destroyed while the swapchain still exists.\n"); + ddraw_destroy_swapchain(This); + } wined3d_device_decref(This->wined3d_device); wined3d_decref(This->wineD3D); @@ -4328,7 +4381,7 @@ } TRACE("Created device %p.\n", object); - *device = (IDirect3DDevice7 *)object; + *device = &object->IDirect3DDevice7_iface; LeaveCriticalSection(&ddraw_cs); return D3D_OK; @@ -4339,6 +4392,8 @@ { IDirectDrawImpl *This = impl_from_IDirect3D3(iface); IDirectDrawSurfaceImpl *surface_impl = unsafe_impl_from_IDirectDrawSurface4(surface); + IDirect3DDevice7 *device7; + IDirect3DDeviceImpl *device_impl; HRESULT hr; TRACE("iface %p, riid %s, surface %p, device %p, outer_unknown %p.\n", @@ -4347,9 +4402,12 @@ if (outer_unknown) return CLASS_E_NOAGGREGATION; hr = d3d7_CreateDevice(&This->IDirect3D7_iface, riid, - surface_impl ? &surface_impl->IDirectDrawSurface7_iface : NULL, - (IDirect3DDevice7 **)device); - if (*device) *device = (IDirect3DDevice3 *)&((IDirect3DDeviceImpl *)*device)->IDirect3DDevice3_vtbl; + surface_impl ? &surface_impl->IDirectDrawSurface7_iface : NULL, device ? &device7 : NULL); + if (SUCCEEDED(hr)) + { + device_impl = impl_from_IDirect3DDevice7(device7); + *device = &device_impl->IDirect3DDevice3_iface; + } return hr; } @@ -4359,15 +4417,20 @@ { IDirectDrawImpl *This = impl_from_IDirect3D2(iface); IDirectDrawSurfaceImpl *surface_impl = unsafe_impl_from_IDirectDrawSurface(surface); + IDirect3DDevice7 *device7; + IDirect3DDeviceImpl *device_impl; HRESULT hr; TRACE("iface %p, riid %s, surface %p, device %p.\n", iface, debugstr_guid(riid), surface, device); hr = d3d7_CreateDevice(&This->IDirect3D7_iface, riid, - surface_impl ? &surface_impl->IDirectDrawSurface7_iface : NULL, - (IDirect3DDevice7 **)device); - if (*device) *device = (IDirect3DDevice2 *)&((IDirect3DDeviceImpl *)*device)->IDirect3DDevice2_vtbl; + surface_impl ? &surface_impl->IDirectDrawSurface7_iface : NULL, device ? &device7 : NULL); + if (SUCCEEDED(hr)) + { + device_impl = impl_from_IDirect3DDevice7(device7); + *device = &device_impl->IDirect3DDevice2_iface; + } return hr; } @@ -5387,7 +5450,7 @@ ddraw->orig_width = GetSystemMetrics(SM_CXSCREEN); ddraw->orig_height = GetSystemMetrics(SM_CYSCREEN); - ddraw->wineD3D = wined3d_create(7, WINED3D_PALETTE_PER_SURFACE | WINED3D_LEGACY_DEPTH_BIAS, + ddraw->wineD3D = wined3d_create(7, WINED3D_LEGACY_DEPTH_BIAS, &ddraw->IDirectDraw7_iface); if (!ddraw->wineD3D) { diff -Nru wine1.3-1.3.30/dlls/ddraw/ddraw_private.h wine1.3-1.3.31/dlls/ddraw/ddraw_private.h --- wine1.3-1.3.30/dlls/ddraw/ddraw_private.h 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ddraw/ddraw_private.h 2011-10-21 18:38:36.000000000 +0000 @@ -127,6 +127,7 @@ #define DDRAW_WINDOW_CLASS_NAME "ddraw_wc" HRESULT ddraw_init(IDirectDrawImpl *ddraw, WINED3DDEVTYPE device_type) DECLSPEC_HIDDEN; +void ddraw_destroy_swapchain(IDirectDrawImpl *ddraw) DECLSPEC_HIDDEN; /* Utility functions */ void DDRAW_Convert_DDSCAPS_1_To_2(const DDSCAPS *pIn, DDSCAPS2 *pOut) DECLSPEC_HIDDEN; @@ -165,6 +166,7 @@ /* This implementation handles attaching surfaces to other surfaces */ IDirectDrawSurfaceImpl *next_attached; IDirectDrawSurfaceImpl *first_attached; + IUnknown *attached_iface; /* Complex surfaces are organized in a tree, although the tree is degenerated to a list in most cases. * In mipmap and primary surfaces each level has only one attachment, which is the next surface level. @@ -276,10 +278,10 @@ struct IDirect3DDeviceImpl { /* IUnknown */ - const IDirect3DDevice7Vtbl *lpVtbl; - const IDirect3DDevice3Vtbl *IDirect3DDevice3_vtbl; - const IDirect3DDevice2Vtbl *IDirect3DDevice2_vtbl; - const IDirect3DDeviceVtbl *IDirect3DDevice_vtbl; + IDirect3DDevice7 IDirect3DDevice7_iface; + IDirect3DDevice3 IDirect3DDevice3_iface; + IDirect3DDevice2 IDirect3DDevice2_iface; + IDirect3DDevice IDirect3DDevice_iface; LONG ref; /* Other object connections */ @@ -324,21 +326,31 @@ D3DDEVICEDESC *Desc123, D3DDEVICEDESC7 *Desc7) DECLSPEC_HIDDEN; WINED3DZBUFFERTYPE IDirect3DDeviceImpl_UpdateDepthStencil(IDirect3DDeviceImpl *This) DECLSPEC_HIDDEN; -static inline IDirect3DDeviceImpl *device_from_device1(IDirect3DDevice *iface) +static inline IDirect3DDeviceImpl *impl_from_IDirect3DDevice(IDirect3DDevice *iface) { - return (IDirect3DDeviceImpl *)((char*)iface - FIELD_OFFSET(IDirect3DDeviceImpl, IDirect3DDevice_vtbl)); + return CONTAINING_RECORD(iface, IDirect3DDeviceImpl, IDirect3DDevice_iface); } -static inline IDirect3DDeviceImpl *device_from_device2(IDirect3DDevice2 *iface) +static inline IDirect3DDeviceImpl *impl_from_IDirect3DDevice2(IDirect3DDevice2 *iface) { - return (IDirect3DDeviceImpl *)((char*)iface - FIELD_OFFSET(IDirect3DDeviceImpl, IDirect3DDevice2_vtbl)); + return CONTAINING_RECORD(iface, IDirect3DDeviceImpl, IDirect3DDevice2_iface); } -static inline IDirect3DDeviceImpl *device_from_device3(IDirect3DDevice3 *iface) +static inline IDirect3DDeviceImpl *impl_from_IDirect3DDevice3(IDirect3DDevice3 *iface) { - return (IDirect3DDeviceImpl *)((char*)iface - FIELD_OFFSET(IDirect3DDeviceImpl, IDirect3DDevice3_vtbl)); + return CONTAINING_RECORD(iface, IDirect3DDeviceImpl, IDirect3DDevice3_iface); } +static inline IDirect3DDeviceImpl *impl_from_IDirect3DDevice7(IDirect3DDevice7 *iface) +{ + return CONTAINING_RECORD(iface, IDirect3DDeviceImpl, IDirect3DDevice7_iface); +} + +IDirect3DDeviceImpl *unsafe_impl_from_IDirect3DDevice(IDirect3DDevice *iface) DECLSPEC_HIDDEN; +IDirect3DDeviceImpl *unsafe_impl_from_IDirect3DDevice2(IDirect3DDevice2 *iface) DECLSPEC_HIDDEN; +IDirect3DDeviceImpl *unsafe_impl_from_IDirect3DDevice3(IDirect3DDevice3 *iface) DECLSPEC_HIDDEN; +IDirect3DDeviceImpl *unsafe_impl_from_IDirect3DDevice7(IDirect3DDevice7 *iface) DECLSPEC_HIDDEN; + /***************************************************************************** * IDirectDrawClipper implementation structure *****************************************************************************/ diff -Nru wine1.3-1.3.30/dlls/ddraw/device.c wine1.3-1.3.31/dlls/ddraw/device.c --- wine1.3-1.3.30/dlls/ddraw/device.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ddraw/device.c 2011-10-21 18:38:36.000000000 +0000 @@ -101,7 +101,7 @@ REFIID refiid, void **obj) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); TRACE("iface %p, riid %s, object %p.\n", iface, debugstr_guid(refiid), obj); @@ -163,15 +163,15 @@ /* Direct3DDevice */ else if ( IsEqualGUID( &IID_IDirect3DDevice , refiid ) ) { - *obj = &This->IDirect3DDevice_vtbl; + *obj = &This->IDirect3DDevice_iface; TRACE("(%p) Returning IDirect3DDevice interface at %p\n", This, *obj); } else if ( IsEqualGUID( &IID_IDirect3DDevice2 , refiid ) ) { - *obj = &This->IDirect3DDevice2_vtbl; + *obj = &This->IDirect3DDevice2_iface; TRACE("(%p) Returning IDirect3DDevice2 interface at %p\n", This, *obj); } else if ( IsEqualGUID( &IID_IDirect3DDevice3 , refiid ) ) { - *obj = &This->IDirect3DDevice3_vtbl; + *obj = &This->IDirect3DDevice3_iface; TRACE("(%p) Returning IDirect3DDevice3 interface at %p\n", This, *obj); } else if ( IsEqualGUID( &IID_IDirect3DDevice7 , refiid ) ) { @@ -194,25 +194,28 @@ static HRESULT WINAPI IDirect3DDeviceImpl_3_QueryInterface(IDirect3DDevice3 *iface, REFIID riid, void **obj) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); TRACE("iface %p, riid %s, object %p.\n", iface, debugstr_guid(riid), obj); - return IDirect3DDevice7_QueryInterface((IDirect3DDevice7 *)device_from_device3(iface), riid, obj); + return IDirect3DDevice7_QueryInterface(&This->IDirect3DDevice7_iface, riid, obj); } static HRESULT WINAPI IDirect3DDeviceImpl_2_QueryInterface(IDirect3DDevice2 *iface, REFIID riid, void **obj) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); TRACE("iface %p, riid %s, object %p.\n", iface, debugstr_guid(riid), obj); - return IDirect3DDevice7_QueryInterface((IDirect3DDevice7 *)device_from_device2(iface), riid, obj); + return IDirect3DDevice7_QueryInterface(&This->IDirect3DDevice7_iface, riid, obj); } static HRESULT WINAPI IDirect3DDeviceImpl_1_QueryInterface(IDirect3DDevice *iface, REFIID riid, void **obp) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice(iface); TRACE("iface %p, riid %s, object %p.\n", iface, debugstr_guid(riid), obp); - return IDirect3DDevice7_QueryInterface((IDirect3DDevice7 *)device_from_device1(iface), riid, obp); + return IDirect3DDevice7_QueryInterface(&This->IDirect3DDevice7_iface, riid, obp); } /***************************************************************************** @@ -230,7 +233,7 @@ static ULONG WINAPI IDirect3DDeviceImpl_7_AddRef(IDirect3DDevice7 *iface) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); ULONG ref = InterlockedIncrement(&This->ref); TRACE("%p increasing refcount to %u.\n", This, ref); @@ -240,23 +243,26 @@ static ULONG WINAPI IDirect3DDeviceImpl_3_AddRef(IDirect3DDevice3 *iface) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); TRACE("iface %p.\n", iface); - return IDirect3DDevice7_AddRef((IDirect3DDevice7 *)device_from_device3(iface)); + return IDirect3DDevice7_AddRef(&This->IDirect3DDevice7_iface); } static ULONG WINAPI IDirect3DDeviceImpl_2_AddRef(IDirect3DDevice2 *iface) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); TRACE("iface %p.\n", iface); - return IDirect3DDevice7_AddRef((IDirect3DDevice7 *)device_from_device2(iface)); + return IDirect3DDevice7_AddRef(&This->IDirect3DDevice7_iface); } static ULONG WINAPI IDirect3DDeviceImpl_1_AddRef(IDirect3DDevice *iface) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice(iface); TRACE("iface %p.\n", iface); - return IDirect3DDevice7_AddRef((IDirect3DDevice7 *)device_from_device1(iface)); + return IDirect3DDevice7_AddRef(&This->IDirect3DDevice7_iface); } /***************************************************************************** @@ -274,7 +280,7 @@ static ULONG WINAPI IDirect3DDeviceImpl_7_Release(IDirect3DDevice7 *iface) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); ULONG ref = InterlockedDecrement(&This->ref); TRACE("%p decreasing refcount to %u.\n", This, ref); @@ -327,7 +333,7 @@ { /* No FIXME here because this might happen because of sloppy applications. */ WARN("Leftover matrix handle %#x (%p), deleting.\n", i + 1, entry->object); - IDirect3DDevice_DeleteMatrix((IDirect3DDevice *)&This->IDirect3DDevice_vtbl, i + 1); + IDirect3DDevice_DeleteMatrix(&This->IDirect3DDevice_iface, i + 1); break; } @@ -376,23 +382,26 @@ static ULONG WINAPI IDirect3DDeviceImpl_3_Release(IDirect3DDevice3 *iface) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); TRACE("iface %p.\n", iface); - return IDirect3DDevice7_Release((IDirect3DDevice7 *)device_from_device3(iface)); + return IDirect3DDevice7_Release(&This->IDirect3DDevice7_iface); } static ULONG WINAPI IDirect3DDeviceImpl_2_Release(IDirect3DDevice2 *iface) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); TRACE("iface %p.\n", iface); - return IDirect3DDevice7_Release((IDirect3DDevice7 *)device_from_device2(iface)); + return IDirect3DDevice7_Release(&This->IDirect3DDevice7_iface); } static ULONG WINAPI IDirect3DDeviceImpl_1_Release(IDirect3DDevice *iface) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice(iface); TRACE("iface %p.\n", iface); - return IDirect3DDevice7_Release((IDirect3DDevice7 *)device_from_device1(iface)); + return IDirect3DDevice7_Release(&This->IDirect3DDevice7_iface); } /***************************************************************************** @@ -446,7 +455,7 @@ IDirect3DDeviceImpl_7_GetCaps(IDirect3DDevice7 *iface, D3DDEVICEDESC7 *Desc) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); D3DDEVICEDESC OldDesc; TRACE("iface %p, device_desc %p.\n", iface, Desc); @@ -497,7 +506,7 @@ D3DDEVICEDESC *HWDesc, D3DDEVICEDESC *HelDesc) { - IDirect3DDeviceImpl *This = device_from_device3(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); D3DDEVICEDESC7 newDesc; HRESULT hr; @@ -513,17 +522,17 @@ static HRESULT WINAPI IDirect3DDeviceImpl_2_GetCaps(IDirect3DDevice2 *iface, D3DDEVICEDESC *D3DHWDevDesc, D3DDEVICEDESC *D3DHELDevDesc) { - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); TRACE("iface %p, hw_desc %p, hel_desc %p.\n", iface, D3DHWDevDesc, D3DHELDevDesc); - return IDirect3DDevice3_GetCaps((IDirect3DDevice3 *)&This->IDirect3DDevice3_vtbl, D3DHWDevDesc, D3DHELDevDesc); + return IDirect3DDevice3_GetCaps(&This->IDirect3DDevice3_iface, D3DHWDevDesc, D3DHELDevDesc); } static HRESULT WINAPI IDirect3DDeviceImpl_1_GetCaps(IDirect3DDevice *iface, D3DDEVICEDESC *D3DHWDevDesc, D3DDEVICEDESC *D3DHELDevDesc) { - IDirect3DDeviceImpl *This = device_from_device1(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice(iface); TRACE("iface %p, hw_desc %p, hel_desc %p.\n", iface, D3DHWDevDesc, D3DHELDevDesc); - return IDirect3DDevice3_GetCaps((IDirect3DDevice3 *)&This->IDirect3DDevice3_vtbl, D3DHWDevDesc, D3DHELDevDesc); + return IDirect3DDevice3_GetCaps(&This->IDirect3DDevice3_iface, D3DHWDevDesc, D3DHELDevDesc); } /***************************************************************************** @@ -543,7 +552,7 @@ IDirect3DTexture2 *Tex1, IDirect3DTexture2 *Tex2) { - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); IDirectDrawSurfaceImpl *surf1 = unsafe_impl_from_IDirect3DTexture2(Tex1); IDirectDrawSurfaceImpl *surf2 = unsafe_impl_from_IDirect3DTexture2(Tex2); DWORD h1, h2; @@ -567,7 +576,7 @@ static HRESULT WINAPI IDirect3DDeviceImpl_1_SwapTextureHandles(IDirect3DDevice *iface, IDirect3DTexture *D3DTex1, IDirect3DTexture *D3DTex2) { - IDirect3DDeviceImpl *This = device_from_device1(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice(iface); IDirectDrawSurfaceImpl *surf1 = unsafe_impl_from_IDirect3DTexture(D3DTex1); IDirectDrawSurfaceImpl *surf2 = unsafe_impl_from_IDirect3DTexture(D3DTex2); IDirect3DTexture2 *t1 = surf1 ? &surf1->IDirect3DTexture2_iface : NULL; @@ -575,7 +584,7 @@ TRACE("iface %p, tex1 %p, tex2 %p.\n", iface, D3DTex1, D3DTex2); - return IDirect3DDevice2_SwapTextureHandles((IDirect3DDevice2 *)&This->IDirect3DDevice2_vtbl, t1, t2); + return IDirect3DDevice2_SwapTextureHandles(&This->IDirect3DDevice2_iface, t1, t2); } /***************************************************************************** @@ -617,20 +626,20 @@ static HRESULT WINAPI IDirect3DDeviceImpl_2_GetStats(IDirect3DDevice2 *iface, D3DSTATS *Stats) { - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); TRACE("iface %p, stats %p.\n", iface, Stats); - return IDirect3DDevice3_GetStats((IDirect3DDevice3 *)&This->IDirect3DDevice3_vtbl, Stats); + return IDirect3DDevice3_GetStats(&This->IDirect3DDevice3_iface, Stats); } static HRESULT WINAPI IDirect3DDeviceImpl_1_GetStats(IDirect3DDevice *iface, D3DSTATS *Stats) { - IDirect3DDeviceImpl *This = device_from_device1(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice(iface); TRACE("iface %p, stats %p.\n", iface, Stats); - return IDirect3DDevice3_GetStats((IDirect3DDevice3 *)&This->IDirect3DDevice3_vtbl, Stats); + return IDirect3DDevice3_GetStats(&This->IDirect3DDevice3_iface, Stats); } /***************************************************************************** @@ -659,7 +668,7 @@ IDirect3DExecuteBuffer **ExecuteBuffer, IUnknown *UnkOuter) { - IDirect3DDeviceImpl *This = device_from_device1(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice(iface); IDirect3DExecuteBufferImpl* object; HRESULT hr; @@ -710,7 +719,7 @@ static HRESULT WINAPI IDirect3DDeviceImpl_1_Execute(IDirect3DDevice *iface, IDirect3DExecuteBuffer *ExecuteBuffer, IDirect3DViewport *Viewport, DWORD Flags) { - IDirect3DDeviceImpl *This = device_from_device1(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice(iface); IDirect3DExecuteBufferImpl *buffer = unsafe_impl_from_IDirect3DExecuteBuffer(ExecuteBuffer); IDirect3DViewportImpl *Direct3DViewportImpl = unsafe_impl_from_IDirect3DViewport(Viewport); HRESULT hr; @@ -749,7 +758,7 @@ IDirect3DDeviceImpl_3_AddViewport(IDirect3DDevice3 *iface, IDirect3DViewport3 *Viewport) { - IDirect3DDeviceImpl *This = device_from_device3(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); IDirect3DViewportImpl *vp = unsafe_impl_from_IDirect3DViewport3(Viewport); TRACE("iface %p, viewport %p.\n", iface, Viewport); @@ -770,23 +779,23 @@ static HRESULT WINAPI IDirect3DDeviceImpl_2_AddViewport(IDirect3DDevice2 *iface, IDirect3DViewport2 *Direct3DViewport2) { - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); IDirect3DViewportImpl *vp = unsafe_impl_from_IDirect3DViewport2(Direct3DViewport2); TRACE("iface %p, viewport %p.\n", iface, Direct3DViewport2); - return IDirect3DDevice3_AddViewport((IDirect3DDevice3 *)&This->IDirect3DDevice3_vtbl, &vp->IDirect3DViewport3_iface); + return IDirect3DDevice3_AddViewport(&This->IDirect3DDevice3_iface, &vp->IDirect3DViewport3_iface); } static HRESULT WINAPI IDirect3DDeviceImpl_1_AddViewport(IDirect3DDevice *iface, IDirect3DViewport *Direct3DViewport) { - IDirect3DDeviceImpl *This = device_from_device1(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice(iface); IDirect3DViewportImpl *vp = unsafe_impl_from_IDirect3DViewport(Direct3DViewport); TRACE("iface %p, viewport %p.\n", iface, Direct3DViewport); - return IDirect3DDevice3_AddViewport((IDirect3DDevice3 *)&This->IDirect3DDevice3_vtbl, &vp->IDirect3DViewport3_iface); + return IDirect3DDevice3_AddViewport(&This->IDirect3DDevice3_iface, &vp->IDirect3DViewport3_iface); } /***************************************************************************** @@ -807,14 +816,14 @@ *****************************************************************************/ static HRESULT WINAPI IDirect3DDeviceImpl_3_DeleteViewport(IDirect3DDevice3 *iface, IDirect3DViewport3 *viewport) { - IDirect3DDeviceImpl *device = device_from_device3(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); IDirect3DViewportImpl *vp = unsafe_impl_from_IDirect3DViewport3(viewport); TRACE("iface %p, viewport %p.\n", iface, viewport); EnterCriticalSection(&ddraw_cs); - if (vp->active_device != device) + if (vp->active_device != This) { WARN("Viewport %p active device is %p.\n", vp, vp->active_device); LeaveCriticalSection(&ddraw_cs); @@ -831,23 +840,23 @@ static HRESULT WINAPI IDirect3DDeviceImpl_2_DeleteViewport(IDirect3DDevice2 *iface, IDirect3DViewport2 *Direct3DViewport2) { - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); IDirect3DViewportImpl *vp = unsafe_impl_from_IDirect3DViewport2(Direct3DViewport2); TRACE("iface %p, viewport %p.\n", iface, Direct3DViewport2); - return IDirect3DDevice3_DeleteViewport((IDirect3DDevice3 *)&This->IDirect3DDevice3_vtbl, &vp->IDirect3DViewport3_iface); + return IDirect3DDevice3_DeleteViewport(&This->IDirect3DDevice3_iface, &vp->IDirect3DViewport3_iface); } static HRESULT WINAPI IDirect3DDeviceImpl_1_DeleteViewport(IDirect3DDevice *iface, IDirect3DViewport *Direct3DViewport) { - IDirect3DDeviceImpl *This = device_from_device1(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice(iface); IDirect3DViewportImpl *vp = unsafe_impl_from_IDirect3DViewport(Direct3DViewport); TRACE("iface %p, viewport %p.\n", iface, Direct3DViewport); - return IDirect3DDevice3_DeleteViewport((IDirect3DDevice3 *)&This->IDirect3DDevice3_vtbl, &vp->IDirect3DViewport3_iface); + return IDirect3DDevice3_DeleteViewport(&This->IDirect3DDevice3_iface, &vp->IDirect3DViewport3_iface); } /***************************************************************************** @@ -874,7 +883,7 @@ IDirect3DViewport3 **lplpDirect3DViewport3, DWORD Flags) { - IDirect3DDeviceImpl *This = device_from_device3(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); IDirect3DViewportImpl *vp = unsafe_impl_from_IDirect3DViewport3(Viewport3); IDirect3DViewportImpl *next; struct list *entry; @@ -926,7 +935,7 @@ static HRESULT WINAPI IDirect3DDeviceImpl_2_NextViewport(IDirect3DDevice2 *iface, IDirect3DViewport2 *Viewport2, IDirect3DViewport2 **lplpDirect3DViewport2, DWORD Flags) { - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); IDirect3DViewportImpl *vp = unsafe_impl_from_IDirect3DViewport2(Viewport2); IDirect3DViewport3 *res; HRESULT hr; @@ -934,7 +943,7 @@ TRACE("iface %p, viewport %p, next %p, flags %#x.\n", iface, Viewport2, lplpDirect3DViewport2, Flags); - hr = IDirect3DDevice3_NextViewport((IDirect3DDevice3 *)&This->IDirect3DDevice3_vtbl, + hr = IDirect3DDevice3_NextViewport(&This->IDirect3DDevice3_iface, &vp->IDirect3DViewport3_iface, &res, Flags); *lplpDirect3DViewport2 = (IDirect3DViewport2 *)res; return hr; @@ -943,7 +952,7 @@ static HRESULT WINAPI IDirect3DDeviceImpl_1_NextViewport(IDirect3DDevice *iface, IDirect3DViewport *Viewport, IDirect3DViewport **lplpDirect3DViewport, DWORD Flags) { - IDirect3DDeviceImpl *This = device_from_device1(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice(iface); IDirect3DViewportImpl *vp = unsafe_impl_from_IDirect3DViewport(Viewport); IDirect3DViewport3 *res; HRESULT hr; @@ -951,7 +960,7 @@ TRACE("iface %p, viewport %p, next %p, flags %#x.\n", iface, Viewport, lplpDirect3DViewport, Flags); - hr = IDirect3DDevice3_NextViewport((IDirect3DDevice3 *)&This->IDirect3DDevice3_vtbl, + hr = IDirect3DDevice3_NextViewport(&This->IDirect3DDevice3_iface, &vp->IDirect3DViewport3_iface, &res, Flags); *lplpDirect3DViewport = (IDirect3DViewport *)res; return hr; @@ -1041,7 +1050,7 @@ LPD3DENUMPIXELFORMATSCALLBACK Callback, void *Arg) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); HRESULT hr; WINED3DDISPLAYMODE mode; unsigned int i; @@ -1170,11 +1179,11 @@ static HRESULT WINAPI IDirect3DDeviceImpl_3_EnumTextureFormats(IDirect3DDevice3 *iface, LPD3DENUMPIXELFORMATSCALLBACK Callback, void *Arg) { - IDirect3DDeviceImpl *This = device_from_device3(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); TRACE("iface %p, callback %p, context %p.\n", iface, Callback, Arg); - return IDirect3DDevice7_EnumTextureFormats((IDirect3DDevice7 *)This, Callback, Arg); + return IDirect3DDevice7_EnumTextureFormats(&This->IDirect3DDevice7_iface, Callback, Arg); } /***************************************************************************** @@ -1192,7 +1201,7 @@ LPD3DENUMTEXTUREFORMATSCALLBACK Callback, void *Arg) { - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); HRESULT hr; unsigned int i; WINED3DDISPLAYMODE mode; @@ -1264,11 +1273,11 @@ static HRESULT WINAPI IDirect3DDeviceImpl_1_EnumTextureFormats(IDirect3DDevice *iface, LPD3DENUMTEXTUREFORMATSCALLBACK Callback, void *Arg) { - IDirect3DDeviceImpl *This = device_from_device1(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice(iface); TRACE("iface %p, callback %p, context %p.\n", iface, Callback, Arg); - return IDirect3DDevice2_EnumTextureFormats((IDirect3DDevice2 *)&This->IDirect3DDevice2_vtbl, Callback, Arg); + return IDirect3DDevice2_EnumTextureFormats(&This->IDirect3DDevice2_iface, Callback, Arg); } /***************************************************************************** @@ -1290,7 +1299,7 @@ static HRESULT WINAPI IDirect3DDeviceImpl_1_CreateMatrix(IDirect3DDevice *iface, D3DMATRIXHANDLE *D3DMatHandle) { - IDirect3DDeviceImpl *This = device_from_device1(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice(iface); D3DMATRIX *Matrix; DWORD h; @@ -1348,7 +1357,7 @@ D3DMATRIXHANDLE D3DMatHandle, D3DMATRIX *D3DMatrix) { - IDirect3DDeviceImpl *This = device_from_device1(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice(iface); D3DMATRIX *m; TRACE("iface %p, matrix_handle %#x, matrix %p.\n", iface, D3DMatHandle, D3DMatrix); @@ -1404,7 +1413,7 @@ D3DMATRIXHANDLE D3DMatHandle, D3DMATRIX *D3DMatrix) { - IDirect3DDeviceImpl *This = device_from_device1(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice(iface); D3DMATRIX *m; TRACE("iface %p, matrix_handle %#x, matrix %p.\n", iface, D3DMatHandle, D3DMatrix); @@ -1446,7 +1455,7 @@ IDirect3DDeviceImpl_1_DeleteMatrix(IDirect3DDevice *iface, D3DMATRIXHANDLE D3DMatHandle) { - IDirect3DDeviceImpl *This = device_from_device1(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice(iface); D3DMATRIX *m; TRACE("iface %p, matrix_handle %#x.\n", iface, D3DMatHandle); @@ -1485,7 +1494,7 @@ static HRESULT IDirect3DDeviceImpl_7_BeginScene(IDirect3DDevice7 *iface) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); HRESULT hr; TRACE("iface %p.\n", iface); @@ -1518,23 +1527,26 @@ static HRESULT WINAPI IDirect3DDeviceImpl_3_BeginScene(IDirect3DDevice3 *iface) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); TRACE("iface %p.\n", iface); - return IDirect3DDevice7_BeginScene((IDirect3DDevice7 *)device_from_device3(iface)); + return IDirect3DDevice7_BeginScene(&This->IDirect3DDevice7_iface); } static HRESULT WINAPI IDirect3DDeviceImpl_2_BeginScene(IDirect3DDevice2 *iface) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); TRACE("iface %p.\n", iface); - return IDirect3DDevice7_BeginScene((IDirect3DDevice7 *)device_from_device2(iface)); + return IDirect3DDevice7_BeginScene(&This->IDirect3DDevice7_iface); } static HRESULT WINAPI IDirect3DDeviceImpl_1_BeginScene(IDirect3DDevice *iface) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice(iface); TRACE("iface %p.\n", iface); - return IDirect3DDevice7_BeginScene((IDirect3DDevice7 *)device_from_device1(iface)); + return IDirect3DDevice7_BeginScene(&This->IDirect3DDevice7_iface); } /***************************************************************************** @@ -1554,7 +1566,7 @@ static HRESULT IDirect3DDeviceImpl_7_EndScene(IDirect3DDevice7 *iface) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); HRESULT hr; TRACE("iface %p.\n", iface); @@ -1587,23 +1599,26 @@ static HRESULT WINAPI DECLSPEC_HOTPATCH IDirect3DDeviceImpl_3_EndScene(IDirect3DDevice3 *iface) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); TRACE("iface %p.\n", iface); - return IDirect3DDevice7_EndScene((IDirect3DDevice7 *)device_from_device3(iface)); + return IDirect3DDevice7_EndScene(&This->IDirect3DDevice7_iface); } static HRESULT WINAPI DECLSPEC_HOTPATCH IDirect3DDeviceImpl_2_EndScene(IDirect3DDevice2 *iface) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); TRACE("iface %p.\n", iface); - return IDirect3DDevice7_EndScene((IDirect3DDevice7 *)device_from_device2(iface)); + return IDirect3DDevice7_EndScene(&This->IDirect3DDevice7_iface); } static HRESULT WINAPI DECLSPEC_HOTPATCH IDirect3DDeviceImpl_1_EndScene(IDirect3DDevice *iface) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice(iface); TRACE("iface %p.\n", iface); - return IDirect3DDevice7_EndScene((IDirect3DDevice7 *)device_from_device1(iface)); + return IDirect3DDevice7_EndScene(&This->IDirect3DDevice7_iface); } /***************************************************************************** @@ -1624,7 +1639,7 @@ IDirect3DDeviceImpl_7_GetDirect3D(IDirect3DDevice7 *iface, IDirect3D7 **Direct3D7) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); TRACE("iface %p, d3d %p.\n", iface, Direct3D7); @@ -1641,7 +1656,7 @@ static HRESULT WINAPI IDirect3DDeviceImpl_3_GetDirect3D(IDirect3DDevice3 *iface, IDirect3D3 **Direct3D3) { - IDirect3DDeviceImpl *This = device_from_device3(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); TRACE("iface %p, d3d %p.\n", iface, Direct3D3); @@ -1657,7 +1672,7 @@ static HRESULT WINAPI IDirect3DDeviceImpl_2_GetDirect3D(IDirect3DDevice2 *iface, IDirect3D2 **Direct3D2) { - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); TRACE("iface %p, d3d %p.\n", iface, Direct3D2); @@ -1673,7 +1688,7 @@ static HRESULT WINAPI IDirect3DDeviceImpl_1_GetDirect3D(IDirect3DDevice *iface, IDirect3D **Direct3D) { - IDirect3DDeviceImpl *This = device_from_device1(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice(iface); TRACE("iface %p, d3d %p.\n", iface, Direct3D); @@ -1706,7 +1721,7 @@ IDirect3DDeviceImpl_3_SetCurrentViewport(IDirect3DDevice3 *iface, IDirect3DViewport3 *Direct3DViewport3) { - IDirect3DDeviceImpl *This = device_from_device3(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); IDirect3DViewportImpl *vp = unsafe_impl_from_IDirect3DViewport3(Direct3DViewport3); TRACE("iface %p, viewport %p.\n", iface, Direct3DViewport3); @@ -1748,12 +1763,12 @@ static HRESULT WINAPI IDirect3DDeviceImpl_2_SetCurrentViewport(IDirect3DDevice2 *iface, IDirect3DViewport2 *Direct3DViewport2) { - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); IDirect3DViewportImpl *vp = unsafe_impl_from_IDirect3DViewport2(Direct3DViewport2); TRACE("iface %p, viewport %p.\n", iface, Direct3DViewport2); - return IDirect3DDevice3_SetCurrentViewport((IDirect3DDevice3 *)&This->IDirect3DDevice3_vtbl, + return IDirect3DDevice3_SetCurrentViewport(&This->IDirect3DDevice3_iface, &vp->IDirect3DViewport3_iface); } @@ -1776,7 +1791,7 @@ IDirect3DDeviceImpl_3_GetCurrentViewport(IDirect3DDevice3 *iface, IDirect3DViewport3 **Direct3DViewport3) { - IDirect3DDeviceImpl *This = device_from_device3(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); TRACE("iface %p, viewport %p.\n", iface, Direct3DViewport3); @@ -1798,12 +1813,12 @@ static HRESULT WINAPI IDirect3DDeviceImpl_2_GetCurrentViewport(IDirect3DDevice2 *iface, IDirect3DViewport2 **Direct3DViewport2) { - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); HRESULT hr; TRACE("iface %p, viewport %p.\n", iface, Direct3DViewport2); - hr = IDirect3DDevice3_GetCurrentViewport((IDirect3DDevice3 *)&This->IDirect3DDevice3_vtbl, + hr = IDirect3DDevice3_GetCurrentViewport(&This->IDirect3DDevice3_iface, (IDirect3DViewport3 **)Direct3DViewport2); if(hr != D3D_OK) return hr; return D3D_OK; @@ -1858,7 +1873,7 @@ IDirectDrawSurface7 *NewTarget, DWORD Flags) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); IDirectDrawSurfaceImpl *Target = unsafe_impl_from_IDirectDrawSurface7(NewTarget); TRACE("iface %p, target %p, flags %#x.\n", iface, NewTarget, Flags); @@ -1895,7 +1910,7 @@ static HRESULT WINAPI IDirect3DDeviceImpl_3_SetRenderTarget(IDirect3DDevice3 *iface, IDirectDrawSurface4 *NewRenderTarget, DWORD Flags) { - IDirect3DDeviceImpl *This = device_from_device3(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); IDirectDrawSurfaceImpl *Target = unsafe_impl_from_IDirectDrawSurface4(NewRenderTarget); TRACE("iface %p, target %p, flags %#x.\n", iface, NewRenderTarget, Flags); @@ -1908,7 +1923,7 @@ static HRESULT WINAPI IDirect3DDeviceImpl_2_SetRenderTarget(IDirect3DDevice2 *iface, IDirectDrawSurface *NewRenderTarget, DWORD Flags) { - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); IDirectDrawSurfaceImpl *Target = unsafe_impl_from_IDirectDrawSurface(NewRenderTarget); TRACE("iface %p, target %p, flags %#x.\n", iface, NewRenderTarget, Flags); @@ -1939,7 +1954,7 @@ IDirect3DDeviceImpl_7_GetRenderTarget(IDirect3DDevice7 *iface, IDirectDrawSurface7 **RenderTarget) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); TRACE("iface %p, target %p.\n", iface, RenderTarget); @@ -1957,7 +1972,7 @@ static HRESULT WINAPI IDirect3DDeviceImpl_3_GetRenderTarget(IDirect3DDevice3 *iface, IDirectDrawSurface4 **RenderTarget) { - IDirect3DDeviceImpl *This = device_from_device3(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); IDirectDrawSurface7 *RenderTarget7; IDirectDrawSurfaceImpl *RenderTargetImpl; HRESULT hr; @@ -1967,7 +1982,7 @@ if(!RenderTarget) return DDERR_INVALIDPARAMS; - hr = IDirect3DDevice7_GetRenderTarget((IDirect3DDevice7 *)This, &RenderTarget7); + hr = IDirect3DDevice7_GetRenderTarget(&This->IDirect3DDevice7_iface, &RenderTarget7); if(hr != D3D_OK) return hr; RenderTargetImpl = impl_from_IDirectDrawSurface7(RenderTarget7); *RenderTarget = &RenderTargetImpl->IDirectDrawSurface4_iface; @@ -1979,7 +1994,7 @@ static HRESULT WINAPI IDirect3DDeviceImpl_2_GetRenderTarget(IDirect3DDevice2 *iface, IDirectDrawSurface **RenderTarget) { - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); IDirectDrawSurface7 *RenderTarget7; IDirectDrawSurfaceImpl *RenderTargetImpl; HRESULT hr; @@ -1989,7 +2004,7 @@ if(!RenderTarget) return DDERR_INVALIDPARAMS; - hr = IDirect3DDevice7_GetRenderTarget((IDirect3DDevice7 *)This, &RenderTarget7); + hr = IDirect3DDevice7_GetRenderTarget(&This->IDirect3DDevice7_iface, &RenderTarget7); if(hr != D3D_OK) return hr; RenderTargetImpl = impl_from_IDirectDrawSurface7(RenderTarget7); *RenderTarget = &RenderTargetImpl->IDirectDrawSurface_iface; @@ -2022,7 +2037,7 @@ DWORD VertexTypeDesc, DWORD Flags) { - IDirect3DDeviceImpl *This = device_from_device3(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); TRACE("iface %p, primitive_type %#x, FVF %#x, flags %#x.\n", iface, PrimitiveType, VertexTypeDesc, Flags); @@ -2042,7 +2057,7 @@ D3DVERTEXTYPE dwVertexTypeDesc, DWORD dwFlags) { DWORD FVF; - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); TRACE("iface %p, primitive_type %#x, vertex_type %#x, flags %#x.\n", iface, d3dpt, dwVertexTypeDesc, dwFlags); @@ -2057,7 +2072,7 @@ return DDERR_INVALIDPARAMS; /* Should never happen */ }; - return IDirect3DDevice3_Begin((IDirect3DDevice3 *)&This->IDirect3DDevice3_vtbl, d3dpt, FVF, dwFlags); + return IDirect3DDevice3_Begin(&This->IDirect3DDevice3_iface, d3dpt, FVF, dwFlags); } /***************************************************************************** @@ -2099,7 +2114,7 @@ void *lpvVertices, DWORD dwNumVertices, DWORD dwFlags) { DWORD FVF; - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); TRACE("iface %p, primitive_type %#x, vertex_type %#x, vertices %p, vertex_count %u, flags %#x stub!\n", iface, d3dptPrimitiveType, d3dvtVertexType, lpvVertices, dwNumVertices, dwFlags); @@ -2114,7 +2129,7 @@ return DDERR_INVALIDPARAMS; /* Should never happen */ }; - return IDirect3DDevice3_BeginIndexed((IDirect3DDevice3 *)&This->IDirect3DDevice3_vtbl, + return IDirect3DDevice3_BeginIndexed(&This->IDirect3DDevice3_iface, d3dptPrimitiveType, FVF, lpvVertices, dwNumVertices, dwFlags); } @@ -2139,7 +2154,7 @@ IDirect3DDeviceImpl_3_Vertex(IDirect3DDevice3 *iface, void *Vertex) { - IDirect3DDeviceImpl *This = device_from_device3(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); TRACE("iface %p, vertex %p.\n", iface, Vertex); @@ -2168,11 +2183,11 @@ static HRESULT WINAPI IDirect3DDeviceImpl_2_Vertex(IDirect3DDevice2 *iface, void *lpVertexType) { - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); TRACE("iface %p, vertex %p.\n", iface, lpVertexType); - return IDirect3DDevice3_Vertex((IDirect3DDevice3 *)&This->IDirect3DDevice3_vtbl, lpVertexType); + return IDirect3DDevice3_Vertex(&This->IDirect3DDevice3_iface, lpVertexType); } /***************************************************************************** @@ -2199,11 +2214,11 @@ static HRESULT WINAPI IDirect3DDeviceImpl_2_Index(IDirect3DDevice2 *iface, WORD wVertexIndex) { - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); TRACE("iface %p, index %#x.\n", iface, wVertexIndex); - return IDirect3DDevice3_Index((IDirect3DDevice3 *)&This->IDirect3DDevice3_vtbl, wVertexIndex); + return IDirect3DDevice3_Index(&This->IDirect3DDevice3_iface, wVertexIndex); } /***************************************************************************** @@ -2228,21 +2243,21 @@ IDirect3DDeviceImpl_3_End(IDirect3DDevice3 *iface, DWORD Flags) { - IDirect3DDeviceImpl *This = device_from_device3(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); TRACE("iface %p, flags %#x.\n", iface, Flags); - return IDirect3DDevice7_DrawPrimitive((IDirect3DDevice7 *)This, This->primitive_type, + return IDirect3DDevice7_DrawPrimitive(&This->IDirect3DDevice7_iface, This->primitive_type, This->vertex_type, This->vertex_buffer, This->nb_vertices, This->render_flags); } static HRESULT WINAPI IDirect3DDeviceImpl_2_End(IDirect3DDevice2 *iface, DWORD dwFlags) { - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); TRACE("iface %p, flags %#x.\n", iface, dwFlags); - return IDirect3DDevice3_End((IDirect3DDevice3 *)&This->IDirect3DDevice3_vtbl, dwFlags); + return IDirect3DDevice3_End(&This->IDirect3DDevice3_iface, dwFlags); } /***************************************************************************** @@ -2265,7 +2280,7 @@ static HRESULT IDirect3DDeviceImpl_7_GetRenderState(IDirect3DDevice7 *iface, D3DRENDERSTATETYPE RenderStateType, DWORD *Value) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); HRESULT hr; TRACE("iface %p, state %#x, value %p.\n", iface, RenderStateType, Value); @@ -2426,7 +2441,7 @@ D3DRENDERSTATETYPE dwRenderStateType, DWORD *lpdwRenderState) { - IDirect3DDeviceImpl *This = device_from_device3(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); HRESULT hr; TRACE("iface %p, state %#x, value %p.\n", iface, dwRenderStateType, lpdwRenderState); @@ -2532,18 +2547,18 @@ } default: - return IDirect3DDevice7_GetRenderState((IDirect3DDevice7 *)This, dwRenderStateType, lpdwRenderState); + return IDirect3DDevice7_GetRenderState(&This->IDirect3DDevice7_iface, dwRenderStateType, lpdwRenderState); } } static HRESULT WINAPI IDirect3DDeviceImpl_2_GetRenderState(IDirect3DDevice2 *iface, D3DRENDERSTATETYPE dwRenderStateType, DWORD *lpdwRenderState) { - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); TRACE("iface %p, state %#x, value %p.\n", iface, dwRenderStateType, lpdwRenderState); - return IDirect3DDevice3_GetRenderState((IDirect3DDevice3 *)&This->IDirect3DDevice3_vtbl, + return IDirect3DDevice3_GetRenderState(&This->IDirect3DDevice3_iface, dwRenderStateType, lpdwRenderState); } @@ -2569,7 +2584,7 @@ D3DRENDERSTATETYPE RenderStateType, DWORD Value) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); HRESULT hr; TRACE("iface %p, state %#x, value %#x.\n", iface, RenderStateType, Value); @@ -2758,7 +2773,7 @@ unless some broken game will be found that cares. */ HRESULT hr; - IDirect3DDeviceImpl *This = device_from_device3(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); TRACE("iface %p, state %#x, value %#x.\n", iface, RenderStateType, Value); @@ -2900,7 +2915,7 @@ } default: - hr = IDirect3DDevice7_SetRenderState((IDirect3DDevice7 *)This, RenderStateType, Value); + hr = IDirect3DDevice7_SetRenderState(&This->IDirect3DDevice7_iface, RenderStateType, Value); break; } @@ -2912,11 +2927,11 @@ static HRESULT WINAPI IDirect3DDeviceImpl_2_SetRenderState(IDirect3DDevice2 *iface, D3DRENDERSTATETYPE RenderStateType, DWORD Value) { - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); TRACE("iface %p, state %#x, value %#x.\n", iface, RenderStateType, Value); - return IDirect3DDevice3_SetRenderState((IDirect3DDevice3 *)&This->IDirect3DDevice3_vtbl, RenderStateType, Value); + return IDirect3DDevice3_SetRenderState(&This->IDirect3DDevice3_iface, RenderStateType, Value); } /***************************************************************************** @@ -2942,7 +2957,7 @@ D3DLIGHTSTATETYPE LightStateType, DWORD Value) { - IDirect3DDeviceImpl *This = device_from_device3(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); HRESULT hr; TRACE("iface %p, state %#x, value %#x.\n", iface, LightStateType, Value); @@ -3015,7 +3030,7 @@ return DDERR_INVALIDPARAMS; } - hr = IDirect3DDevice7_SetRenderState((IDirect3DDevice7 *)This, rs, Value); + hr = IDirect3DDevice7_SetRenderState(&This->IDirect3DDevice7_iface, rs, Value); LeaveCriticalSection(&ddraw_cs); return hr; } @@ -3027,11 +3042,11 @@ static HRESULT WINAPI IDirect3DDeviceImpl_2_SetLightState(IDirect3DDevice2 *iface, D3DLIGHTSTATETYPE LightStateType, DWORD Value) { - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); TRACE("iface %p, state %#x, value %#x.\n", iface, LightStateType, Value); - return IDirect3DDevice3_SetLightState((IDirect3DDevice3 *)&This->IDirect3DDevice3_vtbl, LightStateType, Value); + return IDirect3DDevice3_SetLightState(&This->IDirect3DDevice3_iface, LightStateType, Value); } /***************************************************************************** @@ -3057,7 +3072,7 @@ D3DLIGHTSTATETYPE LightStateType, DWORD *Value) { - IDirect3DDeviceImpl *This = device_from_device3(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); HRESULT hr; TRACE("iface %p, state %#x, value %p.\n", iface, LightStateType, Value); @@ -3109,7 +3124,7 @@ return DDERR_INVALIDPARAMS; } - hr = IDirect3DDevice7_GetRenderState((IDirect3DDevice7 *)This, rs, Value); + hr = IDirect3DDevice7_GetRenderState(&This->IDirect3DDevice7_iface, rs, Value); LeaveCriticalSection(&ddraw_cs); return hr; } @@ -3121,11 +3136,11 @@ static HRESULT WINAPI IDirect3DDeviceImpl_2_GetLightState(IDirect3DDevice2 *iface, D3DLIGHTSTATETYPE LightStateType, DWORD *Value) { - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); TRACE("iface %p, state %#x, value %p.\n", iface, LightStateType, Value); - return IDirect3DDevice3_GetLightState((IDirect3DDevice3 *)&This->IDirect3DDevice3_vtbl, LightStateType, Value); + return IDirect3DDevice3_GetLightState(&This->IDirect3DDevice3_iface, LightStateType, Value); } /***************************************************************************** @@ -3154,7 +3169,7 @@ D3DTRANSFORMSTATETYPE TransformStateType, D3DMATRIX *Matrix) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); D3DTRANSFORMSTATETYPE type; HRESULT hr; @@ -3205,21 +3220,21 @@ static HRESULT WINAPI IDirect3DDeviceImpl_3_SetTransform(IDirect3DDevice3 *iface, D3DTRANSFORMSTATETYPE TransformStateType, D3DMATRIX *D3DMatrix) { - IDirect3DDeviceImpl *This = device_from_device3(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); TRACE("iface %p, state %#x, matrix %p.\n", iface, TransformStateType, D3DMatrix); - return IDirect3DDevice7_SetTransform((IDirect3DDevice7 *)This, TransformStateType, D3DMatrix); + return IDirect3DDevice7_SetTransform(&This->IDirect3DDevice7_iface, TransformStateType, D3DMatrix); } static HRESULT WINAPI IDirect3DDeviceImpl_2_SetTransform(IDirect3DDevice2 *iface, D3DTRANSFORMSTATETYPE TransformStateType, D3DMATRIX *D3DMatrix) { - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); TRACE("iface %p, state %#x, matrix %p.\n", iface, TransformStateType, D3DMatrix); - return IDirect3DDevice7_SetTransform((IDirect3DDevice7 *)This, TransformStateType, D3DMatrix); + return IDirect3DDevice7_SetTransform(&This->IDirect3DDevice7_iface, TransformStateType, D3DMatrix); } /***************************************************************************** @@ -3244,7 +3259,7 @@ D3DTRANSFORMSTATETYPE TransformStateType, D3DMATRIX *Matrix) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); D3DTRANSFORMSTATETYPE type; HRESULT hr; @@ -3295,21 +3310,21 @@ static HRESULT WINAPI IDirect3DDeviceImpl_3_GetTransform(IDirect3DDevice3 *iface, D3DTRANSFORMSTATETYPE TransformStateType, D3DMATRIX *D3DMatrix) { - IDirect3DDeviceImpl *This = device_from_device3(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); TRACE("iface %p, state %#x, matrix %p.\n", iface, TransformStateType, D3DMatrix); - return IDirect3DDevice7_GetTransform((IDirect3DDevice7 *)This, TransformStateType, D3DMatrix); + return IDirect3DDevice7_GetTransform(&This->IDirect3DDevice7_iface, TransformStateType, D3DMatrix); } static HRESULT WINAPI IDirect3DDeviceImpl_2_GetTransform(IDirect3DDevice2 *iface, D3DTRANSFORMSTATETYPE TransformStateType, D3DMATRIX *D3DMatrix) { - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); TRACE("iface %p, state %#x, matrix %p.\n", iface, TransformStateType, D3DMatrix); - return IDirect3DDevice7_GetTransform((IDirect3DDevice7 *)This, TransformStateType, D3DMatrix); + return IDirect3DDevice7_GetTransform(&This->IDirect3DDevice7_iface, TransformStateType, D3DMatrix); } /***************************************************************************** @@ -3335,7 +3350,7 @@ D3DTRANSFORMSTATETYPE TransformStateType, D3DMATRIX *D3DMatrix) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); HRESULT hr; D3DTRANSFORMSTATETYPE type; @@ -3384,21 +3399,21 @@ static HRESULT WINAPI IDirect3DDeviceImpl_3_MultiplyTransform(IDirect3DDevice3 *iface, D3DTRANSFORMSTATETYPE TransformStateType, D3DMATRIX *D3DMatrix) { - IDirect3DDeviceImpl *This = device_from_device3(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); TRACE("iface %p, state %#x, matrix %p.\n", iface, TransformStateType, D3DMatrix); - return IDirect3DDevice7_MultiplyTransform((IDirect3DDevice7 *)This, TransformStateType, D3DMatrix); + return IDirect3DDevice7_MultiplyTransform(&This->IDirect3DDevice7_iface, TransformStateType, D3DMatrix); } static HRESULT WINAPI IDirect3DDeviceImpl_2_MultiplyTransform(IDirect3DDevice2 *iface, D3DTRANSFORMSTATETYPE TransformStateType, D3DMATRIX *D3DMatrix) { - IDirect3DDeviceImpl *This = device_from_device2(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); TRACE("iface %p, state %#x, matrix %p.\n", iface, TransformStateType, D3DMatrix); - return IDirect3DDevice7_MultiplyTransform((IDirect3DDevice7 *)This, TransformStateType, D3DMatrix); + return IDirect3DDevice7_MultiplyTransform(&This->IDirect3DDevice7_iface, TransformStateType, D3DMatrix); } /***************************************************************************** @@ -3430,7 +3445,7 @@ DWORD VertexCount, DWORD Flags) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); UINT stride; HRESULT hr; @@ -3492,10 +3507,11 @@ D3DPRIMITIVETYPE PrimitiveType, DWORD VertexType, void *Vertices, DWORD VertexCount, DWORD Flags) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); TRACE("iface %p, primitive_type %#x, FVF %#x, vertices %p, vertex_count %u, flags %#x.\n", iface, PrimitiveType, VertexType, Vertices, VertexCount, Flags); - return IDirect3DDevice7_DrawPrimitive((IDirect3DDevice7 *)device_from_device3(iface), + return IDirect3DDevice7_DrawPrimitive(&This->IDirect3DDevice7_iface, PrimitiveType, VertexType, Vertices, VertexCount, Flags); } @@ -3503,6 +3519,7 @@ D3DPRIMITIVETYPE PrimitiveType, D3DVERTEXTYPE VertexType, void *Vertices, DWORD VertexCount, DWORD Flags) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); DWORD FVF; TRACE("iface %p, primitive_type %#x, vertex_type %#x, vertices %p, vertex_count %u, flags %#x.\n", @@ -3518,7 +3535,7 @@ return DDERR_INVALIDPARAMS; /* Should never happen */ } - return IDirect3DDevice7_DrawPrimitive((IDirect3DDevice7 *)device_from_device2(iface), + return IDirect3DDevice7_DrawPrimitive(&This->IDirect3DDevice7_iface, PrimitiveType, FVF, Vertices, VertexCount, Flags); } @@ -3556,7 +3573,7 @@ DWORD IndexCount, DWORD Flags) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); HRESULT hr; TRACE("iface %p, primitive_type %#x, FVF %#x, vertices %p, vertex_count %u, indices %p, index_count %u, flags %#x.\n", @@ -3616,10 +3633,11 @@ D3DPRIMITIVETYPE PrimitiveType, DWORD VertexType, void *Vertices, DWORD VertexCount, WORD *Indices, DWORD IndexCount, DWORD Flags) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); TRACE("iface %p, primitive_type %#x, FVF %#x, vertices %p, vertex_count %u, indices %p, index_count %u, flags %#x.\n", iface, PrimitiveType, VertexType, Vertices, VertexCount, Indices, IndexCount, Flags); - return IDirect3DDevice7_DrawIndexedPrimitive((IDirect3DDevice7 *)device_from_device3(iface), + return IDirect3DDevice7_DrawIndexedPrimitive(&This->IDirect3DDevice7_iface, PrimitiveType, VertexType, Vertices, VertexCount, Indices, IndexCount, Flags); } @@ -3627,6 +3645,7 @@ D3DPRIMITIVETYPE PrimitiveType, D3DVERTEXTYPE VertexType, void *Vertices, DWORD VertexCount, WORD *Indices, DWORD IndexCount, DWORD Flags) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); DWORD FVF; TRACE("iface %p, primitive_type %#x, vertex_type %#x, vertices %p, vertex_count %u, indices %p, index_count %u, flags %#x.\n", @@ -3642,7 +3661,7 @@ return DDERR_INVALIDPARAMS; /* Should never happen */ } - return IDirect3DDevice7_DrawIndexedPrimitive((IDirect3DDevice7 *)device_from_device2(iface), + return IDirect3DDevice7_DrawIndexedPrimitive(&This->IDirect3DDevice7_iface, PrimitiveType, FVF, Vertices, VertexCount, Indices, IndexCount, Flags); } @@ -3678,17 +3697,19 @@ static HRESULT WINAPI IDirect3DDeviceImpl_3_SetClipStatus(IDirect3DDevice3 *iface, D3DCLIPSTATUS *ClipStatus) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); TRACE("iface %p, clip_status %p.\n", iface, ClipStatus); - return IDirect3DDevice7_SetClipStatus((IDirect3DDevice7 *)device_from_device3(iface), ClipStatus); + return IDirect3DDevice7_SetClipStatus(&This->IDirect3DDevice7_iface, ClipStatus); } static HRESULT WINAPI IDirect3DDeviceImpl_2_SetClipStatus(IDirect3DDevice2 *iface, D3DCLIPSTATUS *ClipStatus) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); TRACE("iface %p, clip_status %p.\n", iface, ClipStatus); - return IDirect3DDevice7_SetClipStatus((IDirect3DDevice7 *)device_from_device2(iface), ClipStatus); + return IDirect3DDevice7_SetClipStatus(&This->IDirect3DDevice7_iface, ClipStatus); } /***************************************************************************** @@ -3717,17 +3738,19 @@ static HRESULT WINAPI IDirect3DDeviceImpl_3_GetClipStatus(IDirect3DDevice3 *iface, D3DCLIPSTATUS *ClipStatus) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); TRACE("iface %p, clip_status %p.\n", iface, ClipStatus); - return IDirect3DDevice7_GetClipStatus((IDirect3DDevice7 *)device_from_device3(iface), ClipStatus); + return IDirect3DDevice7_GetClipStatus(&This->IDirect3DDevice7_iface, ClipStatus); } static HRESULT WINAPI IDirect3DDeviceImpl_2_GetClipStatus(IDirect3DDevice2 *iface, D3DCLIPSTATUS *ClipStatus) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice2(iface); TRACE("iface %p, clip_status %p.\n", iface, ClipStatus); - return IDirect3DDevice7_GetClipStatus((IDirect3DDevice7 *)device_from_device2(iface), ClipStatus); + return IDirect3DDevice7_GetClipStatus(&This->IDirect3DDevice7_iface, ClipStatus); } /***************************************************************************** @@ -3759,7 +3782,7 @@ DWORD VertexCount, DWORD Flags) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); WineDirect3DVertexStridedData WineD3DStrided; DWORD i; HRESULT hr; @@ -3864,10 +3887,12 @@ D3DPRIMITIVETYPE PrimitiveType, DWORD VertexType, D3DDRAWPRIMITIVESTRIDEDDATA *D3DDrawPrimStrideData, DWORD VertexCount, DWORD Flags) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); + TRACE("iface %p, primitive_type %#x, FVF %#x, strided_data %p, vertex_count %u, flags %#x.\n", iface, PrimitiveType, VertexType, D3DDrawPrimStrideData, VertexCount, Flags); - return IDirect3DDevice7_DrawPrimitiveStrided((IDirect3DDevice7 *)device_from_device3(iface), + return IDirect3DDevice7_DrawPrimitiveStrided(&This->IDirect3DDevice7_iface, PrimitiveType, VertexType, D3DDrawPrimStrideData, VertexCount, Flags); } @@ -3898,7 +3923,7 @@ DWORD IndexCount, DWORD Flags) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); WineDirect3DVertexStridedData WineD3DStrided; DWORD i; HRESULT hr; @@ -4009,10 +4034,12 @@ D3DDRAWPRIMITIVESTRIDEDDATA *D3DDrawPrimStrideData, DWORD VertexCount, WORD *Indices, DWORD IndexCount, DWORD Flags) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); + TRACE("iface %p, primitive_type %#x, FVF %#x, strided_data %p, vertex_count %u, indices %p, index_count %u, flags %#x.\n", iface, PrimitiveType, VertexType, D3DDrawPrimStrideData, VertexCount, Indices, IndexCount, Flags); - return IDirect3DDevice7_DrawIndexedPrimitiveStrided((IDirect3DDevice7 *)device_from_device3(iface), + return IDirect3DDevice7_DrawIndexedPrimitiveStrided(&This->IDirect3DDevice7_iface, PrimitiveType, VertexType, D3DDrawPrimStrideData, VertexCount, Indices, IndexCount, Flags); } @@ -4043,7 +4070,7 @@ DWORD NumVertices, DWORD Flags) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); IDirect3DVertexBufferImpl *vb = unsafe_impl_from_IDirect3DVertexBuffer7(D3DVertexBuf); HRESULT hr; DWORD stride; @@ -4117,12 +4144,13 @@ D3DPRIMITIVETYPE PrimitiveType, IDirect3DVertexBuffer *D3DVertexBuf, DWORD StartVertex, DWORD NumVertices, DWORD Flags) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); IDirect3DVertexBufferImpl *vb = unsafe_impl_from_IDirect3DVertexBuffer(D3DVertexBuf); TRACE("iface %p, primitive_type %#x, vb %p, start_vertex %u, vertex_count %u, flags %#x.\n", iface, PrimitiveType, D3DVertexBuf, StartVertex, NumVertices, Flags); - return IDirect3DDevice7_DrawPrimitiveVB((IDirect3DDevice7 *)device_from_device3(iface), + return IDirect3DDevice7_DrawPrimitiveVB(&This->IDirect3DDevice7_iface, PrimitiveType, &vb->IDirect3DVertexBuffer7_iface, StartVertex, NumVertices, Flags); } @@ -4154,7 +4182,7 @@ DWORD IndexCount, DWORD Flags) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); IDirect3DVertexBufferImpl *vb = unsafe_impl_from_IDirect3DVertexBuffer7(D3DVertexBuf); DWORD stride = get_flexible_vertex_size(vb->fvf); struct wined3d_resource *wined3d_resource; @@ -4279,12 +4307,13 @@ D3DPRIMITIVETYPE PrimitiveType, IDirect3DVertexBuffer *D3DVertexBuf, WORD *Indices, DWORD IndexCount, DWORD Flags) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); IDirect3DVertexBufferImpl *vb = unsafe_impl_from_IDirect3DVertexBuffer(D3DVertexBuf); TRACE("iface %p, primitive_type %#x, vb %p, indices %p, index_count %u, flags %#x.\n", iface, PrimitiveType, D3DVertexBuf, Indices, IndexCount, Flags); - return IDirect3DDevice7_DrawIndexedPrimitiveVB((IDirect3DDevice7 *)device_from_device3(iface), + return IDirect3DDevice7_DrawIndexedPrimitiveVB(&This->IDirect3DDevice7_iface, PrimitiveType, &vb->IDirect3DVertexBuffer7_iface, 0, IndexCount, Indices, IndexCount, Flags); } @@ -4403,10 +4432,12 @@ static HRESULT WINAPI IDirect3DDeviceImpl_3_ComputeSphereVisibility(IDirect3DDevice3 *iface, D3DVECTOR *Centers, D3DVALUE *Radii, DWORD NumSpheres, DWORD Flags, DWORD *ReturnValues) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); + TRACE("iface %p, centers %p, radii %p, sphere_count %u, flags %#x, return_values %p.\n", iface, Centers, Radii, NumSpheres, Flags, ReturnValues); - return IDirect3DDevice7_ComputeSphereVisibility((IDirect3DDevice7 *)device_from_device3(iface), + return IDirect3DDevice7_ComputeSphereVisibility(&This->IDirect3DDevice7_iface, Centers, Radii, NumSpheres, Flags, ReturnValues); } @@ -4434,7 +4465,7 @@ DWORD Stage, IDirectDrawSurface7 **Texture) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); struct wined3d_texture *wined3d_texture; HRESULT hr; @@ -4488,13 +4519,14 @@ static HRESULT WINAPI IDirect3DDeviceImpl_3_GetTexture(IDirect3DDevice3 *iface, DWORD Stage, IDirect3DTexture2 **Texture2) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); HRESULT ret; IDirectDrawSurface7 *ret_val; IDirectDrawSurfaceImpl *ret_val_impl; TRACE("iface %p, stage %u, texture %p.\n", iface, Stage, Texture2); - ret = IDirect3DDevice7_GetTexture((IDirect3DDevice7 *)device_from_device3(iface), Stage, &ret_val); + ret = IDirect3DDevice7_GetTexture(&This->IDirect3DDevice7_iface, Stage, &ret_val); ret_val_impl = unsafe_impl_from_IDirectDrawSurface7(ret_val); *Texture2 = ret_val_impl ? &ret_val_impl->IDirect3DTexture2_iface : NULL; @@ -4525,7 +4557,7 @@ DWORD Stage, IDirectDrawSurface7 *Texture) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); IDirectDrawSurfaceImpl *surf = unsafe_impl_from_IDirectDrawSurface7(Texture); HRESULT hr; @@ -4567,7 +4599,7 @@ DWORD Stage, IDirect3DTexture2 *Texture2) { - IDirect3DDeviceImpl *This = device_from_device3(iface); + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); IDirectDrawSurfaceImpl *tex = unsafe_impl_from_IDirect3DTexture2(Texture2); DWORD texmapblend; HRESULT hr; @@ -4579,7 +4611,7 @@ if (This->legacyTextureBlending) IDirect3DDevice3_GetRenderState(iface, D3DRENDERSTATE_TEXTUREMAPBLEND, &texmapblend); - hr = IDirect3DDevice7_SetTexture((IDirect3DDevice7 *)This, Stage, &tex->IDirectDrawSurface7_iface); + hr = IDirect3DDevice7_SetTexture(&This->IDirect3DDevice7_iface, Stage, &tex->IDirectDrawSurface7_iface); if (This->legacyTextureBlending && texmapblend == D3DTBLEND_MODULATE) { @@ -4678,7 +4710,7 @@ D3DTEXTURESTAGESTATETYPE TexStageStateType, DWORD *State) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); HRESULT hr; const struct tss_lookup *l; @@ -4779,10 +4811,12 @@ static HRESULT WINAPI IDirect3DDeviceImpl_3_GetTextureStageState(IDirect3DDevice3 *iface, DWORD Stage, D3DTEXTURESTAGESTATETYPE TexStageStateType, DWORD *State) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); + TRACE("iface %p, stage %u, state %#x, value %p.\n", iface, Stage, TexStageStateType, State); - return IDirect3DDevice7_GetTextureStageState((IDirect3DDevice7 *)device_from_device3(iface), + return IDirect3DDevice7_GetTextureStageState(&This->IDirect3DDevice7_iface, Stage, TexStageStateType, State); } @@ -4810,7 +4844,7 @@ D3DTEXTURESTAGESTATETYPE TexStageStateType, DWORD State) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); const struct tss_lookup *l; HRESULT hr; @@ -4913,10 +4947,12 @@ static HRESULT WINAPI IDirect3DDeviceImpl_3_SetTextureStageState(IDirect3DDevice3 *iface, DWORD Stage, D3DTEXTURESTAGESTATETYPE TexStageStateType, DWORD State) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); + TRACE("iface %p, stage %u, state %#x, value %#x.\n", iface, Stage, TexStageStateType, State); - return IDirect3DDevice7_SetTextureStageState((IDirect3DDevice7 *)device_from_device3(iface), + return IDirect3DDevice7_SetTextureStageState(&This->IDirect3DDevice7_iface, Stage, TexStageStateType, State); } @@ -4942,7 +4978,7 @@ IDirect3DDeviceImpl_7_ValidateDevice(IDirect3DDevice7 *iface, DWORD *NumPasses) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); HRESULT hr; TRACE("iface %p, pass_count %p.\n", iface, NumPasses); @@ -4976,9 +5012,11 @@ static HRESULT WINAPI IDirect3DDeviceImpl_3_ValidateDevice(IDirect3DDevice3 *iface, DWORD *Passes) { + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice3(iface); + TRACE("iface %p, pass_count %p.\n", iface, Passes); - return IDirect3DDevice7_ValidateDevice((IDirect3DDevice7 *)device_from_device3(iface), Passes); + return IDirect3DDevice7_ValidateDevice(&This->IDirect3DDevice7_iface, Passes); } /***************************************************************************** @@ -5011,7 +5049,7 @@ D3DVALUE Z, DWORD Stencil) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); HRESULT hr; TRACE("iface %p, count %u, rects %p, flags %#x, color 0x%08x, z %.8e, stencil %#x.\n", @@ -5075,7 +5113,7 @@ IDirect3DDeviceImpl_7_SetViewport(IDirect3DDevice7 *iface, D3DVIEWPORT7 *Data) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); HRESULT hr; TRACE("iface %p, viewport %p.\n", iface, Data); @@ -5131,7 +5169,7 @@ IDirect3DDeviceImpl_7_GetViewport(IDirect3DDevice7 *iface, D3DVIEWPORT7 *Data) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); HRESULT hr; TRACE("iface %p, viewport %p.\n", iface, Data); @@ -5188,7 +5226,7 @@ IDirect3DDeviceImpl_7_SetMaterial(IDirect3DDevice7 *iface, D3DMATERIAL7 *Mat) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); HRESULT hr; TRACE("iface %p, material %p.\n", iface, Mat); @@ -5242,7 +5280,7 @@ IDirect3DDeviceImpl_7_GetMaterial(IDirect3DDevice7 *iface, D3DMATERIAL7 *Mat) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); HRESULT hr; TRACE("iface %p, material %p.\n", iface, Mat); @@ -5296,7 +5334,7 @@ DWORD LightIndex, D3DLIGHT7 *Light) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); HRESULT hr; TRACE("iface %p, light_idx %u, light %p.\n", iface, LightIndex, Light); @@ -5350,7 +5388,7 @@ DWORD LightIndex, D3DLIGHT7 *Light) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); HRESULT rc; TRACE("iface %p, light_idx %u, light %p.\n", iface, LightIndex, Light); @@ -5402,7 +5440,7 @@ static HRESULT IDirect3DDeviceImpl_7_BeginStateBlock(IDirect3DDevice7 *iface) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); HRESULT hr; TRACE("iface %p.\n", iface); @@ -5453,7 +5491,7 @@ IDirect3DDeviceImpl_7_EndStateBlock(IDirect3DDevice7 *iface, DWORD *BlockHandle) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); struct wined3d_stateblock *wined3d_sb; HRESULT hr; DWORD h; @@ -5586,7 +5624,7 @@ IDirect3DDeviceImpl_7_ApplyStateBlock(IDirect3DDevice7 *iface, DWORD BlockHandle) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); struct wined3d_stateblock *wined3d_sb; HRESULT hr; @@ -5649,7 +5687,7 @@ IDirect3DDeviceImpl_7_CaptureStateBlock(IDirect3DDevice7 *iface, DWORD BlockHandle) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); struct wined3d_stateblock *wined3d_sb; HRESULT hr; @@ -5710,7 +5748,7 @@ IDirect3DDeviceImpl_7_DeleteStateBlock(IDirect3DDevice7 *iface, DWORD BlockHandle) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); struct wined3d_stateblock *wined3d_sb; ULONG ref; @@ -5777,7 +5815,7 @@ D3DSTATEBLOCKTYPE Type, DWORD *BlockHandle) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); struct wined3d_stateblock *wined3d_sb; HRESULT hr; DWORD h; @@ -6033,7 +6071,7 @@ RECT *SrcRect, DWORD Flags) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); IDirectDrawSurfaceImpl *dest = unsafe_impl_from_IDirectDrawSurface7(DestTex); IDirectDrawSurfaceImpl *src = unsafe_impl_from_IDirectDrawSurface7(SrcTex); POINT destpoint; @@ -6248,7 +6286,7 @@ DWORD LightIndex, BOOL Enable) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); HRESULT hr; TRACE("iface %p, light_idx %u, enabled %#x.\n", iface, LightIndex, Enable); @@ -6304,7 +6342,7 @@ DWORD LightIndex, BOOL* Enable) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); HRESULT hr; TRACE("iface %p, light_idx %u, enabled %p.\n", iface, LightIndex, Enable); @@ -6363,7 +6401,7 @@ DWORD Index, D3DVALUE* PlaneEquation) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); HRESULT hr; TRACE("iface %p, idx %u, plane %p.\n", iface, Index, PlaneEquation); @@ -6420,7 +6458,7 @@ DWORD Index, D3DVALUE* PlaneEquation) { - IDirect3DDeviceImpl *This = (IDirect3DDeviceImpl *)iface; + IDirect3DDeviceImpl *This = impl_from_IDirect3DDevice7(iface); HRESULT hr; TRACE("iface %p, idx %u, plane %p.\n", iface, Index, PlaneEquation); @@ -6732,6 +6770,34 @@ IDirect3DDeviceImpl_1_GetDirect3D }; +IDirect3DDeviceImpl *unsafe_impl_from_IDirect3DDevice7(IDirect3DDevice7 *iface) +{ + if (!iface) return NULL; + assert((iface->lpVtbl == &d3d_device7_fpu_preserve_vtbl) || (iface->lpVtbl == &d3d_device7_fpu_setup_vtbl)); + return CONTAINING_RECORD(iface, IDirect3DDeviceImpl, IDirect3DDevice7_iface); +} + +IDirect3DDeviceImpl *unsafe_impl_from_IDirect3DDevice3(IDirect3DDevice3 *iface) +{ + if (!iface) return NULL; + assert(iface->lpVtbl == &d3d_device3_vtbl); + return CONTAINING_RECORD(iface, IDirect3DDeviceImpl, IDirect3DDevice3_iface); +} + +IDirect3DDeviceImpl *unsafe_impl_from_IDirect3DDevice2(IDirect3DDevice2 *iface) +{ + if (!iface) return NULL; + assert(iface->lpVtbl == &d3d_device2_vtbl); + return CONTAINING_RECORD(iface, IDirect3DDeviceImpl, IDirect3DDevice2_iface); +} + +IDirect3DDeviceImpl *unsafe_impl_from_IDirect3DDevice(IDirect3DDevice *iface) +{ + if (!iface) return NULL; + assert(iface->lpVtbl == &d3d_device1_vtbl); + return CONTAINING_RECORD(iface, IDirect3DDeviceImpl, IDirect3DDevice_iface); +} + /***************************************************************************** * IDirect3DDeviceImpl_UpdateDepthStencil * @@ -6770,13 +6836,13 @@ HRESULT hr; if (ddraw->cooperative_level & DDSCL_FPUPRESERVE) - device->lpVtbl = &d3d_device7_fpu_preserve_vtbl; + device->IDirect3DDevice7_iface.lpVtbl = &d3d_device7_fpu_preserve_vtbl; else - device->lpVtbl = &d3d_device7_fpu_setup_vtbl; + device->IDirect3DDevice7_iface.lpVtbl = &d3d_device7_fpu_setup_vtbl; - device->IDirect3DDevice3_vtbl = &d3d_device3_vtbl; - device->IDirect3DDevice2_vtbl = &d3d_device2_vtbl; - device->IDirect3DDevice_vtbl = &d3d_device1_vtbl; + device->IDirect3DDevice3_iface.lpVtbl = &d3d_device3_vtbl; + device->IDirect3DDevice2_iface.lpVtbl = &d3d_device2_vtbl; + device->IDirect3DDevice_iface.lpVtbl = &d3d_device1_vtbl; device->ref = 1; device->ddraw = ddraw; device->target = target; diff -Nru wine1.3-1.3.30/dlls/ddraw/executebuffer.c wine1.3-1.3.31/dlls/ddraw/executebuffer.c --- wine1.3-1.3.30/dlls/ddraw/executebuffer.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ddraw/executebuffer.c 2011-10-21 18:38:36.000000000 +0000 @@ -157,7 +157,7 @@ * enable it before drawing. This overwrites any ALPHA* * render state. */ wined3d_device_set_render_state(lpDevice->wined3d_device, WINED3DRS_COLORKEYENABLE, 1); - IDirect3DDevice7_DrawIndexedPrimitive((IDirect3DDevice7 *)lpDevice, + IDirect3DDevice7_DrawIndexedPrimitive(&lpDevice->IDirect3DDevice7_iface, D3DPT_TRIANGLELIST, D3DFVF_TLVERTEX, tl_vx, 0, This->indices, count * 3, 0); } break; @@ -216,7 +216,7 @@ lpDevice->view = ci->u2.dwArg[0]; if (ci->u1.dtstTransformStateType == D3DTRANSFORMSTATE_PROJECTION) lpDevice->proj = ci->u2.dwArg[0]; - IDirect3DDevice7_SetTransform((IDirect3DDevice7 *)lpDevice, + IDirect3DDevice7_SetTransform(&lpDevice->IDirect3DDevice7_iface, ci->u1.dtstTransformStateType, m); } @@ -283,7 +283,7 @@ break; } - IDirect3DDevice7_SetRenderState((IDirect3DDevice7 *)lpDevice, rs, ci->u2.dwArg[0]); + IDirect3DDevice7_SetRenderState(&lpDevice->IDirect3DDevice7_iface, rs, ci->u2.dwArg[0]); } instr += size; @@ -292,7 +292,7 @@ case D3DOP_STATERENDER: { int i; - IDirect3DDevice2 *d3d_device2 = (IDirect3DDevice2 *)&lpDevice->IDirect3DDevice2_vtbl; + IDirect3DDevice2 *d3d_device2 = &lpDevice->IDirect3DDevice2_iface; TRACE("STATERENDER (%d)\n", count); for (i = 0; i < count; i++) { diff -Nru wine1.3-1.3.30/dlls/ddraw/light.c wine1.3-1.3.31/dlls/ddraw/light.c --- wine1.3-1.3.30/dlls/ddraw/light.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ddraw/light.c 2011-10-21 18:38:36.000000000 +0000 @@ -41,7 +41,7 @@ if (!light->active_viewport || !light->active_viewport->active_device) return; device = light->active_viewport->active_device; - IDirect3DDevice7_SetLight((IDirect3DDevice7 *)device, light->dwLightIndex, &light->light7); + IDirect3DDevice7_SetLight(&device->IDirect3DDevice7_iface, light->dwLightIndex, &light->light7); } /***************************************************************************** @@ -62,7 +62,7 @@ light_update(light); if (!(light->light.dwFlags & D3DLIGHT_ACTIVE)) { - IDirect3DDevice7_LightEnable((IDirect3DDevice7 *)device, light->dwLightIndex, TRUE); + IDirect3DDevice7_LightEnable(&device->IDirect3DDevice7_iface, light->dwLightIndex, TRUE); light->light.dwFlags |= D3DLIGHT_ACTIVE; } } @@ -86,7 +86,7 @@ /* If was not active, activate it */ if (light->light.dwFlags & D3DLIGHT_ACTIVE) { - IDirect3DDevice7_LightEnable((IDirect3DDevice7 *)device, light->dwLightIndex, FALSE); + IDirect3DDevice7_LightEnable(&device->IDirect3DDevice7_iface, light->dwLightIndex, FALSE); light->light.dwFlags &= ~D3DLIGHT_ACTIVE; } } diff -Nru wine1.3-1.3.30/dlls/ddraw/main.c wine1.3-1.3.31/dlls/ddraw/main.c --- wine1.3-1.3.30/dlls/ddraw/main.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ddraw/main.c 2011-10-21 18:38:36.000000000 +0000 @@ -296,27 +296,27 @@ * ***********************************************************************/ HRESULT WINAPI DECLSPEC_HOTPATCH -DirectDrawCreateEx(GUID *GUID, - LPVOID *DD, +DirectDrawCreateEx(GUID *guid, + LPVOID *dd, REFIID iid, IUnknown *UnkOuter) { HRESULT hr; TRACE("driver_guid %s, ddraw %p, interface_iid %s, outer_unknown %p.\n", - debugstr_guid(GUID), DD, debugstr_guid(iid), UnkOuter); + debugstr_guid(guid), dd, debugstr_guid(iid), UnkOuter); if (!IsEqualGUID(iid, &IID_IDirectDraw7)) return DDERR_INVALIDPARAMS; EnterCriticalSection(&ddraw_cs); - hr = DDRAW_Create(GUID, DD, UnkOuter, iid); + hr = DDRAW_Create(guid, dd, UnkOuter, iid); LeaveCriticalSection(&ddraw_cs); if (SUCCEEDED(hr)) { - IDirectDraw7 *ddraw7 = *(IDirectDraw7 **)DD; - hr = IDirectDraw7_Initialize(ddraw7, GUID); + IDirectDraw7 *ddraw7 = *(IDirectDraw7 **)dd; + hr = IDirectDraw7_Initialize(ddraw7, guid); if (FAILED(hr)) IDirectDraw7_Release(ddraw7); } @@ -960,7 +960,7 @@ if(ddraw->d3ddevice) { WARN("DDraw %p has d3ddevice %p attached\n", ddraw, ddraw->d3ddevice); - while(IDirect3DDevice7_Release((IDirect3DDevice7 *)ddraw->d3ddevice)); + while(IDirect3DDevice7_Release(&ddraw->d3ddevice->IDirect3DDevice7_iface)); } /* Try to release the objects diff -Nru wine1.3-1.3.30/dlls/ddraw/material.c wine1.3-1.3.31/dlls/ddraw/material.c --- wine1.3-1.3.30/dlls/ddraw/material.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ddraw/material.c 2011-10-21 18:38:36.000000000 +0000 @@ -295,18 +295,18 @@ * *****************************************************************************/ static HRESULT WINAPI IDirect3DMaterialImpl_GetHandle(IDirect3DMaterial3 *iface, - IDirect3DDevice3 *lpDirect3DDevice3, D3DMATERIALHANDLE *lpHandle) + IDirect3DDevice3 *device, D3DMATERIALHANDLE *handle) { IDirect3DMaterialImpl *This = impl_from_IDirect3DMaterial3(iface); - IDirect3DDeviceImpl *device = device_from_device3(lpDirect3DDevice3); + IDirect3DDeviceImpl *device_impl = unsafe_impl_from_IDirect3DDevice3(device); - TRACE("iface %p, device %p, handle %p.\n", iface, lpDirect3DDevice3, lpHandle); + TRACE("iface %p, device %p, handle %p.\n", iface, device, handle); EnterCriticalSection(&ddraw_cs); - This->active_device = device; + This->active_device = device_impl; if(!This->Handle) { - DWORD h = ddraw_allocate_handle(&device->handle_table, This, DDRAW_HANDLE_MATERIAL); + DWORD h = ddraw_allocate_handle(&device_impl->handle_table, This, DDRAW_HANDLE_MATERIAL); if (h == DDRAW_INVALID_HANDLE) { ERR("Failed to allocate a material handle.\n"); @@ -316,33 +316,35 @@ This->Handle = h + 1; } - *lpHandle = This->Handle; - TRACE(" returning handle %08x.\n", *lpHandle); + *handle = This->Handle; + TRACE(" returning handle %08x.\n", *handle); LeaveCriticalSection(&ddraw_cs); return D3D_OK; } static HRESULT WINAPI IDirect3DMaterialImpl_2_GetHandle(IDirect3DMaterial2 *iface, - IDirect3DDevice2 *lpDirect3DDevice2, D3DMATERIALHANDLE *lpHandle) + IDirect3DDevice2 *device, D3DMATERIALHANDLE *handle) { IDirect3DMaterialImpl *This = impl_from_IDirect3DMaterial2(iface); + IDirect3DDeviceImpl *device_impl = unsafe_impl_from_IDirect3DDevice2(device); - TRACE("iface %p, device %p, handle %p.\n", iface, lpDirect3DDevice2, lpHandle); + TRACE("iface %p, device %p, handle %p.\n", iface, device, handle); - return IDirect3DMaterial3_GetHandle(&This->IDirect3DMaterial3_iface, lpDirect3DDevice2 ? - (IDirect3DDevice3 *)&device_from_device2(lpDirect3DDevice2)->IDirect3DDevice3_vtbl : NULL, lpHandle); + return IDirect3DMaterial3_GetHandle(&This->IDirect3DMaterial3_iface, device_impl ? + &device_impl->IDirect3DDevice3_iface : NULL, handle); } static HRESULT WINAPI IDirect3DMaterialImpl_1_GetHandle(IDirect3DMaterial *iface, - IDirect3DDevice *lpDirect3DDevice, D3DMATERIALHANDLE *lpHandle) + IDirect3DDevice *device, D3DMATERIALHANDLE *handle) { IDirect3DMaterialImpl *This = impl_from_IDirect3DMaterial(iface); + IDirect3DDeviceImpl *device_impl = unsafe_impl_from_IDirect3DDevice(device); - TRACE("iface %p, device %p, handle %p.\n", iface, lpDirect3DDevice, lpHandle); + TRACE("iface %p, device %p, handle %p.\n", iface, device, handle); - return IDirect3DMaterial3_GetHandle(&This->IDirect3DMaterial3_iface, lpDirect3DDevice ? - (IDirect3DDevice3 *)&device_from_device1(lpDirect3DDevice)->IDirect3DDevice3_vtbl : NULL, lpHandle); + return IDirect3DMaterial3_GetHandle(&This->IDirect3DMaterial3_iface, device_impl ? + &device_impl->IDirect3DDevice3_iface : NULL, handle); } static HRESULT WINAPI IDirect3DMaterialImpl_2_QueryInterface(IDirect3DMaterial2 *iface, REFIID riid, @@ -462,7 +464,7 @@ d3d7mat.u3.emissive = This->mat.u3.emissive; d3d7mat.u4.power = This->mat.u4.power; - IDirect3DDevice7_SetMaterial((IDirect3DDevice7 *)This->active_device, &d3d7mat); + IDirect3DDevice7_SetMaterial(&This->active_device->IDirect3DDevice7_iface, &d3d7mat); } static const struct IDirect3DMaterial3Vtbl d3d_material3_vtbl = diff -Nru wine1.3-1.3.30/dlls/ddraw/surface.c wine1.3-1.3.31/dlls/ddraw/surface.c --- wine1.3-1.3.30/dlls/ddraw/surface.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ddraw/surface.c 2011-10-21 18:38:36.000000000 +0000 @@ -127,6 +127,7 @@ IsEqualGUID(riid, &IID_IDirect3DRGBDevice) ) { IDirect3DDevice7 *d3d; + IDirect3DDeviceImpl *device_impl; /* Call into IDirect3D7 for creation */ IDirect3D7_CreateDevice(&This->ddraw->IDirect3D7_iface, riid, &This->IDirectDrawSurface7_iface, @@ -134,7 +135,8 @@ if (d3d) { - *obj = (IDirect3DDevice *)&((IDirect3DDeviceImpl *)d3d)->IDirect3DDevice_vtbl; + device_impl = impl_from_IDirect3DDevice7(d3d); + *obj = &device_impl->IDirect3DDevice_iface; TRACE("(%p) Returning IDirect3DDevice interface at %p\n", This, *obj); return S_OK; } @@ -428,46 +430,7 @@ ddraw_surface_destroy(surface); if (ddraw->wined3d_swapchain && destroy_swapchain) - { - TRACE("Destroying the swapchain.\n"); - - wined3d_swapchain_decref(ddraw->wined3d_swapchain); - ddraw->wined3d_swapchain = NULL; - - if (DefaultSurfaceType == SURFACE_OPENGL) - { - for (i = 0; i < ddraw->numConvertedDecls; ++i) - { - wined3d_vertex_declaration_decref(ddraw->decls[i].decl); - } - HeapFree(GetProcessHeap(), 0, ddraw->decls); - ddraw->numConvertedDecls = 0; - - if (FAILED(wined3d_device_uninit_3d(ddraw->wined3d_device))) - { - ERR("Failed to uninit 3D.\n"); - } - else - { - /* Free the d3d window if one was created. */ - if (ddraw->d3d_window && ddraw->d3d_window != ddraw->dest_window) - { - TRACE("Destroying the hidden render window %p.\n", ddraw->d3d_window); - DestroyWindow(ddraw->d3d_window); - ddraw->d3d_window = 0; - } - } - - ddraw->d3d_initialized = FALSE; - ddraw->d3d_target = NULL; - } - else - { - wined3d_device_uninit_gdi(ddraw->wined3d_device); - } - - TRACE("Swapchain destroyed.\n"); - } + ddraw_destroy_swapchain(ddraw); /* Reduce the ddraw refcount */ if (ifaceToRelease) @@ -1006,6 +969,7 @@ } surface_desc2.dwSize = surface_desc->dwSize; + surface_desc2.dwFlags = 0; hr = surface_lock(This, rect, &surface_desc2, flags, h); DDSD2_to_DDSD(&surface_desc2, surface_desc); surface_desc->dwSize = surface_desc2.dwSize; @@ -1030,6 +994,7 @@ } surface_desc2.dwSize = surface_desc->dwSize; + surface_desc2.dwFlags = 0; hr = surface_lock(This, rect, &surface_desc2, flags, h); DDSD2_to_DDSD(&surface_desc2, surface_desc); surface_desc->dwSize = surface_desc2.dwSize; @@ -1054,6 +1019,7 @@ } surface_desc2.dwSize = surface_desc->dwSize; + surface_desc2.dwFlags = 0; hr = surface_lock(This, rect, &surface_desc2, flags, h); DDSD2_to_DDSD(&surface_desc2, surface_desc); surface_desc->dwSize = surface_desc2.dwSize; @@ -1350,7 +1316,7 @@ * * Attaches a surface to another surface. How the surface attachments work * is not totally understood yet, and this method is prone to problems. - * he surface that is attached is AddRef-ed. + * The surface that is attached is AddRef-ed. * * Tests with complex surfaces suggest that the surface attachments form a * tree, but no method to test this has been found yet. @@ -1426,29 +1392,30 @@ return DD_OK; } -static HRESULT WINAPI ddraw_surface7_AddAttachedSurface(IDirectDrawSurface7 *iface, IDirectDrawSurface7 *Attach) +static HRESULT WINAPI ddraw_surface7_AddAttachedSurface(IDirectDrawSurface7 *iface, IDirectDrawSurface7 *attachment) { IDirectDrawSurfaceImpl *This = impl_from_IDirectDrawSurface7(iface); - IDirectDrawSurfaceImpl *Surf = unsafe_impl_from_IDirectDrawSurface7(Attach); + IDirectDrawSurfaceImpl *attachment_impl = unsafe_impl_from_IDirectDrawSurface7(attachment); HRESULT hr; - TRACE("iface %p, attachment %p.\n", iface, Attach); + TRACE("iface %p, attachment %p.\n", iface, attachment); /* Version 7 of this interface seems to refuse everything except z buffers, as per msdn */ - if(!(Surf->surface_desc.ddsCaps.dwCaps & DDSCAPS_ZBUFFER)) + if(!(attachment_impl->surface_desc.ddsCaps.dwCaps & DDSCAPS_ZBUFFER)) { WARN("Application tries to attach a non Z buffer surface. caps %08x\n", - Surf->surface_desc.ddsCaps.dwCaps); + attachment_impl->surface_desc.ddsCaps.dwCaps); return DDERR_CANNOTATTACHSURFACE; } - hr = ddraw_surface_attach_surface(This, Surf); + hr = ddraw_surface_attach_surface(This, attachment_impl); if (FAILED(hr)) { return hr; } - ddraw_surface7_AddRef(Attach); + ddraw_surface7_AddRef(attachment); + attachment_impl->attached_iface = (IUnknown *)attachment; return hr; } @@ -1468,12 +1435,13 @@ } ddraw_surface4_AddRef(attachment); ddraw_surface7_Release(&attachment_impl->IDirectDrawSurface7_iface); + attachment_impl->attached_iface = (IUnknown *)attachment; return hr; } static HRESULT WINAPI ddraw_surface3_AddAttachedSurface(IDirectDrawSurface3 *iface, IDirectDrawSurface3 *attachment) { IDirectDrawSurfaceImpl *This = impl_from_IDirectDrawSurface3(iface); - IDirectDrawSurfaceImpl *attach_impl = unsafe_impl_from_IDirectDrawSurface3(attachment); + IDirectDrawSurfaceImpl *attachment_impl = unsafe_impl_from_IDirectDrawSurface3(attachment); HRESULT hr; TRACE("iface %p, attachment %p.\n", iface, attachment); @@ -1484,11 +1452,11 @@ * -> primaries can be attached to offscreen plain surfaces * -> z buffers can be attached to primaries */ if (This->surface_desc.ddsCaps.dwCaps & (DDSCAPS_PRIMARYSURFACE | DDSCAPS_OFFSCREENPLAIN) - && attach_impl->surface_desc.ddsCaps.dwCaps & (DDSCAPS_PRIMARYSURFACE | DDSCAPS_OFFSCREENPLAIN)) + && attachment_impl->surface_desc.ddsCaps.dwCaps & (DDSCAPS_PRIMARYSURFACE | DDSCAPS_OFFSCREENPLAIN)) { /* Sizes have to match */ - if (attach_impl->surface_desc.dwWidth != This->surface_desc.dwWidth - || attach_impl->surface_desc.dwHeight != This->surface_desc.dwHeight) + if (attachment_impl->surface_desc.dwWidth != This->surface_desc.dwWidth + || attachment_impl->surface_desc.dwHeight != This->surface_desc.dwHeight) { WARN("Surface sizes do not match.\n"); return DDERR_CANNOTATTACHSURFACE; @@ -1496,7 +1464,7 @@ /* OK */ } else if (This->surface_desc.ddsCaps.dwCaps & (DDSCAPS_PRIMARYSURFACE | DDSCAPS_3DDEVICE) - && attach_impl->surface_desc.ddsCaps.dwCaps & (DDSCAPS_ZBUFFER)) + && attachment_impl->surface_desc.ddsCaps.dwCaps & (DDSCAPS_ZBUFFER)) { /* OK */ } @@ -1506,12 +1474,13 @@ return DDERR_CANNOTATTACHSURFACE; } - hr = ddraw_surface_attach_surface(This, attach_impl); + hr = ddraw_surface_attach_surface(This, attachment_impl); if (FAILED(hr)) { return hr; } ddraw_surface3_AddRef(attachment); + attachment_impl->attached_iface = (IUnknown *)attachment; return hr; } @@ -1531,6 +1500,7 @@ } ddraw_surface2_AddRef(attachment); ddraw_surface3_Release(&attachment_impl->IDirectDrawSurface3_iface); + attachment_impl->attached_iface = (IUnknown *)attachment; return hr; } @@ -1550,6 +1520,7 @@ } ddraw_surface1_AddRef(attachment); ddraw_surface3_Release(&attachment_impl->IDirectDrawSurface3_iface); + attachment_impl->attached_iface = (IUnknown *)attachment; return hr; } @@ -1569,11 +1540,11 @@ * *****************************************************************************/ static HRESULT ddraw_surface_delete_attached_surface(IDirectDrawSurfaceImpl *This, - IDirectDrawSurfaceImpl *Surf) + IDirectDrawSurfaceImpl *Surf, IUnknown *detach_iface) { IDirectDrawSurfaceImpl *Prev = This; - TRACE("surface %p, attachment %p.\n", This, Surf); + TRACE("surface %p, attachment %p, detach_iface %p.\n", This, Surf, detach_iface); EnterCriticalSection(&ddraw_cs); if (!Surf || (Surf->first_attached != This) || (Surf == This) ) @@ -1582,6 +1553,13 @@ return DDERR_CANNOTDETACHSURFACE; } + if (Surf->attached_iface != detach_iface) + { + WARN("Surf->attach_iface %p != detach_iface %p.\n", Surf->attached_iface, detach_iface); + LeaveCriticalSection(&ddraw_cs); + return DDERR_SURFACENOTATTACHED; + } + /* Remove MIPMAPSUBLEVEL if this seemed to be one */ if (This->surface_desc.ddsCaps.dwCaps & Surf->surface_desc.ddsCaps.dwCaps & DDSCAPS_MIPMAP) @@ -1612,6 +1590,12 @@ IDirect3DDeviceImpl_UpdateDepthStencil(This->ddraw->d3ddevice); } LeaveCriticalSection(&ddraw_cs); + + /* Set attached_iface to NULL before releasing it, the surface may go + * away. */ + Surf->attached_iface = NULL; + IUnknown_Release(detach_iface); + return DD_OK; } @@ -1620,17 +1604,10 @@ { IDirectDrawSurfaceImpl *This = impl_from_IDirectDrawSurface7(iface); IDirectDrawSurfaceImpl *attachment_impl = unsafe_impl_from_IDirectDrawSurface7(attachment); - HRESULT hr; TRACE("iface %p, flags %#x, attachment %p.\n", iface, flags, attachment); - hr = ddraw_surface_delete_attached_surface(This, attachment_impl); - if (FAILED(hr)) - { - return hr; - } - ddraw_surface7_Release(attachment); - return hr; + return ddraw_surface_delete_attached_surface(This, attachment_impl, (IUnknown *)attachment); } static HRESULT WINAPI ddraw_surface4_DeleteAttachedSurface(IDirectDrawSurface4 *iface, @@ -1638,17 +1615,10 @@ { IDirectDrawSurfaceImpl *This = impl_from_IDirectDrawSurface4(iface); IDirectDrawSurfaceImpl *attachment_impl = unsafe_impl_from_IDirectDrawSurface4(attachment); - HRESULT hr; TRACE("iface %p, flags %#x, attachment %p.\n", iface, flags, attachment); - hr = ddraw_surface_delete_attached_surface(This, attachment_impl); - if (FAILED(hr)) - { - return hr; - } - ddraw_surface4_Release(attachment); - return hr; + return ddraw_surface_delete_attached_surface(This, attachment_impl, (IUnknown *)attachment); } static HRESULT WINAPI ddraw_surface3_DeleteAttachedSurface(IDirectDrawSurface3 *iface, @@ -1656,16 +1626,10 @@ { IDirectDrawSurfaceImpl *This = impl_from_IDirectDrawSurface3(iface); IDirectDrawSurfaceImpl *attachment_impl = unsafe_impl_from_IDirectDrawSurface3(attachment); - HRESULT hr; + TRACE("iface %p, flags %#x, attachment %p.\n", iface, flags, attachment); - hr = ddraw_surface_delete_attached_surface(This, attachment_impl); - if (FAILED(hr)) - { - return hr; - } - ddraw_surface3_Release(attachment); - return hr; + return ddraw_surface_delete_attached_surface(This, attachment_impl, (IUnknown *)attachment); } static HRESULT WINAPI ddraw_surface2_DeleteAttachedSurface(IDirectDrawSurface2 *iface, @@ -1673,16 +1637,10 @@ { IDirectDrawSurfaceImpl *This = impl_from_IDirectDrawSurface2(iface); IDirectDrawSurfaceImpl *attachment_impl = unsafe_impl_from_IDirectDrawSurface2(attachment); - HRESULT hr; + TRACE("iface %p, flags %#x, attachment %p.\n", iface, flags, attachment); - hr = ddraw_surface_delete_attached_surface(This, attachment_impl); - if (FAILED(hr)) - { - return hr; - } - ddraw_surface2_Release(attachment); - return hr; + return ddraw_surface_delete_attached_surface(This, attachment_impl, (IUnknown *)attachment); } static HRESULT WINAPI ddraw_surface1_DeleteAttachedSurface(IDirectDrawSurface *iface, @@ -1690,16 +1648,10 @@ { IDirectDrawSurfaceImpl *This = impl_from_IDirectDrawSurface(iface); IDirectDrawSurfaceImpl *attachment_impl = unsafe_impl_from_IDirectDrawSurface(attachment); - HRESULT hr; + TRACE("iface %p, flags %#x, attachment %p.\n", iface, flags, attachment); - hr = ddraw_surface_delete_attached_surface(This, attachment_impl); - if (FAILED(hr)) - { - return hr; - } - ddraw_surface1_Release(attachment); - return hr; + return ddraw_surface_delete_attached_surface(This, attachment_impl, (IUnknown *)attachment); } /***************************************************************************** @@ -4539,6 +4491,7 @@ IDirect3DDevice2 *device, D3DTEXTUREHANDLE *handle) { IDirectDrawSurfaceImpl *surface = impl_from_IDirect3DTexture2(iface); + IDirect3DDeviceImpl *device_impl = unsafe_impl_from_IDirect3DDevice2(device); TRACE("iface %p, device %p, handle %p.\n", iface, device, handle); @@ -4546,7 +4499,7 @@ if (!surface->Handle) { - DWORD h = ddraw_allocate_handle(&device_from_device2(device)->handle_table, surface, DDRAW_HANDLE_SURFACE); + DWORD h = ddraw_allocate_handle(&device_impl->handle_table, surface, DDRAW_HANDLE_SURFACE); if (h == DDRAW_INVALID_HANDLE) { ERR("Failed to allocate a texture handle.\n"); @@ -4569,11 +4522,12 @@ IDirect3DDevice *device, D3DTEXTUREHANDLE *handle) { IDirectDrawSurfaceImpl *This = impl_from_IDirect3DTexture(iface); - IDirect3DDevice2 *device2 = (IDirect3DDevice2 *)&device_from_device1(device)->IDirect3DDevice2_vtbl; + IDirect3DDeviceImpl *device_impl = unsafe_impl_from_IDirect3DDevice(device); TRACE("iface %p, device %p, handle %p.\n", iface, device, handle); - return d3d_texture2_GetHandle(&This->IDirect3DTexture2_iface, device2, handle); + return d3d_texture2_GetHandle(&This->IDirect3DTexture2_iface, + device_impl ? &device_impl->IDirect3DDevice2_iface : NULL, handle); } /***************************************************************************** @@ -5100,9 +5054,6 @@ /* Check for attached surfaces and detach them. */ if (surface->first_attached != surface) { - IDirectDrawSurface7 *root = &surface->first_attached->IDirectDrawSurface7_iface; - IDirectDrawSurface7 *detach = &surface->IDirectDrawSurface7_iface; - /* Well, this shouldn't happen: The surface being attached is * referenced in AddAttachedSurface(), so it shouldn't be released * until DeleteAttachedSurface() is called, because the refcount is @@ -5111,18 +5062,14 @@ WARN("Surface is still attached to surface %p.\n", surface->first_attached); /* The refcount will drop to -1 here */ - if (FAILED(IDirectDrawSurface7_DeleteAttachedSurface(root, 0, detach))) + if (FAILED(ddraw_surface_delete_attached_surface(surface->first_attached, surface, surface->attached_iface))) ERR("DeleteAttachedSurface failed.\n"); } while (surface->next_attached) - { - IDirectDrawSurface7 *root = &surface->IDirectDrawSurface7_iface; - IDirectDrawSurface7 *detach = &surface->next_attached->IDirectDrawSurface7_iface; - - if (FAILED(IDirectDrawSurface7_DeleteAttachedSurface(root, 0, detach))) + if (FAILED(ddraw_surface_delete_attached_surface(surface, + surface->next_attached, surface->next_attached->attached_iface))) ERR("DeleteAttachedSurface failed.\n"); - } /* Having a texture handle set implies that the device still exists. */ if (surface->Handle) diff -Nru wine1.3-1.3.30/dlls/ddraw/tests/refcount.c wine1.3-1.3.31/dlls/ddraw/tests/refcount.c --- wine1.3-1.3.30/dlls/ddraw/tests/refcount.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ddraw/tests/refcount.c 2011-10-21 18:38:36.000000000 +0000 @@ -47,11 +47,11 @@ IDirectDraw2 *DDraw2; IDirectDraw *DDraw1; IDirectDrawPalette *palette; - IDirectDrawSurface7 *surface = NULL; - IDirectDrawSurface *surface1; + IDirectDrawSurface7 *surface = NULL, *stencil; + IDirectDrawSurface *surface1, *stencil1; IDirectDrawSurface4 *surface4; PALETTEENTRY Table[256]; - DDSURFACEDESC2 ddsd; + DDSURFACEDESC2 ddsd, ddsd_stencil; hr = pDirectDrawCreateEx(NULL, (void **) &DDraw7, &IID_IDirectDraw7, NULL); ok(hr == DD_OK || hr==DDERR_NODIRECTDRAWSUPPORT, "DirectDrawCreateEx returned: %x\n", hr); @@ -92,6 +92,17 @@ U4(ddsd).ddpfPixelFormat.dwFlags = DDPF_PALETTEINDEXED8 | DDPF_RGB; U1(U4(ddsd).ddpfPixelFormat).dwRGBBitCount = 8; + memset(&ddsd_stencil, 0, sizeof(ddsd_stencil)); + ddsd_stencil.dwSize = sizeof(ddsd_stencil); + ddsd_stencil.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT | DDSD_PIXELFORMAT; + ddsd_stencil.dwWidth = ddsd.dwWidth; + ddsd_stencil.dwHeight = ddsd.dwHeight; + ddsd_stencil.ddsCaps.dwCaps = DDSCAPS_3DDEVICE | DDSCAPS_ZBUFFER; + U4(ddsd_stencil).ddpfPixelFormat.dwSize = sizeof(U4(ddsd_stencil).ddpfPixelFormat); + U4(ddsd_stencil).ddpfPixelFormat.dwFlags = DDPF_ZBUFFER; + U1(U4(ddsd_stencil).ddpfPixelFormat).dwZBufferBitDepth = 16; + U3(U4(ddsd_stencil).ddpfPixelFormat).dwZBitMask = 0x0000FFFF; + hr = IDirectDraw7_CreateSurface(DDraw7, &ddsd, &surface, NULL); if (!surface) { @@ -186,6 +197,95 @@ ok(ref == 1, "Got refcount %d, expected 1\n", ref); IDirectDrawSurface_Release(surface1); + /* AddAttachedSurface with IDirectDrawSurface7 */ + ddsd.dwSize = sizeof(DDSURFACEDESC2); + ddsd.ddsCaps.dwCaps |= DDSCAPS_3DDEVICE; + hr = IDirectDraw7_CreateSurface(DDraw7, &ddsd, &surface, NULL); + ok(hr == DD_OK, "CreateSurface returned %08x\n", hr); + if (SUCCEEDED(hr)) + { + ddsd_stencil.dwSize = sizeof(DDSURFACEDESC2); + hr = IDirectDraw7_CreateSurface(DDraw7, &ddsd_stencil, &stencil, NULL); + ok(hr == DD_OK, "CreateSurface returned %08x\n", hr); + if (SUCCEEDED(hr)) + { + /* AddAttachedSurface with DeleteAttachedSurface */ + hr = IDirectDrawSurface7_AddAttachedSurface(surface, stencil); + ok(hr == DD_OK, "AddAttachedSurface returned %08x\n", hr); + if (SUCCEEDED(hr)) + { + ref = getRefcount( (IUnknown *) stencil); + ok(ref == 2, "Got refcount %d, expected 2\n", ref); + hr = IDirectDrawSurface7_QueryInterface(surface, &IID_IDirectDrawSurface, (void **) &surface1); + ok(hr == DD_OK, "IDirectDrawSurface7_QueryInterface returned %08x\n", hr); + hr = IDirectDrawSurface7_QueryInterface(stencil, &IID_IDirectDrawSurface, (void **) &stencil1); + ok(hr == DD_OK, "IDirectDrawSurface7_QueryInterface returned %08x\n", hr); + hr = IDirectDrawSurface_DeleteAttachedSurface(surface1, 0, stencil1); + ok(hr == DDERR_SURFACENOTATTACHED, "DeleteAttachedSurface returned %08x\n", hr); + if (stencil1 != NULL) IDirectDrawSurface_Release(stencil1); + if (surface1 != NULL) IDirectDrawSurface_Release(surface1); + hr = IDirectDrawSurface7_DeleteAttachedSurface(surface, 0, stencil); + ok(hr == DD_OK, "DeleteAttachedSurface returned %08x\n", hr); + ref = getRefcount( (IUnknown *) stencil); + ok(ref == 1, "Got refcount %d, expected 1\n", ref); + } + + /* Releasing a surface should detach any attached surfaces */ + hr = IDirectDrawSurface7_AddAttachedSurface(surface, stencil); + ok(hr == DD_OK, "AddAttachedSurface returned %08x\n", hr); + ref = getRefcount( (IUnknown *) stencil); + ok(ref == 2, "Got refcount %d, expected 2\n", ref); + ref = IDirectDrawSurface7_Release(surface); + ok(!ref, "Got refcount %d, expected 0\n", ref); + ref = getRefcount( (IUnknown *) stencil); + ok(ref == 1, "Got refcount %d, expected 1\n", ref); + ref = IDirectDrawSurface7_Release(stencil); + ok(!ref, "Got refcount %d, expected 0\n", ref); + } + else + IDirectDrawSurface7_Release(surface); + } + + /* AddAttachedSurface with IDirectDrawSurface */ + ddsd.dwSize = sizeof(DDSURFACEDESC); + hr = IDirectDraw_CreateSurface(DDraw1, (DDSURFACEDESC *) &ddsd, &surface1, NULL); + ok(hr == DD_OK, "CreateSurface returned %08x\n", hr); + if (SUCCEEDED(hr)) + { + ddsd_stencil.dwSize = sizeof(DDSURFACEDESC); + hr = IDirectDraw_CreateSurface(DDraw1, (DDSURFACEDESC *) &ddsd_stencil, &stencil1, NULL); + ok(hr == DD_OK, "CreateSurface returned %08x\n", hr); + if (SUCCEEDED(hr)) + { + /* AddAttachedSurface with DeleteAttachedSurface */ + hr = IDirectDrawSurface_AddAttachedSurface(surface1, stencil1); + ok(hr == DD_OK, "AddAttachedSurface returned %08x\n", hr); + if (SUCCEEDED(hr)) + { + ref = getRefcount( (IUnknown *) stencil1); + ok(ref == 2, "Got refcount %d, expected 2\n", ref); + hr = IDirectDrawSurface_DeleteAttachedSurface(surface1, 0, stencil1); + ok(hr == DD_OK, "DeleteAttachedSurface returned %08x\n", hr); + ref = getRefcount( (IUnknown *) stencil1); + ok(ref == 1, "Got refcount %d, expected 1\n", ref); + } + + /* Releasing a surface should detach any attached surfaces */ + hr = IDirectDrawSurface_AddAttachedSurface(surface1, stencil1); + ok(hr == DD_OK, "AddAttachedSurface returned %08x\n", hr); + ref = getRefcount( (IUnknown *) stencil1); + ok(ref == 2, "Got refcount %d, expected 2\n", ref); + ref = IDirectDrawSurface_Release(surface1); + ok(!ref, "Got refcount %d, expected 0\n", ref); + ref = getRefcount( (IUnknown *) stencil1); + ok(ref == 1, "Got refcount %d, expected 1\n", ref); + ref = IDirectDrawSurface_Release(stencil1); + ok(!ref, "Got refcount %d, expected 0\n", ref); + } + else + IDirectDrawSurface_Release(surface1); + } + IDirectDraw7_Release(DDraw7); IDirectDraw4_Release(DDraw4); IDirectDraw2_Release(DDraw2); diff -Nru wine1.3-1.3.30/dlls/ddraw/vertexbuffer.c wine1.3-1.3.31/dlls/ddraw/vertexbuffer.c --- wine1.3-1.3.30/dlls/ddraw/vertexbuffer.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ddraw/vertexbuffer.c 2011-10-21 18:38:36.000000000 +0000 @@ -303,16 +303,16 @@ *****************************************************************************/ static HRESULT WINAPI IDirect3DVertexBufferImpl_ProcessVertices(IDirect3DVertexBuffer7 *iface, DWORD VertexOp, DWORD DestIndex, DWORD Count, IDirect3DVertexBuffer7 *SrcBuffer, - DWORD SrcIndex, IDirect3DDevice7 *D3DDevice, DWORD Flags) + DWORD SrcIndex, IDirect3DDevice7 *device, DWORD Flags) { IDirect3DVertexBufferImpl *This = impl_from_IDirect3DVertexBuffer7(iface); IDirect3DVertexBufferImpl *Src = unsafe_impl_from_IDirect3DVertexBuffer7(SrcBuffer); - IDirect3DDeviceImpl *D3D = (IDirect3DDeviceImpl *)D3DDevice; + IDirect3DDeviceImpl *device_impl = unsafe_impl_from_IDirect3DDevice7(device); BOOL oldClip, doClip; HRESULT hr; TRACE("iface %p, vertex_op %#x, dst_idx %u, count %u, src_buffer %p, src_idx %u, device %p, flags %#x.\n", - iface, VertexOp, DestIndex, Count, SrcBuffer, SrcIndex, D3DDevice, Flags); + iface, VertexOp, DestIndex, Count, SrcBuffer, SrcIndex, device, Flags); /* Vertex operations: * D3DVOP_CLIP: Clips vertices outside the viewing frustrum. Needs clipping information @@ -332,37 +332,37 @@ * the vertex ops */ doClip = VertexOp & D3DVOP_CLIP ? TRUE : FALSE; - wined3d_device_get_render_state(D3D->wined3d_device, WINED3DRS_CLIPPING, (DWORD *)&oldClip); + wined3d_device_get_render_state(device_impl->wined3d_device, WINED3DRS_CLIPPING, (DWORD *)&oldClip); if (doClip != oldClip) - wined3d_device_set_render_state(D3D->wined3d_device, WINED3DRS_CLIPPING, doClip); + wined3d_device_set_render_state(device_impl->wined3d_device, WINED3DRS_CLIPPING, doClip); - wined3d_device_set_stream_source(D3D->wined3d_device, + wined3d_device_set_stream_source(device_impl->wined3d_device, 0, Src->wineD3DVertexBuffer, 0, get_flexible_vertex_size(Src->fvf)); - wined3d_device_set_vertex_declaration(D3D->wined3d_device, Src->wineD3DVertexDeclaration); - hr = wined3d_device_process_vertices(D3D->wined3d_device, SrcIndex, DestIndex, + wined3d_device_set_vertex_declaration(device_impl->wined3d_device, Src->wineD3DVertexDeclaration); + hr = wined3d_device_process_vertices(device_impl->wined3d_device, SrcIndex, DestIndex, Count, This->wineD3DVertexBuffer, NULL, Flags, This->fvf); /* Restore the states if needed */ if (doClip != oldClip) - wined3d_device_set_render_state(D3D->wined3d_device, WINED3DRS_CLIPPING, oldClip); + wined3d_device_set_render_state(device_impl->wined3d_device, WINED3DRS_CLIPPING, oldClip); LeaveCriticalSection(&ddraw_cs); return hr; } static HRESULT WINAPI IDirect3DVertexBufferImpl_1_ProcessVertices(IDirect3DVertexBuffer *iface, DWORD VertexOp, DWORD DestIndex, DWORD Count, IDirect3DVertexBuffer *SrcBuffer, - DWORD SrcIndex, IDirect3DDevice3 *D3DDevice, DWORD Flags) + DWORD SrcIndex, IDirect3DDevice3 *device, DWORD Flags) { IDirect3DVertexBufferImpl *This = impl_from_IDirect3DVertexBuffer(iface); IDirect3DVertexBufferImpl *Src = unsafe_impl_from_IDirect3DVertexBuffer(SrcBuffer); - IDirect3DDeviceImpl *D3D = D3DDevice ? device_from_device3(D3DDevice) : NULL; + IDirect3DDeviceImpl *device_impl = unsafe_impl_from_IDirect3DDevice3(device); TRACE("iface %p, vertex_op %#x, dst_idx %u, count %u, src_buffer %p, src_idx %u, device %p, flags %#x.\n", - iface, VertexOp, DestIndex, Count, SrcBuffer, SrcIndex, D3DDevice, Flags); + iface, VertexOp, DestIndex, Count, SrcBuffer, SrcIndex, device, Flags); return IDirect3DVertexBuffer7_ProcessVertices(&This->IDirect3DVertexBuffer7_iface, VertexOp, - DestIndex, Count, &Src->IDirect3DVertexBuffer7_iface, SrcIndex, (IDirect3DDevice7 *)D3D, - Flags); + DestIndex, Count, &Src->IDirect3DVertexBuffer7_iface, SrcIndex, + device_impl ? &device_impl->IDirect3DDevice7_iface : NULL, Flags); } /***************************************************************************** @@ -451,15 +451,15 @@ } static HRESULT WINAPI IDirect3DVertexBufferImpl_1_Optimize(IDirect3DVertexBuffer *iface, - IDirect3DDevice3 *D3DDevice, DWORD Flags) + IDirect3DDevice3 *device, DWORD Flags) { IDirect3DVertexBufferImpl *This = impl_from_IDirect3DVertexBuffer(iface); - IDirect3DDeviceImpl *D3D = D3DDevice ? device_from_device3(D3DDevice) : NULL; + IDirect3DDeviceImpl *device_impl = unsafe_impl_from_IDirect3DDevice3(device); - TRACE("iface %p, device %p, flags %#x.\n", iface, D3DDevice, Flags); + TRACE("iface %p, device %p, flags %#x.\n", iface, device, Flags); return IDirect3DVertexBuffer7_Optimize(&This->IDirect3DVertexBuffer7_iface, - (IDirect3DDevice7 *)D3D, Flags); + device_impl ? &device_impl->IDirect3DDevice7_iface : NULL, Flags); } /***************************************************************************** diff -Nru wine1.3-1.3.30/dlls/ddraw/viewport.c wine1.3-1.3.31/dlls/ddraw/viewport.c --- wine1.3-1.3.30/dlls/ddraw/viewport.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ddraw/viewport.c 2011-10-21 18:38:36.000000000 +0000 @@ -72,7 +72,7 @@ } /* And also set the viewport */ - IDirect3DDevice7_SetViewport((IDirect3DDevice7 *)This->active_device, &vp); + IDirect3DDevice7_SetViewport(&This->active_device->IDirect3DDevice7_iface, &vp); } /***************************************************************************** @@ -316,7 +316,7 @@ This->viewports.vp1.dvMaxZ = 1.0; if (This->active_device) { - IDirect3DDevice3 *d3d_device3 = (IDirect3DDevice3 *)&This->active_device->IDirect3DDevice3_vtbl; + IDirect3DDevice3 *d3d_device3 = &This->active_device->IDirect3DDevice3_iface; IDirect3DDevice3_GetCurrentViewport(d3d_device3, ¤t_viewport); if (current_viewport) { @@ -672,7 +672,7 @@ ERR(" Trying to clear a viewport not attached to a device !\n"); return D3DERR_VIEWPORTHASNODEVICE; } - d3d_device3 = (IDirect3DDevice3 *)&This->active_device->IDirect3DDevice3_vtbl; + d3d_device3 = &This->active_device->IDirect3DDevice3_iface; EnterCriticalSection(&ddraw_cs); if (dwFlags & D3DCLEAR_TARGET) { @@ -692,7 +692,7 @@ afterwards. */ viewport_activate(This, TRUE); - hr = IDirect3DDevice7_Clear((IDirect3DDevice7 *)This->active_device, dwCount, lpRects, + hr = IDirect3DDevice7_Clear(&This->active_device->IDirect3DDevice7_iface, dwCount, lpRects, dwFlags & (D3DCLEAR_ZBUFFER | D3DCLEAR_TARGET), color, 1.0, 0x00000000); IDirect3DDevice3_GetCurrentViewport(d3d_device3, ¤t_viewport); @@ -970,7 +970,7 @@ memcpy(&(This->viewports.vp2), lpData, lpData->dwSize); if (This->active_device) { - IDirect3DDevice3 *d3d_device3 = (IDirect3DDevice3 *)&This->active_device->IDirect3DDevice3_vtbl; + IDirect3DDevice3 *d3d_device3 = &This->active_device->IDirect3DDevice3_iface; IDirect3DDevice3_GetCurrentViewport(d3d_device3, ¤t_viewport); if (current_viewport) { @@ -1070,12 +1070,12 @@ LeaveCriticalSection(&ddraw_cs); return D3DERR_VIEWPORTHASNODEVICE; } - d3d_device3 = (IDirect3DDevice3 *)&This->active_device->IDirect3DDevice3_vtbl; + d3d_device3 = &This->active_device->IDirect3DDevice3_iface; /* Need to temporarily activate viewport to clear it. Previously active * one will be restored afterwards. */ viewport_activate(This, TRUE); - hr = IDirect3DDevice7_Clear((IDirect3DDevice7 *)This->active_device, + hr = IDirect3DDevice7_Clear(&This->active_device->IDirect3DDevice7_iface, dwCount, lpRects, dwFlags, dwColor, dvZ, dwStencil); IDirect3DDevice3_GetCurrentViewport(d3d_device3, ¤t_viewport); if(current_viewport) { diff -Nru wine1.3-1.3.30/dlls/dinput/config.c wine1.3-1.3.31/dlls/dinput/config.c --- wine1.3-1.3.30/dlls/dinput/config.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dinput/config.c 2011-10-21 18:38:36.000000000 +0000 @@ -195,7 +195,7 @@ IDirectInput8_EnumDevicesBySemantics(lpDI, NULL, lpdiaf, count_devices, (LPVOID) data, 0); /* Allocate devices */ - data->devices = (DeviceData*) HeapAlloc(GetProcessHeap(), 0, sizeof(DeviceData) * data->ndevices); + data->devices = HeapAlloc(GetProcessHeap(), 0, sizeof(DeviceData) * data->ndevices); /* Collect and insert */ data->ndevices = 0; diff -Nru wine1.3-1.3.30/dlls/dinput/device.c wine1.3-1.3.31/dlls/dinput/device.c --- wine1.3-1.3.30/dlls/dinput/device.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dinput/device.c 2011-10-21 18:38:36.000000000 +0000 @@ -783,6 +783,8 @@ IDirectInputDeviceImpl *This = impl_from_IDirectInputDevice8W(iface); HRESULT res; + TRACE("(%p)\n", This); + if (!This->data_format.user_df) return DIERR_INVALIDPARAM; if (This->dwCoopLevel & DISCL_FOREGROUND && This->win != GetForegroundWindow()) return DIERR_OTHERAPPHASPRIO; @@ -791,10 +793,7 @@ res = This->acquired ? S_FALSE : DI_OK; This->acquired = 1; if (res == DI_OK) - { - This->queue_head = This->queue_tail = This->overflow = 0; check_dinput_hooks(iface); - } LeaveCriticalSection(&This->crit); return res; @@ -816,6 +815,8 @@ IDirectInputDeviceImpl *This = impl_from_IDirectInputDevice8W(iface); HRESULT res; + TRACE("(%p)\n", This); + EnterCriticalSection(&This->crit); res = !This->acquired ? DI_NOEFFECT : DI_OK; This->acquired = 0; @@ -933,9 +934,10 @@ ULONG WINAPI IDirectInputDevice2WImpl_Release(LPDIRECTINPUTDEVICE8W iface) { IDirectInputDeviceImpl *This = impl_from_IDirectInputDevice8W(iface); - ULONG ref; + ULONG ref = InterlockedDecrement(&(This->ref)); + + TRACE("(%p) releasing from %d\n", This, ref + 1); - ref = InterlockedDecrement(&(This->ref)); if (ref) return ref; IDirectInputDevice_Unacquire(iface); @@ -1286,10 +1288,14 @@ TRACE("(%p) %p -> %p(%d) x%d, 0x%08x\n", This, dod, entries, entries ? *entries : 0, dodsize, flags); - if (!This->acquired) - return DIERR_NOTACQUIRED; + if (This->dinput->dwVersion == 0x0800) + { + if (!This->acquired) return DIERR_NOTACQUIRED; + if (!This->queue_len) return DIERR_NOTBUFFERED; + } + if (!This->queue_len) - return DIERR_NOTBUFFERED; + return DI_OK; if (dodsize < sizeof(DIDEVICEOBJECTDATA_DX3)) return DIERR_INVALIDPARAM; @@ -1312,7 +1318,7 @@ } *entries = len; - if (This->overflow) + if (This->overflow && This->dinput->dwVersion == 0x0800) ret = DI_BUFFEROVERFLOW; if (!(flags & DIGDD_PEEK)) diff -Nru wine1.3-1.3.30/dlls/dinput/dinput_It.rc wine1.3-1.3.31/dlls/dinput/dinput_It.rc --- wine1.3-1.3.30/dlls/dinput/dinput_It.rc 1970-01-01 00:00:00.000000000 +0000 +++ wine1.3-1.3.31/dlls/dinput/dinput_It.rc 2011-10-21 18:38:36.000000000 +0000 @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2011 Luca Bennati + * + * 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 "resource.h" + +/* UTF-8 */ +#pragma code_page(65001) + +LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL + +IDD_CONFIGUREDEVICES DIALOG 0, 0, 270, 260 +STYLE DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE +CAPTION "Configura unità" +FONT 8, "Ms Shell Dlg" +{ + DEFPUSHBUTTON "Ok", IDOK, 10, 236, 50, 14 + DEFPUSHBUTTON "Annulla", IDCANCEL, 65, 236, 50, 14 + DEFPUSHBUTTON "Resetta", IDC_RESET, 210, 236, 50, 14 + COMBOBOX IDC_PLAYERCOMBO, 10, 50, 90, 30, CBS_DROPDOWNLIST | CBS_HASSTRINGS + COMBOBOX IDC_CONTROLLERCOMBO, 10, 20, 90, 30, CBS_DROPDOWNLIST | CBS_HASSTRINGS + LTEXT "Riproduttore", IDC_PLAYERTEXT, 10, 40, 21, 8, SS_LEFT + LTEXT "Unità", IDC_DEVICETEXT, 10, 10, 22, 8, SS_LEFT + LTEXT "Azioni", IDC_ACTIONTEXT, 10, 70, 24, 8, SS_LEFT + LTEXT "Corrispondenza", IDC_MAPPINGTEXT, 120, 8, 28, 8, SS_LEFT + LISTBOX IDC_ACTIONLIST, 10, 80, 90, 130, WS_TABSTOP | WS_VSCROLL | LBS_NOINTEGRALHEIGHT | LBS_NOTIFY + AUTOCHECKBOX "Ordina assegnati", IDC_CHECKBOXSORT, 120, 215, 60, 8 + CONTROL "Listview", IDC_DEVICEOBJECTSLIST, "SysListView32", LVS_REPORT | LVS_AUTOARRANGE | LVS_ALIGNLEFT | LVS_SHOWSELALWAYS | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP, 120, 20, 140, 190 +} diff -Nru wine1.3-1.3.30/dlls/dinput/Makefile.in wine1.3-1.3.31/dlls/dinput/Makefile.in --- wine1.3-1.3.30/dlls/dinput/Makefile.in 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dinput/Makefile.in 2011-10-21 18:38:36.000000000 +0000 @@ -25,6 +25,7 @@ RC_SRCS = \ dinput.rc \ dinput_En.rc \ + dinput_It.rc \ dinput_Ko.rc @MAKE_DLL_RULES@ diff -Nru wine1.3-1.3.30/dlls/dinput/mouse.c wine1.3-1.3.31/dlls/dinput/mouse.c --- wine1.3-1.3.30/dlls/dinput/mouse.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dinput/mouse.c 2011-10-21 18:38:36.000000000 +0000 @@ -419,7 +419,7 @@ return ret; } -static HRESULT warp_check( SysMouseImpl* This, BOOL force ) +static void warp_check( SysMouseImpl* This, BOOL force ) { DWORD now = GetCurrentTime(); const DWORD interval = This->clipped ? 500 : 10; @@ -430,7 +430,7 @@ This->last_warped = now; This->need_warp = FALSE; - if (!GetWindowRect(This->base.win, &rect)) return DIERR_GENERIC; + if (!GetWindowRect(This->base.win, &rect)) return; This->mapped_center.x = (rect.left + rect.right) / 2; This->mapped_center.y = (rect.top + rect.bottom) / 2; if (!This->clipped) @@ -447,7 +447,6 @@ This->clipped = GetClipCursor( &new_rect ) && EqualRect( &rect, &new_rect ); } } - return DI_OK; } @@ -569,7 +568,8 @@ } LeaveCriticalSection(&This->base.crit); - return warp_check( This, FALSE ); + warp_check( This, FALSE ); + return DI_OK; } static HRESULT WINAPI SysMouseAImpl_GetDeviceState(LPDIRECTINPUTDEVICE8A iface, DWORD len, LPVOID ptr) @@ -588,7 +588,7 @@ HRESULT res; res = IDirectInputDevice2WImpl_GetDeviceData(iface, dodsize, dod, entries, flags); - if (SUCCEEDED(res)) res = warp_check( This, FALSE ); + if (SUCCEEDED(res)) warp_check( This, FALSE ); return res; } diff -Nru wine1.3-1.3.30/dlls/dinput/tests/device.c wine1.3-1.3.31/dlls/dinput/tests/device.c --- wine1.3-1.3.30/dlls/dinput/tests/device.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dinput/tests/device.c 2011-10-21 18:38:36.000000000 +0000 @@ -103,6 +103,9 @@ hr = IDirectInputDevice_GetObjectInfo(device, &obj_info, 16, DIPH_BYOFFSET); if (SUCCEEDED(hr)) { + DWORD cnt; + DIDEVICEOBJECTDATA buffer[5]; + /* No device supports per axis relative/absolute mode */ memset(&dp, 0, sizeof(dp)); dp.diph.dwSize = sizeof(DIPROPDWORD); @@ -119,9 +122,30 @@ hr = IDirectInputDevice_SetProperty(device, DIPROP_AXISMODE, &dp.diph); ok(hr == DI_OK, "SetProperty() failed: %08x\n", hr); + dp.dwData = 0; + hr = IDirectInputDevice_SetProperty(device, DIPROP_BUFFERSIZE, (LPCDIPROPHEADER)&dp.diph); + ok(hr == DI_OK, "SetProperty() failed: %08x\n", hr); + + cnt = 5; + hr = IDirectInputDevice_GetDeviceData(device, sizeof(buffer[0]), buffer, &cnt, 0); + ok(hr == DI_OK && cnt == 5, "GetDeviceData() failed: %08x cnt: %d\n", hr, cnt); + + dp.dwData = 20; + hr = IDirectInputDevice_SetProperty(device, DIPROP_BUFFERSIZE, (LPCDIPROPHEADER)&dp.diph); + ok(hr == DI_OK, "SetProperty() failed: %08x\n", hr); + + cnt = 1; + hr = IDirectInputDevice_GetDeviceData(device, sizeof(buffer[0]), buffer, &cnt, 0); + ok(hr == DI_OK, "GetDeviceData() failed: %08x\n", hr); + /* Cannot change mode while acquired */ hr = IDirectInputDevice_Acquire(device); ok(hr == DI_OK, "Acquire() failed: %08x\n", hr); + cnt = 1; + hr = IDirectInputDevice_GetDeviceData(device, sizeof(buffer[0]), buffer, &cnt, 0); + ok(hr == DI_OK, "GetDeviceData() failed: %08x\n", hr); + + hr = IDirectInputDevice_SetProperty(device, DIPROP_AXISMODE, &dp.diph); ok(hr == DIERR_ACQUIRED, "SetProperty() returned: %08x\n", hr); hr = IDirectInputDevice_Unacquire(device); diff -Nru wine1.3-1.3.30/dlls/dinput/tests/mouse.c wine1.3-1.3.31/dlls/dinput/tests/mouse.c --- wine1.3-1.3.30/dlls/dinput/tests/mouse.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dinput/tests/mouse.c 2011-10-21 18:38:36.000000000 +0000 @@ -72,6 +72,10 @@ LPDIRECTINPUTDEVICE pMouse = NULL; DIMOUSESTATE m_state; HWND hwnd2; + DIPROPDWORD di_op; + DIDEVICEOBJECTDATA mouse_state; + DWORD cnt; + int i; if (! SetForegroundWindow(hwnd)) { @@ -86,6 +90,14 @@ hr = IDirectInputDevice_SetCooperativeLevel(pMouse, hwnd, DISCL_NONEXCLUSIVE | DISCL_FOREGROUND); ok(hr == S_OK, "SetCooperativeLevel: %08x\n", hr); + memset(&di_op, 0, sizeof(di_op)); + di_op.dwData = 5; + di_op.diph.dwHow = DIPH_DEVICE; + di_op.diph.dwSize = sizeof(DIPROPDWORD); + di_op.diph.dwHeaderSize = sizeof(DIPROPHEADER); + hr = IDirectInputDevice_SetProperty(pMouse, DIPROP_BUFFERSIZE, (LPCDIPROPHEADER)&di_op); + ok(hr == S_OK, "SetProperty() failed: %08x\n", hr); + hr = IDirectInputDevice_SetDataFormat(pMouse, &c_dfDIMouse); ok(SUCCEEDED(hr), "IDirectInputDevice_SetDataFormat() failed: %08x\n", hr); hr = IDirectInputDevice_Unacquire(pMouse); @@ -113,6 +125,36 @@ hr = IDirectInputDevice_Acquire(pMouse); ok(hr == S_OK, "Acquire() failed: %08x\n", hr); + mouse_event(MOUSEEVENTF_MOVE, 10, 10, 0, 0); + cnt = 1; + hr = IDirectInputDevice_GetDeviceData(pMouse, sizeof(mouse_state), &mouse_state, &cnt, 0); + ok(hr == S_OK && cnt > 0, "GetDeviceData() failed: %08x cnt:%d\n", hr, cnt); + + mouse_event(MOUSEEVENTF_MOVE, 10, 10, 0, 0); + IDirectInputDevice_Unacquire(pMouse); + cnt = 1; + hr = IDirectInputDevice_GetDeviceData(pMouse, sizeof(mouse_state), &mouse_state, &cnt, 0); + ok(hr == S_OK && cnt > 0, "GetDeviceData() failed: %08x cnt:%d\n", hr, cnt); + + IDirectInputDevice_Acquire(pMouse); + mouse_event(MOUSEEVENTF_MOVE, 10, 10, 0, 0); + IDirectInputDevice_Unacquire(pMouse); + IDirectInputDevice_Acquire(pMouse); + cnt = 1; + hr = IDirectInputDevice_GetDeviceData(pMouse, sizeof(mouse_state), &mouse_state, &cnt, 0); + ok(hr == S_OK && cnt > 0, "GetDeviceData() failed: %08x cnt:%d\n", hr, cnt); + + /* Check for buffer owerflow */ + for (i = 0; i < 6; i++) + mouse_event(MOUSEEVENTF_MOVE, 10 + i, 10 + i, 0, 0); + + cnt = 1; + hr = IDirectInputDevice_GetDeviceData(pMouse, sizeof(mouse_state), &mouse_state, &cnt, 0); + ok(hr == DI_OK, "GetDeviceData() failed: %08x cnt:%d\n", hr, cnt); + cnt = 1; + hr = IDirectInputDevice_GetDeviceData(pMouse, sizeof(mouse_state), &mouse_state, &cnt, 0); + ok(hr == DI_OK && cnt == 1, "GetDeviceData() failed: %08x cnt:%d\n", hr, cnt); + if (pMouse) IUnknown_Release(pMouse); DestroyWindow( hwnd2 ); diff -Nru wine1.3-1.3.30/dlls/dinput8/tests/device.c wine1.3-1.3.31/dlls/dinput8/tests/device.c --- wine1.3-1.3.30/dlls/dinput8/tests/device.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dinput8/tests/device.c 2011-10-21 18:38:36.000000000 +0000 @@ -69,12 +69,13 @@ HRESULT hr; DIDEVICEOBJECTDATA obj_data; DWORD data_size = 1; + int i; hr = IDirectInputDevice8_Acquire(lpdid); ok (SUCCEEDED(hr), "Failed to acquire device hr=%08x\n", hr); if (event_type == INPUT_KEYBOARD) - keybd_event( event, 0, 0, 0); + keybd_event( event, DIK_SPACE, 0, 0); if (event_type == INPUT_MOUSE) mouse_event( event, 0, 0, 0, 0); @@ -89,6 +90,28 @@ } ok (obj_data.uAppData == expected, "Retrieval of action failed uAppData=%lu expected=%d\n", obj_data.uAppData, expected); + + /* Check for buffer owerflow */ + for (i = 0; i < 17; i++) + if (event_type == INPUT_KEYBOARD) + { + keybd_event( VK_SPACE, DIK_SPACE, 0, 0); + keybd_event( VK_SPACE, DIK_SPACE, KEYEVENTF_KEYUP, 0); + } + else if (event_type == INPUT_MOUSE) + { + mouse_event(MOUSEEVENTF_LEFTDOWN, 1, 1, 0, 0); + mouse_event(MOUSEEVENTF_LEFTUP, 1, 1, 0, 0); + } + + IDirectInputDevice8_Poll(lpdid); + + data_size = 1; + hr = IDirectInputDevice8_GetDeviceData(lpdid, sizeof(obj_data), &obj_data, &data_size, 0); + ok(hr == DI_BUFFEROVERFLOW, "GetDeviceData() failed: %08x\n", hr); + data_size = 1; + hr = IDirectInputDevice8_GetDeviceData(lpdid, sizeof(obj_data), &obj_data, &data_size, 0); + ok(hr == DI_OK && data_size == 1, "GetDeviceData() failed: %08x cnt:%d\n", hr, data_size); } static void test_build_action_map( @@ -134,6 +157,9 @@ DIPROPDWORD dp; DIPROPRANGE dpr; struct enum_data *data = pvRef; + DWORD cnt; + DIDEVICEOBJECTDATA buffer[5]; + if (!data) return DIENUM_CONTINUE; data->ndevices++; @@ -180,6 +206,10 @@ ok (SUCCEEDED(hr), "GetProperty failed hr=%08x\n", hr); ok (dp.dwData == data->lpdiaf->dwBufferSize, "SetActionMap must set the buffer, buffersize=%d\n", dp.dwData); + cnt = 1; + hr = IDirectInputDevice_GetDeviceData(lpdid, sizeof(buffer[0]), buffer, &cnt, 0); + ok(hr == DIERR_NOTACQUIRED, "GetDeviceData() failed hr=%08x\n", hr); + /* Test axis range */ memset(&dpr, 0, sizeof(dpr)); dpr.diph.dwSize = sizeof(dpr); @@ -198,6 +228,10 @@ hr = IDirectInputDevice8_Acquire(lpdid); ok (SUCCEEDED(hr), "Acquire failed hr=%08x\n", hr); + cnt = 1; + hr = IDirectInputDevice_GetDeviceData(lpdid, sizeof(buffer[0]), buffer, &cnt, 0); + ok(hr == DI_OK, "GetDeviceData() failed hr=%08x\n", hr); + /* SetActionMap should not work on an acquired device */ hr = IDirectInputDevice8_SetActionMap(lpdid, data->lpdiaf, NULL, 0); ok (hr == DIERR_ACQUIRED, "SetActionMap succeeded with an acquired device hr=%08x\n", hr); diff -Nru wine1.3-1.3.30/dlls/dmband/band.c wine1.3-1.3.31/dlls/dmband/band.c --- wine1.3-1.3.30/dlls/dmband/band.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dmband/band.c 2011-10-21 18:38:36.000000000 +0000 @@ -173,7 +173,7 @@ This->pDesc->ftDate = pDesc->ftDate; if (pDesc->dwValidData & DMUS_OBJ_MEMORY) { This->pDesc->llMemLength = pDesc->llMemLength; - memcpy (This->pDesc->pbMemData, pDesc->pbMemData, sizeof (pDesc->pbMemData)); + memcpy (This->pDesc->pbMemData, pDesc->pbMemData, pDesc->llMemLength); } if (pDesc->dwValidData & DMUS_OBJ_STREAM) { /* according to MSDN, we copy the stream */ diff -Nru wine1.3-1.3.30/dlls/dmcompos/chordmap.c wine1.3-1.3.31/dlls/dmcompos/chordmap.c --- wine1.3-1.3.30/dlls/dmcompos/chordmap.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dmcompos/chordmap.c 2011-10-21 18:38:36.000000000 +0000 @@ -163,7 +163,7 @@ This->pDesc->ftDate = pDesc->ftDate; if (pDesc->dwValidData & DMUS_OBJ_MEMORY) { This->pDesc->llMemLength = pDesc->llMemLength; - memcpy (This->pDesc->pbMemData, pDesc->pbMemData, sizeof (pDesc->pbMemData)); + memcpy (This->pDesc->pbMemData, pDesc->pbMemData, pDesc->llMemLength); } if (pDesc->dwValidData & DMUS_OBJ_STREAM) { /* according to MSDN, we copy the stream */ diff -Nru wine1.3-1.3.30/dlls/dmime/audiopath.c wine1.3-1.3.31/dlls/dmime/audiopath.c --- wine1.3-1.3.30/dlls/dmime/audiopath.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dmime/audiopath.c 2011-10-21 18:38:36.000000000 +0000 @@ -272,8 +272,8 @@ if (pDesc->dwValidData & DMUS_OBJ_DATE) This->pDesc->ftDate = pDesc->ftDate; if (pDesc->dwValidData & DMUS_OBJ_MEMORY) { - memcpy (&This->pDesc->llMemLength, &pDesc->llMemLength, sizeof (pDesc->llMemLength)); - memcpy (This->pDesc->pbMemData, pDesc->pbMemData, sizeof (pDesc->pbMemData)); + This->pDesc->llMemLength = pDesc->llMemLength; + memcpy (This->pDesc->pbMemData, pDesc->pbMemData, pDesc->llMemLength); } if (pDesc->dwValidData & DMUS_OBJ_STREAM) { /* according to MSDN, we copy the stream */ diff -Nru wine1.3-1.3.30/dlls/dmime/graph.c wine1.3-1.3.31/dlls/dmime/graph.c --- wine1.3-1.3.30/dlls/dmime/graph.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dmime/graph.c 2011-10-21 18:38:36.000000000 +0000 @@ -237,8 +237,8 @@ if (pDesc->dwValidData & DMUS_OBJ_DATE) This->pDesc->ftDate = pDesc->ftDate; if (pDesc->dwValidData & DMUS_OBJ_MEMORY) { - memcpy (&This->pDesc->llMemLength, &pDesc->llMemLength, sizeof (pDesc->llMemLength)); - memcpy (This->pDesc->pbMemData, pDesc->pbMemData, sizeof (pDesc->pbMemData)); + This->pDesc->llMemLength = pDesc->llMemLength; + memcpy (This->pDesc->pbMemData, pDesc->pbMemData, pDesc->llMemLength); } if (pDesc->dwValidData & DMUS_OBJ_STREAM) { /* according to MSDN, we copy the stream */ diff -Nru wine1.3-1.3.30/dlls/dmime/segment.c wine1.3-1.3.31/dlls/dmime/segment.c --- wine1.3-1.3.30/dlls/dmime/segment.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dmime/segment.c 2011-10-21 18:38:36.000000000 +0000 @@ -563,8 +563,8 @@ if (pDesc->dwValidData & DMUS_OBJ_DATE) This->pDesc->ftDate = pDesc->ftDate; if (pDesc->dwValidData & DMUS_OBJ_MEMORY) { - memcpy (&This->pDesc->llMemLength, &pDesc->llMemLength, sizeof (pDesc->llMemLength)); - memcpy (This->pDesc->pbMemData, pDesc->pbMemData, sizeof (pDesc->pbMemData)); + This->pDesc->llMemLength = pDesc->llMemLength; + memcpy (This->pDesc->pbMemData, pDesc->pbMemData, pDesc->llMemLength); } if (pDesc->dwValidData & DMUS_OBJ_STREAM) { /* according to MSDN, we copy the stream */ @@ -1226,8 +1226,7 @@ IStream_Clone (pStm, &pClonedStream); - liMove.QuadPart = 0; - liMove.QuadPart -= sizeof(FOURCC) + (sizeof(FOURCC)+sizeof(DWORD)); + liMove.QuadPart = - (LONGLONG)(sizeof(FOURCC) * 2 + sizeof(DWORD)); IStream_Seek (pClonedStream, liMove, STREAM_SEEK_CUR, NULL); hr = IDirectMusicSegment8Impl_IPersistStream_LoadWave (iface, pClonedStream, &pWave); diff -Nru wine1.3-1.3.30/dlls/dmscript/script.c wine1.3-1.3.31/dlls/dmscript/script.c --- wine1.3-1.3.30/dlls/dmscript/script.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dmscript/script.c 2011-10-21 18:38:36.000000000 +0000 @@ -241,8 +241,8 @@ if (pDesc->dwValidData & DMUS_OBJ_DATE) This->pDesc->ftDate = pDesc->ftDate; if (pDesc->dwValidData & DMUS_OBJ_MEMORY) { - memcpy (&This->pDesc->llMemLength, &pDesc->llMemLength, sizeof (pDesc->llMemLength)); - memcpy (This->pDesc->pbMemData, pDesc->pbMemData, sizeof (pDesc->pbMemData)); + This->pDesc->llMemLength = pDesc->llMemLength; + memcpy (This->pDesc->pbMemData, pDesc->pbMemData, pDesc->llMemLength); } if (pDesc->dwValidData & DMUS_OBJ_STREAM) { /* according to MSDN, we copy the stream */ diff -Nru wine1.3-1.3.30/dlls/dmstyle/style.c wine1.3-1.3.31/dlls/dmstyle/style.c --- wine1.3-1.3.30/dlls/dmstyle/style.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dmstyle/style.c 2011-10-21 18:38:36.000000000 +0000 @@ -245,8 +245,8 @@ if (pDesc->dwValidData & DMUS_OBJ_DATE) This->pDesc->ftDate = pDesc->ftDate; if (pDesc->dwValidData & DMUS_OBJ_MEMORY) { - memcpy (&This->pDesc->llMemLength, &pDesc->llMemLength, sizeof (pDesc->llMemLength)); - memcpy (This->pDesc->pbMemData, pDesc->pbMemData, sizeof (pDesc->pbMemData)); + This->pDesc->llMemLength = pDesc->llMemLength; + memcpy (This->pDesc->pbMemData, pDesc->pbMemData, pDesc->llMemLength); } if (pDesc->dwValidData & DMUS_OBJ_STREAM) { /* according to MSDN, we copy the stream */ diff -Nru wine1.3-1.3.30/dlls/dmusic/collection.c wine1.3-1.3.31/dlls/dmusic/collection.c --- wine1.3-1.3.30/dlls/dmusic/collection.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dmusic/collection.c 2011-10-21 18:38:36.000000000 +0000 @@ -209,8 +209,8 @@ if (pDesc->dwValidData & DMUS_OBJ_DATE) This->pDesc->ftDate = pDesc->ftDate; if (pDesc->dwValidData & DMUS_OBJ_MEMORY) { - memcpy (&This->pDesc->llMemLength, &pDesc->llMemLength, sizeof (pDesc->llMemLength)); - memcpy (This->pDesc->pbMemData, pDesc->pbMemData, sizeof (pDesc->pbMemData)); + This->pDesc->llMemLength = pDesc->llMemLength; + memcpy (This->pDesc->pbMemData, pDesc->pbMemData, pDesc->llMemLength); } if (pDesc->dwValidData & DMUS_OBJ_STREAM) { /* according to MSDN, we copy the stream */ diff -Nru wine1.3-1.3.30/dlls/dpnet/tests/peer.c wine1.3-1.3.31/dlls/dpnet/tests/peer.c --- wine1.3-1.3.30/dlls/dpnet/tests/peer.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dpnet/tests/peer.c 2011-10-21 18:38:36.000000000 +0000 @@ -70,7 +70,7 @@ ok(hr == DPNERR_BUFFERTOOSMALL, "IDirectPlay8Peer_EnumServiceProviders failed with %x\n", hr); ok(size != 0, "size is unexpectedly 0\n"); - serv_prov_info = (DPN_SERVICE_PROVIDER_INFO*) HeapAlloc(GetProcessHeap(), 0, size); + serv_prov_info = HeapAlloc(GetProcessHeap(), 0, size); hr = IDirectPlay8Peer_EnumServiceProviders(peer, NULL, NULL, serv_prov_info, &size, &items, 0); ok(hr == S_OK, "IDirectPlay8Peer_EnumServiceProviders failed with %x\n", hr); @@ -96,7 +96,7 @@ ok(hr == DPNERR_BUFFERTOOSMALL, "IDirectPlay8Peer_EnumServiceProviders failed with %x\n", hr); ok(size != 0, "size is unexpectedly 0\n"); - serv_prov_info = (DPN_SERVICE_PROVIDER_INFO*) HeapAlloc(GetProcessHeap(), 0, size); + serv_prov_info = HeapAlloc(GetProcessHeap(), 0, size); hr = IDirectPlay8Peer_EnumServiceProviders(peer, &CLSID_DP8SP_TCPIP, NULL, serv_prov_info, &size, &items, 0); ok(hr == S_OK, "IDirectPlay8Peer_EnumServiceProviders failed with %x\n", hr); diff -Nru wine1.3-1.3.30/dlls/dsound/capture.c wine1.3-1.3.31/dlls/dsound/capture.c --- wine1.3-1.3.30/dlls/dsound/capture.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dsound/capture.c 2011-10-21 18:38:36.000000000 +0000 @@ -680,6 +680,7 @@ LPCDSCBUFFERDESC lpcDSCBufferDesc) { LPWAVEFORMATEX wfex; + IDirectSoundCaptureBufferImpl *This; TRACE( "(%p,%p,%p)\n", device, ppobj, lpcDSCBufferDesc); if (ppobj == NULL) { @@ -687,15 +688,15 @@ return DSERR_INVALIDPARAM; } + *ppobj = NULL; + if (!device) { WARN("not initialized\n"); - *ppobj = NULL; return DSERR_UNINITIALIZED; } if (lpcDSCBufferDesc == NULL) { WARN("invalid parameter: lpcDSCBufferDesc == NULL\n"); - *ppobj = NULL; return DSERR_INVALIDPARAM; } @@ -704,7 +705,6 @@ (lpcDSCBufferDesc->dwBufferBytes == 0) || (lpcDSCBufferDesc->lpwfxFormat == NULL) ) { /* FIXME: DSERR_BADFORMAT ? */ WARN("invalid lpcDSCBufferDesc\n"); - *ppobj = NULL; return DSERR_INVALIDPARAM; } @@ -717,23 +717,19 @@ wfex->wBitsPerSample, wfex->cbSize); device->pwfx = DSOUND_CopyFormat(wfex); - if ( device->pwfx == NULL ) { - *ppobj = NULL; + if ( device->pwfx == NULL ) return DSERR_OUTOFMEMORY; - } - *ppobj = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY, + This = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY, sizeof(IDirectSoundCaptureBufferImpl)); - if ( *ppobj == NULL ) { + if ( This == NULL ) { WARN("out of memory\n"); - *ppobj = NULL; return DSERR_OUTOFMEMORY; } else { HRESULT err = DS_OK; LPBYTE newbuf; DWORD buflen; - IDirectSoundCaptureBufferImpl *This = *ppobj; This->ref = 1; This->device = device; @@ -749,7 +745,6 @@ WARN("no memory\n"); This->device->capture_buffer = 0; HeapFree( GetProcessHeap(), 0, This ); - *ppobj = NULL; return DSERR_OUTOFMEMORY; } @@ -762,7 +757,6 @@ HeapFree(GetProcessHeap(), 0, This->pdscbd); This->device->capture_buffer = 0; HeapFree( GetProcessHeap(), 0, This ); - *ppobj = NULL; return err; } @@ -776,7 +770,6 @@ HeapFree(GetProcessHeap(), 0, This->pdscbd); This->device->capture_buffer = 0; HeapFree( GetProcessHeap(), 0, This ); - *ppobj = NULL; return err; } @@ -789,7 +782,6 @@ HeapFree(GetProcessHeap(), 0, This->pdscbd); This->device->capture_buffer = 0; HeapFree( GetProcessHeap(), 0, This ); - *ppobj = NULL; return err; } @@ -807,13 +799,14 @@ HeapFree(GetProcessHeap(), 0, This->pdscbd); This->device->capture_buffer = 0; HeapFree( GetProcessHeap(), 0, This ); - *ppobj = NULL; return DSERR_OUTOFMEMORY; } device->buffer = newbuf; device->buflen = buflen; } + *ppobj = This; + TRACE("returning DS_OK\n"); return DS_OK; } @@ -1036,6 +1029,7 @@ if(FAILED(hr)){ DeleteCriticalSection(&device->lock); HeapFree(GetProcessHeap(), 0, device); + LeaveCriticalSection(&DSOUND_capturers_lock); return DSERR_NODRIVER; } diff -Nru wine1.3-1.3.30/dlls/dsound/dsound.c wine1.3-1.3.31/dlls/dsound/dsound.c --- wine1.3-1.3.30/dlls/dsound/dsound.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dsound/dsound.c 2011-10-21 18:38:36.000000000 +0000 @@ -1480,8 +1480,12 @@ DSOUND_check_supported(device->client, 96000, 16, 2)) device->drvcaps.dwFlags |= DSCAPS_PRIMARY16BIT | DSCAPS_PRIMARYSTEREO; + device->drvcaps.dwPrimaryBuffers = 1; device->drvcaps.dwMinSecondarySampleRate = DSBFREQUENCY_MIN; device->drvcaps.dwMaxSecondarySampleRate = DSBFREQUENCY_MAX; + device->drvcaps.dwMaxHwMixingAllBuffers = 1; + device->drvcaps.dwMaxHwMixingStaticBuffers = 1; + device->drvcaps.dwMaxHwMixingStreamingBuffers = 1; ZeroMemory(&device->volpan, sizeof(device->volpan)); @@ -1540,6 +1544,12 @@ TRACE("(lpwfxFormat=%p)\n",dsbd->lpwfxFormat); } + if (dsbd->dwFlags & DSBCAPS_LOCHARDWARE && + !(dsbd->dwFlags & DSBCAPS_PRIMARYBUFFER)) { + TRACE("LOCHARDWARE is not supported, returning E_NOTIMPL\n"); + return E_NOTIMPL; + } + if (dsbd->dwFlags & DSBCAPS_PRIMARYBUFFER) { if (dsbd->lpwfxFormat != NULL) { WARN("invalid parameter: dsbd->lpwfxFormat must be NULL for " diff -Nru wine1.3-1.3.30/dlls/dsound/dsound_main.c wine1.3-1.3.31/dlls/dsound/dsound_main.c --- wine1.3-1.3.30/dlls/dsound/dsound_main.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dsound/dsound_main.c 2011-10-21 18:38:36.000000000 +0000 @@ -478,6 +478,47 @@ return DSERR_INVALIDPARAM; } +static BOOL send_device(IMMDevice *device, GUID *guid, + LPDSENUMCALLBACKW cb, void *user) +{ + IPropertyStore *ps; + PROPVARIANT pv; + BOOL keep_going; + HRESULT hr; + + PropVariantInit(&pv); + + hr = IMMDevice_OpenPropertyStore(device, STGM_READ, &ps); + if(FAILED(hr)){ + WARN("OpenPropertyStore failed: %08x\n", hr); + return TRUE; + } + + hr = get_mmdevice_guid(device, ps, guid); + if(FAILED(hr)){ + IPropertyStore_Release(ps); + return TRUE; + } + + hr = IPropertyStore_GetValue(ps, + (const PROPERTYKEY *)&DEVPKEY_Device_FriendlyName, &pv); + if(FAILED(hr)){ + IPropertyStore_Release(ps); + WARN("GetValue(FriendlyName) failed: %08x\n", hr); + return TRUE; + } + + TRACE("Calling back with %s (%s)\n", wine_dbgstr_guid(guid), + wine_dbgstr_w(pv.u.pwszVal)); + + keep_going = cb(guid, pv.u.pwszVal, wine_vxd_drv, user); + + PropVariantClear(&pv); + IPropertyStore_Release(ps); + + return keep_going; +} + /* S_FALSE means the callback returned FALSE at some point * S_OK means the callback always returned TRUE */ HRESULT enumerate_mmdevices(EDataFlow flow, GUID *guids, @@ -485,7 +526,8 @@ { IMMDeviceEnumerator *devenum; IMMDeviceCollection *coll; - UINT count, i; + IMMDevice *defdev = NULL; + UINT count, i, n; BOOL keep_going; HRESULT hr; @@ -514,14 +556,24 @@ if(count == 0) return DS_OK; + TRACE("Calling back with NULL (%s)\n", wine_dbgstr_w(primary_desc)); keep_going = cb(NULL, primary_desc, empty_drv, user); + /* always send the default device first */ + if(keep_going){ + hr = IMMDeviceEnumerator_GetDefaultAudioEndpoint(devenum, flow, + eMultimedia, &defdev); + if(FAILED(hr)){ + defdev = NULL; + n = 0; + }else{ + keep_going = send_device(defdev, &guids[0], cb, user); + n = 1; + } + } + for(i = 0; keep_going && i < count; ++i){ IMMDevice *device; - IPropertyStore *ps; - PROPVARIANT pv; - - PropVariantInit(&pv); hr = IMMDeviceCollection_Item(coll, i, &device); if(FAILED(hr)){ @@ -529,36 +581,16 @@ continue; } - hr = IMMDevice_OpenPropertyStore(device, STGM_READ, &ps); - if(FAILED(hr)){ - IMMDevice_Release(device); - WARN("OpenPropertyStore failed: %08x\n", hr); - continue; + if(device != defdev){ + send_device(device, &guids[n], cb, user); + ++n; } - hr = get_mmdevice_guid(device, ps, &guids[i]); - if(FAILED(hr)){ - IPropertyStore_Release(ps); - IMMDevice_Release(device); - continue; - } - - hr = IPropertyStore_GetValue(ps, - (const PROPERTYKEY *)&DEVPKEY_Device_FriendlyName, &pv); - if(FAILED(hr)){ - IPropertyStore_Release(ps); - IMMDevice_Release(device); - WARN("GetValue(FriendlyName) failed: %08x\n", hr); - continue; - } - - keep_going = cb(&guids[i], pv.u.pwszVal, wine_vxd_drv, user); - - PropVariantClear(&pv); - IPropertyStore_Release(ps); IMMDevice_Release(device); } + if(defdev) + IMMDevice_Release(defdev); IMMDeviceCollection_Release(coll); return (keep_going == TRUE) ? S_OK : S_FALSE; diff -Nru wine1.3-1.3.30/dlls/dsound/mixer.c wine1.3-1.3.31/dlls/dsound/mixer.c --- wine1.3-1.3.30/dlls/dsound/mixer.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dsound/mixer.c 2011-10-21 18:38:36.000000000 +0000 @@ -859,8 +859,8 @@ return; } - pos_bytes = ceil(clock_pos * device->pwfx->nBlockAlign * - (clock_freq / (double)device->pwfx->nSamplesPerSec)); + pos_bytes = (clock_pos * device->pwfx->nBlockAlign * clock_freq) / + device->pwfx->nSamplesPerSec; delta_frags = (pos_bytes - device->last_pos_bytes) / device->fraglen; if(delta_frags > 0){ @@ -934,11 +934,6 @@ size2 = 0; FillMemory(device->mix_buffer + mixplaypos, mixplaypos2 - mixplaypos, 0); FillMemory(buf1, size1, nfiller); - if (buf2 && size2) - { - FIXME("%d: There should be no additional buffer here!!\n", __LINE__); - FillMemory(buf2, size2, nfiller); - } } device->playpos = playpos; diff -Nru wine1.3-1.3.30/dlls/dsound/primary.c wine1.3-1.3.31/dlls/dsound/primary.c --- wine1.3-1.3.30/dlls/dsound/primary.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dsound/primary.c 2011-10-21 18:38:36.000000000 +0000 @@ -84,6 +84,8 @@ HRESULT DSOUND_ReopenDevice(DirectSoundDevice *device, BOOL forcewave) { + UINT prebuf_frames; + REFERENCE_TIME prebuf_rt; HRESULT hres; TRACE("(%p, %d)\n", device, forcewave); @@ -112,10 +114,12 @@ return hres; } - /* buffer size = 200 * 100000 (100 ns) = 2.0 seconds */ + prebuf_frames = device->prebuf * DSOUND_fraglen(device->pwfx->nSamplesPerSec, device->pwfx->nBlockAlign) / device->pwfx->nBlockAlign; + prebuf_rt = (10000000 * (UINT64)prebuf_frames) / device->pwfx->nSamplesPerSec; + hres = IAudioClient_Initialize(device->client, AUDCLNT_SHAREMODE_SHARED, AUDCLNT_STREAMFLAGS_NOPERSIST, - 200 * 100000, 50000, device->pwfx, NULL); + prebuf_rt, 50000, device->pwfx, NULL); if(FAILED(hres)){ IAudioClient_Release(device->client); device->client = NULL; diff -Nru wine1.3-1.3.30/dlls/dsound/tests/dsound8.c wine1.3-1.3.31/dlls/dsound/tests/dsound8.c --- wine1.3-1.3.30/dlls/dsound/tests/dsound8.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dsound/tests/dsound8.c 2011-10-21 18:38:36.000000000 +0000 @@ -25,6 +25,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#define COBJMACROS +#define NONAMELESSUNION #include #include @@ -35,6 +37,13 @@ #include "ks.h" #include "ksmedia.h" +#include "initguid.h" +#include "wingdi.h" +#include "mmdeviceapi.h" +#include "audioclient.h" +#include "propkey.h" +#include "devpkey.h" + #include "dsound_test.h" static HRESULT (WINAPI *pDirectSoundEnumerateA)(LPDSENUMCALLBACKA,LPVOID)=NULL; @@ -933,6 +942,179 @@ ok(rc==DS_OK,"DirectSoundEnumerateA() failed: %08x\n",rc); } +static void test_hw_buffers(void) +{ + IDirectSound8 *ds; + IDirectSoundBuffer *primary, *primary2, **secondaries, *secondary; + IDirectSoundBuffer8 *buf8; + DSCAPS caps; + DSBCAPS bufcaps; + DSBUFFERDESC bufdesc; + WAVEFORMATEX fmt; + UINT i; + HRESULT hr; + + hr = pDirectSoundCreate8(NULL, &ds, NULL); + ok(hr == S_OK || hr == DSERR_NODRIVER || hr == DSERR_ALLOCATED || hr == E_FAIL, + "DirectSoundCreate8 failed: %08x\n", hr); + if(hr != S_OK) + return; + + caps.dwSize = sizeof(caps); + + hr = IDirectSound8_GetCaps(ds, &caps); + ok(hr == S_OK, "GetCaps failed: %08x\n", hr); + + ok(caps.dwPrimaryBuffers == 1, "Got wrong number of primary buffers: %u\n", + caps.dwPrimaryBuffers); + + /* DSBCAPS_LOC* is ignored for primary buffers */ + bufdesc.dwSize = sizeof(bufdesc); + bufdesc.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_LOCHARDWARE | + DSBCAPS_PRIMARYBUFFER; + bufdesc.dwBufferBytes = 0; + bufdesc.dwReserved = 0; + bufdesc.lpwfxFormat = NULL; + bufdesc.guid3DAlgorithm = GUID_NULL; + + hr = IDirectSound8_CreateSoundBuffer(ds, &bufdesc, &primary, NULL); + ok(hr == S_OK, "CreateSoundBuffer failed: %08x\n", hr); + if(hr != S_OK){ + IDirectSound8_Release(ds); + return; + } + + bufdesc.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_LOCSOFTWARE | + DSBCAPS_PRIMARYBUFFER; + + hr = IDirectSound8_CreateSoundBuffer(ds, &bufdesc, &primary2, NULL); + ok(hr == S_OK, "CreateSoundBuffer failed: %08x\n", hr); + ok(primary == primary2, "Got different primary buffers: %p, %p\n", primary, primary2); + if(hr == S_OK) + IDirectSoundBuffer_Release(primary2); + + buf8 = (IDirectSoundBuffer8 *)0xDEADBEEF; + hr = IDirectSoundBuffer_QueryInterface(primary, &IID_IDirectSoundBuffer8, + (void**)&buf8); + ok(hr == E_NOINTERFACE, "QueryInterface gave wrong failure: %08x\n", hr); + ok(buf8 == NULL, "Pointer didn't get set to NULL\n"); + + fmt.wFormatTag = WAVE_FORMAT_PCM; + fmt.nChannels = 2; + fmt.nSamplesPerSec = 48000; + fmt.wBitsPerSample = 16; + fmt.nBlockAlign = fmt.nChannels * fmt.wBitsPerSample / 8; + fmt.nAvgBytesPerSec = fmt.nBlockAlign * fmt.nSamplesPerSec; + fmt.cbSize = 0; + + bufdesc.lpwfxFormat = &fmt; + bufdesc.dwBufferBytes = fmt.nSamplesPerSec * fmt.nBlockAlign / 10; + bufdesc.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_LOCHARDWARE | + DSBCAPS_CTRLVOLUME; + + secondaries = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, + sizeof(IDirectSoundBuffer *) * caps.dwMaxHwMixingAllBuffers); + + /* try to fill all of the hw buffers */ + trace("dwMaxHwMixingAllBuffers: %u\n", caps.dwMaxHwMixingAllBuffers); + trace("dwMaxHwMixingStaticBuffers: %u\n", caps.dwMaxHwMixingStaticBuffers); + trace("dwMaxHwMixingStreamingBuffers: %u\n", caps.dwMaxHwMixingStreamingBuffers); + for(i = 0; i < caps.dwMaxHwMixingAllBuffers; ++i){ + hr = IDirectSound8_CreateSoundBuffer(ds, &bufdesc, &secondaries[i], NULL); + ok(hr == S_OK || hr == E_NOTIMPL || broken(hr == DSERR_CONTROLUNAVAIL), + "CreateSoundBuffer(%u) failed: %08x\n", i, hr); + if(hr != S_OK) + break; + + bufcaps.dwSize = sizeof(bufcaps); + hr = IDirectSoundBuffer_GetCaps(secondaries[i], &bufcaps); + ok(hr == S_OK, "GetCaps failed: %08x\n", hr); + ok((bufcaps.dwFlags & DSBCAPS_LOCHARDWARE) != 0, + "Buffer wasn't allocated in hardware, dwFlags: %x\n", bufcaps.dwFlags); + } + + /* see if we can create one more */ + hr = IDirectSound8_CreateSoundBuffer(ds, &bufdesc, &secondary, NULL); + ok((i == caps.dwMaxHwMixingAllBuffers && hr == DSERR_ALLOCATED) || /* out of hw buffers */ + (caps.dwMaxHwMixingAllBuffers == 0 && hr == DSERR_INVALIDCALL) || /* no hw buffers at all */ + hr == E_NOTIMPL || /* don't support hw buffers */ + broken(hr == DSERR_CONTROLUNAVAIL) || /* vmware winxp, others? */ + broken(hr == S_OK) /* broken driver allows more hw bufs than dscaps claims */, + "CreateSoundBuffer gave wrong error: %08x\n", hr); + if(hr == S_OK) + IDirectSoundBuffer_Release(secondary); + + for(i = 0; i < caps.dwMaxHwMixingAllBuffers; ++i) + if(secondaries[i]) + IDirectSoundBuffer_Release(secondaries[i]); + + IDirectSoundBuffer_Release(primary); + IDirectSound8_Release(ds); +} + +static struct { + UINT dev_count; + GUID guid; +} default_info = { 0 }; + +static BOOL WINAPI default_device_cb(GUID *guid, const char *desc, + const char *module, void *user) +{ + trace("guid: %p, desc: %s\n", guid, desc); + if(!guid) + ok(default_info.dev_count == 0, "Got NULL GUID not in first position\n"); + else{ + if(default_info.dev_count == 0){ + ok(IsEqualGUID(guid, &default_info.guid), "Expected default device GUID\n"); + }else{ + ok(!IsEqualGUID(guid, &default_info.guid), "Got default GUID at unexpected location: %u\n", + default_info.dev_count); + } + + /* only count real devices */ + ++default_info.dev_count; + } + + return TRUE; +} + +static void test_first_device(void) +{ + IMMDeviceEnumerator *devenum; + IMMDevice *defdev; + IPropertyStore *ps; + PROPVARIANT pv; + HRESULT hr; + + hr = CoCreateInstance(&CLSID_MMDeviceEnumerator, NULL, + CLSCTX_INPROC_SERVER, &IID_IMMDeviceEnumerator, (void**)&devenum); + if(FAILED(hr)){ + win_skip("MMDevAPI is not available, skipping default device test\n"); + return; + } + + hr = IMMDeviceEnumerator_GetDefaultAudioEndpoint(devenum, eRender, + eMultimedia, &defdev); + ok(hr == S_OK, "GetDefaultAudioEndpoint failed: %08x\n", hr); + + hr = IMMDevice_OpenPropertyStore(defdev, STGM_READ, &ps); + ok(hr == S_OK, "OpenPropertyStore failed: %08x\n", hr); + + PropVariantInit(&pv); + + hr = IPropertyStore_GetValue(ps, &PKEY_AudioEndpoint_GUID, &pv); + ok(hr == S_OK, "GetValue failed: %08x\n", hr); + + CLSIDFromString(pv.u.pwszVal, &default_info.guid); + + PropVariantClear(&pv); + IPropertyStore_Release(ps); + IMMDevice_Release(defdev); + IMMDeviceEnumerator_Release(devenum); + + hr = pDirectSoundEnumerateA(&default_device_cb, NULL); + ok(hr == S_OK, "DirectSoundEnumerateA failed: %08x\n", hr); +} START_TEST(dsound8) { @@ -952,6 +1134,8 @@ { IDirectSound8_tests(); dsound8_tests(); + test_hw_buffers(); + test_first_device(); } else skip("dsound8 test skipped\n"); diff -Nru wine1.3-1.3.30/dlls/dsound/tests/dsound.c wine1.3-1.3.31/dlls/dsound/tests/dsound.c --- wine1.3-1.3.30/dlls/dsound/tests/dsound.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dsound/tests/dsound.c 2011-10-21 18:38:36.000000000 +0000 @@ -1262,6 +1262,116 @@ ok(rc==DS_OK,"DirectSoundEnumerateA() failed: %08x\n",rc); } +static void test_hw_buffers(void) +{ + IDirectSound *ds; + IDirectSoundBuffer *primary, *primary2, **secondaries, *secondary; + IDirectSoundBuffer8 *buf8; + DSCAPS caps; + DSBCAPS bufcaps; + DSBUFFERDESC bufdesc; + WAVEFORMATEX fmt; + UINT i; + HRESULT hr; + + hr = pDirectSoundCreate(NULL, &ds, NULL); + ok(hr == S_OK || hr == DSERR_NODRIVER || hr == DSERR_ALLOCATED || hr == E_FAIL, + "DirectSoundCreate failed: %08x\n", hr); + if(hr != S_OK) + return; + + caps.dwSize = sizeof(caps); + + hr = IDirectSound_GetCaps(ds, &caps); + ok(hr == S_OK, "GetCaps failed: %08x\n", hr); + + ok(caps.dwPrimaryBuffers == 1, "Got wrong number of primary buffers: %u\n", + caps.dwPrimaryBuffers); + + /* DSBCAPS_LOC* is ignored for primary buffers */ + bufdesc.dwSize = sizeof(bufdesc); + bufdesc.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_LOCHARDWARE | + DSBCAPS_PRIMARYBUFFER; + bufdesc.dwBufferBytes = 0; + bufdesc.dwReserved = 0; + bufdesc.lpwfxFormat = NULL; + bufdesc.guid3DAlgorithm = GUID_NULL; + + hr = IDirectSound_CreateSoundBuffer(ds, &bufdesc, &primary, NULL); + ok(hr == S_OK, "CreateSoundBuffer failed: %08x\n", hr); + if(hr != S_OK){ + IDirectSound_Release(ds); + return; + } + + bufdesc.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_LOCSOFTWARE | + DSBCAPS_PRIMARYBUFFER; + + hr = IDirectSound_CreateSoundBuffer(ds, &bufdesc, &primary2, NULL); + ok(hr == S_OK, "CreateSoundBuffer failed: %08x\n", hr); + ok(primary == primary2, "Got different primary buffers: %p, %p\n", primary, primary2); + if(hr == S_OK) + IDirectSoundBuffer_Release(primary2); + + buf8 = (IDirectSoundBuffer8 *)0xDEADBEEF; + hr = IDirectSoundBuffer_QueryInterface(primary, &IID_IDirectSoundBuffer8, + (void**)&buf8); + ok(hr == E_NOINTERFACE, "QueryInterface gave wrong failure: %08x\n", hr); + ok(buf8 == NULL, "Pointer didn't get set to NULL\n"); + + fmt.wFormatTag = WAVE_FORMAT_PCM; + fmt.nChannels = 2; + fmt.nSamplesPerSec = 48000; + fmt.wBitsPerSample = 16; + fmt.nBlockAlign = fmt.nChannels * fmt.wBitsPerSample / 8; + fmt.nAvgBytesPerSec = fmt.nBlockAlign * fmt.nSamplesPerSec; + fmt.cbSize = 0; + + bufdesc.lpwfxFormat = &fmt; + bufdesc.dwBufferBytes = fmt.nSamplesPerSec * fmt.nBlockAlign / 10; + bufdesc.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_LOCHARDWARE | + DSBCAPS_CTRLVOLUME; + + secondaries = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, + sizeof(IDirectSoundBuffer *) * caps.dwMaxHwMixingAllBuffers); + + /* try to fill all of the hw buffers */ + trace("dwMaxHwMixingAllBuffers: %u\n", caps.dwMaxHwMixingAllBuffers); + trace("dwMaxHwMixingStaticBuffers: %u\n", caps.dwMaxHwMixingStaticBuffers); + trace("dwMaxHwMixingStreamingBuffers: %u\n", caps.dwMaxHwMixingStreamingBuffers); + for(i = 0; i < caps.dwMaxHwMixingAllBuffers; ++i){ + hr = IDirectSound_CreateSoundBuffer(ds, &bufdesc, &secondaries[i], NULL); + ok(hr == S_OK || hr == E_NOTIMPL || broken(hr == DSERR_CONTROLUNAVAIL), + "CreateSoundBuffer(%u) failed: %08x\n", i, hr); + if(hr != S_OK) + break; + + bufcaps.dwSize = sizeof(bufcaps); + hr = IDirectSoundBuffer_GetCaps(secondaries[i], &bufcaps); + ok(hr == S_OK, "GetCaps failed: %08x\n", hr); + ok((bufcaps.dwFlags & DSBCAPS_LOCHARDWARE) != 0, + "Buffer wasn't allocated in hardware, dwFlags: %x\n", bufcaps.dwFlags); + } + + /* see if we can create one more */ + hr = IDirectSound_CreateSoundBuffer(ds, &bufdesc, &secondary, NULL); + ok((i == caps.dwMaxHwMixingAllBuffers && hr == DSERR_ALLOCATED) || /* out of hw buffers */ + (caps.dwMaxHwMixingAllBuffers == 0 && hr == DSERR_INVALIDCALL) || /* no hw buffers at all */ + hr == E_NOTIMPL || /* don't support hw buffers */ + broken(hr == DSERR_CONTROLUNAVAIL) || /* vmware winxp, others? */ + broken(hr == S_OK) /* broken driver allows more hw bufs than dscaps claims */, + "CreateSoundBuffer gave wrong error: %08x\n", hr); + if(hr == S_OK) + IDirectSoundBuffer_Release(secondary); + + for(i = 0; i < caps.dwMaxHwMixingAllBuffers; ++i) + if(secondaries[i]) + IDirectSoundBuffer_Release(secondaries[i]); + + IDirectSoundBuffer_Release(primary); + IDirectSound_Release(ds); +} + START_TEST(dsound) { HMODULE hDsound; @@ -1296,6 +1406,7 @@ IDirectSound_tests(); dsound_tests(); + test_hw_buffers(); FreeLibrary(hDsound); } diff -Nru wine1.3-1.3.30/dlls/dswave/dswave.c wine1.3-1.3.31/dlls/dswave/dswave.c --- wine1.3-1.3.30/dlls/dswave/dswave.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/dswave/dswave.c 2011-10-21 18:38:36.000000000 +0000 @@ -361,8 +361,8 @@ if (pDesc->dwValidData & DMUS_OBJ_DATE) This->pDesc->ftDate = pDesc->ftDate; if (pDesc->dwValidData & DMUS_OBJ_MEMORY) { - memcpy (&This->pDesc->llMemLength, &pDesc->llMemLength, sizeof (pDesc->llMemLength)); - memcpy (This->pDesc->pbMemData, pDesc->pbMemData, sizeof (pDesc->pbMemData)); + This->pDesc->llMemLength = pDesc->llMemLength; + memcpy (This->pDesc->pbMemData, pDesc->pbMemData, pDesc->llMemLength); } if (pDesc->dwValidData & DMUS_OBJ_STREAM) { /* according to MSDN, we copy the stream */ diff -Nru wine1.3-1.3.30/dlls/explorerframe/nstc.c wine1.3-1.3.31/dlls/explorerframe/nstc.c --- wine1.3-1.3.30/dlls/explorerframe/nstc.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/explorerframe/nstc.c 2011-10-21 18:38:36.000000000 +0000 @@ -1114,7 +1114,7 @@ if(!count) return E_INVALIDARG; - array = HeapAlloc(GetProcessHeap(), 0, sizeof(LPITEMIDLIST*)*count); + array = HeapAlloc(GetProcessHeap(), 0, sizeof(LPITEMIDLIST)*count); i = 0; LIST_FOR_EACH_ENTRY(root, &This->roots, nstc_root, entry) diff -Nru wine1.3-1.3.30/dlls/gameux/gameexplorer.c wine1.3-1.3.31/dlls/gameux/gameexplorer.c --- wine1.3-1.3.30/dlls/gameux/gameexplorer.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gameux/gameexplorer.c 2011-10-21 18:38:36.000000000 +0000 @@ -387,6 +387,13 @@ return hr; } + +struct parse_gdf_thread_param +{ + struct GAMEUX_GAME_DATA *GameData; + HRESULT hr; +}; + /******************************************************************************* * GAMEUX_ParseGDFBinary * @@ -399,8 +406,10 @@ * GDF will be stored in other fields of this * structure. */ -static HRESULT GAMEUX_ParseGDFBinary(struct GAMEUX_GAME_DATA *GameData) +static DWORD WINAPI GAMEUX_ParseGDFBinary(void *thread_param) { + struct parse_gdf_thread_param *ctx = thread_param; + struct GAMEUX_GAME_DATA *GameData = ctx->GameData; static const WCHAR sRes[] = {'r','e','s',':','/','/',0}; static const WCHAR sDATA[] = {'D','A','T','A',0}; static const WCHAR sSlash[] = {'/',0}; @@ -423,6 +432,8 @@ lstrcatW(sResourcePath, sSlash); lstrcatW(sResourcePath, ID_GDF_XML_STR); + CoInitialize(NULL); + hr = CoCreateInstance(&CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument, (void**)&document); @@ -474,8 +485,11 @@ IXMLDOMDocument_Release(document); } - return hr; + CoUninitialize(); + ctx->hr = hr; + return 0; } + /******************************************************************* * GAMEUX_RemoveRegistryRecord * @@ -548,12 +562,34 @@ /* load data from GDF binary */ if(SUCCEEDED(hr)) - hr = GAMEUX_ParseGDFBinary(&GameData); + { + struct parse_gdf_thread_param thread_param; + HANDLE thread; + DWORD ret; + + thread_param.GameData = &GameData; + if(!(thread = CreateThread(NULL, 0, GAMEUX_ParseGDFBinary, &thread_param, 0, &ret))) + { + ERR("Failed to create thread.\n"); + hr = E_FAIL; + goto done; + } + ret = WaitForSingleObject(thread, INFINITE); + CloseHandle(thread); + if(ret != WAIT_OBJECT_0) + { + ERR("Wait failed (%#x).\n", ret); + hr = E_FAIL; + goto done; + } + hr = thread_param.hr; + } /* save data to registry */ if(SUCCEEDED(hr)) hr = GAMEUX_WriteRegistryRecord(&GameData); +done: GAMEUX_uninitGameData(&GameData); TRACE("returning 0x%08x\n", hr); return hr; diff -Nru wine1.3-1.3.30/dlls/gameux/tests/gameexplorer.c wine1.3-1.3.31/dlls/gameux/tests/gameexplorer.c --- wine1.3-1.3.30/dlls/gameux/tests/gameexplorer.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gameux/tests/gameexplorer.c 2011-10-21 18:38:36.000000000 +0000 @@ -656,30 +656,42 @@ } } -START_TEST(gameexplorer) +static void run_tests(void) { - HRESULT r; BOOL gameExplorerAvailable = FALSE; BOOL gameExplorer2Available = FALSE; - if(_loadDynamicRoutines()) - { - r = CoInitialize( NULL ); - ok( r == S_OK, "failed to init COM\n"); + test_create(&gameExplorerAvailable, &gameExplorer2Available); - test_create(&gameExplorerAvailable, &gameExplorer2Available); + if(gameExplorerAvailable) + test_add_remove_game(); - if(gameExplorerAvailable) - test_add_remove_game(); + if(gameExplorer2Available) + test_install_uninstall_game(); +} - if(gameExplorer2Available) - test_install_uninstall_game(); +START_TEST(gameexplorer) +{ + if(_loadDynamicRoutines()) + { + HRESULT hr; + + hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); + ok(hr == S_OK, "Failed to initialize COM, hr %#x.\n", hr); + trace("Running apartment threaded tests.\n"); + run_tests(); + if(SUCCEEDED(hr)) + CoUninitialize(); + + hr = CoInitializeEx(NULL, COINIT_MULTITHREADED); + ok(hr == S_OK, "Failed to initialize COM, hr %#x.\n", hr); + trace("Running multithreaded tests.\n"); + run_tests(); + if(SUCCEEDED(hr)) + CoUninitialize(); } else /* this is not a failure, because both procedures loaded by address * are always available on systems which has gameux.dll */ win_skip("too old system, cannot load required dynamic procedures\n"); - - - CoUninitialize(); } diff -Nru wine1.3-1.3.30/dlls/gdi32/bitblt.c wine1.3-1.3.31/dlls/gdi32/bitblt.c --- wine1.3-1.3.30/dlls/gdi32/bitblt.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/bitblt.c 2011-10-21 18:38:36.000000000 +0000 @@ -47,6 +47,60 @@ *j = tmp; } +BOOL intersect_vis_rectangles( struct bitblt_coords *dst, struct bitblt_coords *src ) +{ + RECT rect; + + /* intersect the rectangles */ + + if ((src->width == dst->width) && (src->height == dst->height)) /* no stretching */ + { + offset_rect( &src->visrect, dst->x - src->x, dst->y - src->y ); + intersect_rect( &rect, &src->visrect, &dst->visrect ); + src->visrect = dst->visrect = rect; + offset_rect( &src->visrect, src->x - dst->x, src->y - dst->y ); + } + else /* stretching */ + { + /* map source rectangle into destination coordinates */ + rect = src->visrect; + offset_rect( &rect, -min( src->x, src->x + src->width + 1), + -min( src->y, src->y + src->height + 1) ); + rect.left = dst->x + rect.left * dst->width / abs(src->width); + rect.top = dst->y + rect.top * dst->height / abs(src->height); + rect.right = dst->x + rect.right * dst->width / abs(src->width); + rect.bottom = dst->y + rect.bottom * dst->height / abs(src->height); + if (rect.left > rect.right) swap_ints( &rect.left, &rect.right ); + if (rect.top > rect.bottom) swap_ints( &rect.top, &rect.bottom ); + + /* avoid rounding errors */ + rect.left--; + rect.top--; + rect.right++; + rect.bottom++; + if (!intersect_rect( &dst->visrect, &rect, &dst->visrect )) return FALSE; + + /* map destination rectangle back to source coordinates */ + rect = dst->visrect; + offset_rect( &rect, -min( dst->x, dst->x + dst->width + 1), + -min( dst->y, dst->y + dst->height + 1) ); + rect.left = src->x + rect.left * src->width / abs(dst->width); + rect.top = src->y + rect.top * src->height / abs(dst->height); + rect.right = src->x + rect.right * src->width / abs(dst->width); + rect.bottom = src->y + rect.bottom * src->height / abs(dst->height); + if (rect.left > rect.right) swap_ints( &rect.left, &rect.right ); + if (rect.top > rect.bottom) swap_ints( &rect.top, &rect.bottom ); + + /* avoid rounding errors */ + rect.left--; + rect.top--; + rect.right++; + rect.bottom++; + if (!intersect_rect( &src->visrect, &rect, &src->visrect )) return FALSE; + } + return TRUE; +} + static BOOL get_vis_rectangles( DC *dc_dst, struct bitblt_coords *dst, DC *dc_src, struct bitblt_coords *src ) { @@ -65,12 +119,10 @@ dst->height = rect.bottom - rect.top; if (dst->layout & LAYOUT_RTL && dst->layout & LAYOUT_BITMAPORIENTATIONPRESERVED) { - swap_ints( &rect.left, &rect.right ); - dst->x = rect.left; - dst->width = rect.right - rect.left; + dst->x += dst->width; + dst->width = -dst->width; } - if (rect.left > rect.right) { swap_ints( &rect.left, &rect.right ); rect.left++; rect.right++; } - if (rect.top > rect.bottom) { swap_ints( &rect.top, &rect.bottom ); rect.top++; rect.bottom++; } + get_bounding_rect( &rect, dst->x, dst->y, dst->width, dst->height ); if (get_clip_box( dc_dst, &clip )) intersect_rect( &dst->visrect, &rect, &clip ); @@ -92,12 +144,10 @@ src->height = rect.bottom - rect.top; if (src->layout & LAYOUT_RTL && src->layout & LAYOUT_BITMAPORIENTATIONPRESERVED) { - swap_ints( &rect.left, &rect.right ); - src->x = rect.left; - src->width = rect.right - rect.left; + src->x += src->width; + src->width = -src->width; } - if (rect.left > rect.right) { swap_ints( &rect.left, &rect.right ); rect.left++; rect.right++; } - if (rect.top > rect.bottom) { swap_ints( &rect.top, &rect.bottom ); rect.top++; rect.bottom++; } + get_bounding_rect( &rect, src->x, src->y, src->width, src->height ); /* source is not clipped */ if (dc_src->header.type == OBJ_MEMDC) @@ -108,54 +158,7 @@ if (is_rect_empty( &src->visrect )) return FALSE; if (is_rect_empty( &dst->visrect )) return FALSE; - /* intersect the rectangles */ - - if ((src->width == dst->width) && (src->height == dst->height)) /* no stretching */ - { - offset_rect( &src->visrect, dst->x - src->x, dst->y - src->y ); - intersect_rect( &rect, &src->visrect, &dst->visrect ); - src->visrect = dst->visrect = rect; - offset_rect( &src->visrect, src->x - dst->x, src->y - dst->y ); - } - else /* stretching */ - { - /* map source rectangle into destination coordinates */ - rect = src->visrect; - offset_rect( &rect, -min( src->x, src->x + src->width + 1), - -min( src->y, src->y + src->height + 1) ); - rect.left = dst->x + rect.left * dst->width / abs(src->width); - rect.top = dst->y + rect.top * dst->height / abs(src->height); - rect.right = dst->x + rect.right * dst->width / abs(src->width); - rect.bottom = dst->y + rect.bottom * dst->height / abs(src->height); - if (rect.left > rect.right) swap_ints( &rect.left, &rect.right ); - if (rect.top > rect.bottom) swap_ints( &rect.top, &rect.bottom ); - - /* avoid rounding errors */ - rect.left--; - rect.top--; - rect.right++; - rect.bottom++; - if (!intersect_rect( &dst->visrect, &rect, &dst->visrect )) return FALSE; - - /* map destination rectangle back to source coordinates */ - rect = dst->visrect; - offset_rect( &rect, -min( dst->x, dst->x + dst->width + 1), - -min( dst->y, dst->y + dst->height + 1) ); - rect.left = src->x + rect.left * src->width / abs(dst->width); - rect.top = src->y + rect.top * src->height / abs(dst->height); - rect.right = src->x + rect.right * src->width / abs(dst->width); - rect.bottom = src->y + rect.bottom * src->height / abs(dst->height); - if (rect.left > rect.right) swap_ints( &rect.left, &rect.right ); - if (rect.top > rect.bottom) swap_ints( &rect.top, &rect.bottom ); - - /* avoid rounding errors */ - rect.left--; - rect.top--; - rect.right++; - rect.bottom++; - if (!intersect_rect( &src->visrect, &rect, &src->visrect )) return FALSE; - } - return TRUE; + return intersect_vis_rectangles( dst, src ); } void free_heap_bits( struct gdi_image_bits *bits ) @@ -163,8 +166,8 @@ HeapFree( GetProcessHeap(), 0, bits->ptr ); } -static DWORD convert_bits( const BITMAPINFO *src_info, struct bitblt_coords *src, - BITMAPINFO *dst_info, struct gdi_image_bits *bits ) +DWORD convert_bits( const BITMAPINFO *src_info, struct bitblt_coords *src, + BITMAPINFO *dst_info, struct gdi_image_bits *bits, BOOL add_alpha ) { void *ptr; DWORD err; @@ -173,7 +176,7 @@ if (!(ptr = HeapAlloc( GetProcessHeap(), 0, get_dib_image_size( dst_info )))) return ERROR_OUTOFMEMORY; - err = convert_bitmapinfo( src_info, bits->ptr, src, dst_info, ptr ); + err = convert_bitmapinfo( src_info, bits->ptr, src, dst_info, ptr, add_alpha ); if (bits->free) bits->free( bits ); bits->ptr = ptr; bits->is_copy = TRUE; @@ -181,9 +184,9 @@ return err; } -static DWORD stretch_bits( const BITMAPINFO *src_info, struct bitblt_coords *src, - BITMAPINFO *dst_info, struct bitblt_coords *dst, - struct gdi_image_bits *bits, int mode ) +DWORD stretch_bits( const BITMAPINFO *src_info, struct bitblt_coords *src, + BITMAPINFO *dst_info, struct bitblt_coords *dst, + struct gdi_image_bits *bits, int mode ) { void *ptr; DWORD err; @@ -202,6 +205,24 @@ return err; } +static DWORD blend_bits( const BITMAPINFO *src_info, const struct gdi_image_bits *src_bits, + struct bitblt_coords *src, BITMAPINFO *dst_info, + struct gdi_image_bits *dst_bits, struct bitblt_coords *dst, BLENDFUNCTION blend ) +{ + if (!dst_bits->is_copy) + { + int size = get_dib_image_size( dst_info ); + void *ptr = HeapAlloc( GetProcessHeap(), 0, size ); + if (!ptr) return ERROR_OUTOFMEMORY; + memcpy( ptr, dst_bits->ptr, size ); + if (dst_bits->free) dst_bits->free( dst_bits ); + dst_bits->ptr = ptr; + dst_bits->is_copy = TRUE; + dst_bits->free = free_heap_bits; + } + return blend_bitmapinfo( src_info, src_bits->ptr, src, dst_info, dst_bits->ptr, dst, blend ); +} + /*********************************************************************** * null driver fallback implementations */ @@ -256,7 +277,7 @@ dst_info->bmiHeader.biClrUsed = 1; } - if (!(err = convert_bits( src_info, src, dst_info, &bits ))) + if (!(err = convert_bits( src_info, src, dst_info, &bits, FALSE ))) { /* get rid of the fake 1-bpp table */ if (dst_info->bmiHeader.biClrUsed == 1) dst_info->bmiHeader.biClrUsed = 0; @@ -292,7 +313,7 @@ src_dev = GET_DC_PHYSDEV( dc_src, pGetImage ); err = src_dev->funcs->pGetImage( src_dev, 0, src_info, &bits, src ); release_dc_ptr( dc_src ); - if (err) return FALSE; + if (err) goto done; dst_dev = GET_DC_PHYSDEV( dc_dst, pBlendImage ); memcpy( dst_info, src_info, FIELD_OFFSET( BITMAPINFO, bmiColors[256] )); @@ -313,7 +334,7 @@ src_info->bmiHeader.biClrUsed = 2; } - err = convert_bits( src_info, src, dst_info, &bits ); + err = convert_bits( src_info, src, dst_info, &bits, TRUE ); if (!err) err = dst_dev->funcs->pBlendImage( dst_dev, dst_info, &bits, src, dst, func ); } @@ -326,10 +347,57 @@ } if (bits.free) bits.free( &bits ); +done: + if (err) SetLastError( err ); return !err; } +DWORD nulldrv_BlendImage( PHYSDEV dev, BITMAPINFO *info, const struct gdi_image_bits *bits, + struct bitblt_coords *src, struct bitblt_coords *dst, BLENDFUNCTION blend ) +{ + char buffer[FIELD_OFFSET( BITMAPINFO, bmiColors[256] )]; + BITMAPINFO *dst_info = (BITMAPINFO *)buffer; + struct gdi_image_bits dst_bits; + struct bitblt_coords orig_dst; + DC *dc = get_nulldrv_dc( dev ); + DWORD err; + + if (info->bmiHeader.biPlanes != 1) goto update_format; + if (info->bmiHeader.biBitCount != 32) goto update_format; + if (info->bmiHeader.biCompression == BI_BITFIELDS) + { + DWORD *masks = (DWORD *)info->bmiColors; + if (masks[0] != 0xff0000 || masks[1] != 0x00ff00 || masks[2] != 0x0000ff) + goto update_format; + } + + if (!bits) return ERROR_SUCCESS; + if ((src->width != dst->width) || (src->height != dst->height)) return ERROR_TRANSFORM_NOT_SUPPORTED; + + dev = GET_DC_PHYSDEV( dc, pGetImage ); + orig_dst = *dst; + err = dev->funcs->pGetImage( dev, 0, dst_info, &dst_bits, dst ); + if (err) return err; + + dev = GET_DC_PHYSDEV( dc, pPutImage ); + err = blend_bits( info, bits, src, dst_info, &dst_bits, dst, blend ); + if (!err) err = dev->funcs->pPutImage( dev, 0, 0, dst_info, &dst_bits, dst, &orig_dst, SRCCOPY ); + + if (dst_bits.free) dst_bits.free( &dst_bits ); + return err; + +update_format: + if (blend.AlphaFormat & AC_SRC_ALPHA) /* source alpha requires A8R8G8B8 format */ + return ERROR_INVALID_PARAMETER; + + info->bmiHeader.biPlanes = 1; + info->bmiHeader.biBitCount = 32; + info->bmiHeader.biCompression = BI_RGB; + info->bmiHeader.biClrUsed = 0; + return ERROR_BAD_FORMAT; +} + /*********************************************************************** * PatBlt (GDI32.@) */ @@ -776,6 +844,14 @@ SetLastError( ERROR_INVALID_PARAMETER ); ret = FALSE; } + else if (dcSrc == dcDst && src.x + src.width > dst.x && src.x < dst.x + dst.width && + src.y + src.height > dst.y && src.y < dst.y + dst.height) + { + WARN( "Overlapping coords: (%d,%d), %dx%d and (%d,%d), %dx%d\n", + src.x, src.y, src.width, src.height, dst.x, dst.y, dst.width, dst.height ); + SetLastError( ERROR_INVALID_PARAMETER ); + ret = FALSE; + } else if (!ret) ret = dst_dev->funcs->pAlphaBlend( dst_dev, &dst, src_dev, &src, blendFunction ); release_dc_ptr( dcDst ); diff -Nru wine1.3-1.3.30/dlls/gdi32/bitmap.c wine1.3-1.3.31/dlls/gdi32/bitmap.c --- wine1.3-1.3.30/dlls/gdi32/bitmap.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/bitmap.c 2011-10-21 18:38:36.000000000 +0000 @@ -762,7 +762,7 @@ */ static BOOL BITMAP_DeleteObject( HGDIOBJ handle ) { - const DC_FUNCTIONS *funcs; + const struct gdi_dc_funcs *funcs; BITMAPOBJ *bmp = GDI_GetObjPtr( handle, OBJ_BITMAP ); if (!bmp) return FALSE; diff -Nru wine1.3-1.3.30/dlls/gdi32/dc.c wine1.3-1.3.31/dlls/gdi32/dc.c --- wine1.3-1.3.30/dlls/gdi32/dc.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/dc.c 2011-10-21 18:38:36.000000000 +0000 @@ -154,6 +154,12 @@ return NULL; } dc->nulldrv.hdc = dc->hSelf; + + if (font_driver && !font_driver->pCreateDC( &dc->physDev, NULL, NULL, NULL, NULL )) + { + free_dc_ptr( dc ); + return NULL; + } return dc; } @@ -598,7 +604,7 @@ { HDC hdc; DC * dc; - const DC_FUNCTIONS *funcs; + const struct gdi_dc_funcs *funcs; WCHAR buf[300]; GDI_CheckNotLock(); diff -Nru wine1.3-1.3.30/dlls/gdi32/dib.c wine1.3-1.3.31/dlls/gdi32/dib.c --- wine1.3-1.3.30/dlls/gdi32/dib.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/dib.c 2011-10-21 18:38:36.000000000 +0000 @@ -252,14 +252,19 @@ BYTE skip, num, data; BYTE *out_bits, *in_bits = bits->ptr; - *clip = NULL; + if (clip) *clip = NULL; assert( info->bmiHeader.biBitCount == 4 || info->bmiHeader.biBitCount == 8 ); - out_bits = HeapAlloc( GetProcessHeap(), 0, get_dib_image_size( info ) ); - *clip = CreateRectRgn( 0, 0, 0, 0 ); - run = CreateRectRgn( 0, 0, 0, 0 ); - if (!out_bits || !*clip || !run) goto fail; + out_bits = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, get_dib_image_size( info ) ); + if (!out_bits) goto fail; + + if (clip) + { + *clip = CreateRectRgn( 0, 0, 0, 0 ); + run = CreateRectRgn( 0, 0, 0, 0 ); + if (!*clip || !run) goto fail; + } x = left = right = 0; y = height - 1; @@ -299,7 +304,7 @@ { if (data < 3) { - if(left != right) + if(left != right && clip) { SetRectRgn( run, left, y, right, y + 1 ); CombineRgn( *clip, run, *clip, RGN_OR ); @@ -365,7 +370,7 @@ } done: - DeleteObject( run ); + if (run) DeleteObject( run ); if (bits->free) bits->free( bits ); bits->ptr = out_bits; @@ -376,75 +381,159 @@ fail: if (run) DeleteObject( run ); - if (*clip) DeleteObject( *clip ); + if (clip && *clip) DeleteObject( *clip ); HeapFree( GetProcessHeap(), 0, out_bits ); return FALSE; } -/* nulldrv fallback implementation using SetDIBits/StretchBlt */ INT nulldrv_StretchDIBits( PHYSDEV dev, INT xDst, INT yDst, INT widthDst, INT heightDst, INT xSrc, INT ySrc, INT widthSrc, INT heightSrc, const void *bits, - BITMAPINFO *info, UINT coloruse, DWORD rop ) + BITMAPINFO *src_info, UINT coloruse, DWORD rop ) { DC *dc = get_nulldrv_dc( dev ); - INT ret; - LONG height; - HBITMAP hBitmap; - HDC hdcMem; + char dst_buffer[FIELD_OFFSET( BITMAPINFO, bmiColors[256] )]; + BITMAPINFO *dst_info = (BITMAPINFO *)dst_buffer; + struct bitblt_coords src, dst; + struct gdi_image_bits src_bits; + DWORD err; + HRGN clip = NULL; + INT ret = 0; + INT height = abs( src_info->bmiHeader.biHeight ); + BOOL top_down = src_info->bmiHeader.biHeight < 0, non_stretch_from_origin = FALSE; + RECT rect, clip_rect; - /* make sure we have a real implementation for StretchBlt and PutImage */ - if (GET_DC_PHYSDEV( dc, pStretchBlt ) == dev || GET_DC_PHYSDEV( dc, pPutImage ) == dev) - return 0; + TRACE("%d %d %d %d <- %d %d %d %d rop %08x\n", xDst, yDst, widthDst, heightDst, + xSrc, ySrc, widthSrc, heightSrc, rop); + + src_bits.ptr = (void*)bits; + src_bits.is_copy = FALSE; + src_bits.free = NULL; + + if (coloruse == DIB_PAL_COLORS && !fill_color_table_from_palette( src_info, dev->hdc )) return 0; + + rect.left = xDst; + rect.top = yDst; + rect.right = xDst + widthDst; + rect.bottom = yDst + heightDst; + LPtoDP( dc->hSelf, (POINT *)&rect, 2 ); + dst.x = rect.left; + dst.y = rect.top; + dst.width = rect.right - rect.left; + dst.height = rect.bottom - rect.top; + + if (dc->layout & LAYOUT_RTL && rop & NOMIRRORBITMAP) + { + dst.x += dst.width; + dst.width = -dst.width; + } + rop &= ~NOMIRRORBITMAP; + + src.x = xSrc; + src.width = widthSrc; + src.y = ySrc; + src.height = heightSrc; - height = info->bmiHeader.biHeight; + if (src.x == 0 && src.y == 0 && src.width == dst.width && src.height == dst.height) + non_stretch_from_origin = TRUE; - if (xSrc == 0 && ySrc == 0 && widthDst == widthSrc && heightDst == heightSrc && - info->bmiHeader.biCompression == BI_RGB) + if (src_info->bmiHeader.biCompression == BI_RLE4 || src_info->bmiHeader.biCompression == BI_RLE8) { - /* Windows appears to have a fast case optimization - * that uses the wrong origin for top-down DIBs */ - if (height < 0 && heightSrc < abs(height)) ySrc = abs(height) - heightSrc; - - if (xDst == 0 && yDst == 0 && info->bmiHeader.biCompression == BI_RGB && rop == SRCCOPY) - { - BITMAP bm; - hBitmap = GetCurrentObject( dev->hdc, OBJ_BITMAP ); - if (GetObjectW( hBitmap, sizeof(bm), &bm ) && - bm.bmWidth == widthSrc && bm.bmHeight == heightSrc && - bm.bmBitsPixel == info->bmiHeader.biBitCount && bm.bmPlanes == 1) - { - /* fast path */ - return SetDIBits( dev->hdc, hBitmap, 0, abs( height ), bits, info, coloruse ); - } + BOOL want_clip = non_stretch_from_origin && (rop == SRCCOPY); + if (!build_rle_bitmap( src_info, &src_bits, want_clip ? &clip : NULL )) return 0; + } + + if (rop != SRCCOPY || non_stretch_from_origin) + { + if (dst.width == 1 && src.width > 1) src.width--; + if (dst.height == 1 && src.height > 1) src.height--; + } + + if (rop != SRCCOPY) + { + if (dst.width < 0 && dst.width == src.width) + { + /* This is off-by-one, but that's what Windows does */ + dst.x += dst.width; + src.x += src.width; + dst.width = -dst.width; + src.width = -src.width; + } + if (dst.height < 0 && dst.height == src.height) + { + dst.y += dst.height; + src.y += src.height; + dst.height = -dst.height; + src.height = -src.height; } } - hdcMem = CreateCompatibleDC( dev->hdc ); - hBitmap = CreateCompatibleBitmap( dev->hdc, info->bmiHeader.biWidth, height ); - SelectObject( hdcMem, hBitmap ); - if (coloruse == DIB_PAL_COLORS) - SelectPalette( hdcMem, GetCurrentObject( dev->hdc, OBJ_PAL ), FALSE ); + if (!top_down || (rop == SRCCOPY && !non_stretch_from_origin)) src.y = height - src.y - src.height; + + if (src.y >= height && src.y + src.height + 1 < height) + src.y = height - 1; + else if (src.y > 0 && src.y + src.height + 1 < 0) + src.y = -src.height - 1; - if (info->bmiHeader.biCompression == BI_RLE4 || info->bmiHeader.biCompression == BI_RLE8) + get_bounding_rect( &rect, src.x, src.y, src.width, src.height ); + + src.visrect.left = 0; + src.visrect.right = src_info->bmiHeader.biWidth; + src.visrect.top = 0; + src.visrect.bottom = height; + if (!intersect_rect( &src.visrect, &src.visrect, &rect )) goto done; + + get_bounding_rect( &rect, dst.x, dst.y, dst.width, dst.height ); + + if (get_clip_box( dc, &clip_rect )) + intersect_rect( &dst.visrect, &rect, &clip_rect ); + else + dst.visrect = rect; + if (is_rect_empty( &dst.visrect )) goto done; + + if (!intersect_vis_rectangles( &dst, &src )) goto done; + + if (clip) OffsetRgn( clip, dst.x - src.x, dst.y - src.y ); + + dev = GET_DC_PHYSDEV( dc, pPutImage ); + memcpy( dst_info, src_info, FIELD_OFFSET( BITMAPINFO, bmiColors[256] )); + err = dev->funcs->pPutImage( dev, 0, clip, dst_info, &src_bits, &src, &dst, rop ); + if (err == ERROR_BAD_FORMAT) + { + /* 1-bpp destination without a color table requires a fake 1-entry table + * that contains only the background color */ + if (dst_info->bmiHeader.biBitCount == 1 && !dst_info->bmiHeader.biClrUsed) + { + COLORREF color = GetBkColor( dev->hdc ); + dst_info->bmiColors[0].rgbRed = GetRValue( color ); + dst_info->bmiColors[0].rgbGreen = GetGValue( color ); + dst_info->bmiColors[0].rgbBlue = GetBValue( color ); + dst_info->bmiColors[0].rgbReserved = 0; + dst_info->bmiHeader.biClrUsed = 1; + } + + if (!(err = convert_bits( src_info, &src, dst_info, &src_bits, FALSE ))) + { + /* get rid of the fake 1-bpp table */ + if (dst_info->bmiHeader.biClrUsed == 1) dst_info->bmiHeader.biClrUsed = 0; + err = dev->funcs->pPutImage( dev, 0, clip, dst_info, &src_bits, &src, &dst, rop ); + } + } + + if (err == ERROR_TRANSFORM_NOT_SUPPORTED) { - /* when RLE compression is used, there may be some gaps (ie the DIB doesn't - * contain all the rectangle described in bmiHeader, but only part of it. - * This mean that those undescribed pixels must be left untouched. - * So, we first copy on a memory bitmap the current content of the - * destination rectangle, blit the DIB bits on top of it - hence leaving - * the gaps untouched -, and blitting the rectangle back. - * This insure that gaps are untouched on the destination rectangle - */ - StretchBlt( hdcMem, xSrc, abs(height) - heightSrc - ySrc, widthSrc, heightSrc, - dev->hdc, xDst, yDst, widthDst, heightDst, rop ); - } - ret = SetDIBits( hdcMem, hBitmap, 0, abs( height ), bits, info, coloruse ); - if (ret) StretchBlt( dev->hdc, xDst, yDst, widthDst, heightDst, - hdcMem, xSrc, abs(height) - heightSrc - ySrc, widthSrc, heightSrc, rop ); - DeleteDC( hdcMem ); - DeleteObject( hBitmap ); + memcpy( src_info, dst_info, FIELD_OFFSET( BITMAPINFO, bmiColors[256] )); + err = stretch_bits( src_info, &src, dst_info, &dst, &src_bits, GetStretchBltMode( dev->hdc ) ); + if (!err) err = dev->funcs->pPutImage( dev, 0, NULL, dst_info, &src_bits, &src, &dst, rop ); + } + if (err) ret = 0; + else if (rop == SRCCOPY) ret = height; + else ret = src_info->bmiHeader.biHeight; + +done: + if (src_bits.free) src_bits.free( &src_bits ); + if (clip) DeleteObject( clip ); return ret; } @@ -519,6 +608,15 @@ SetLastError( ERROR_INVALID_PARAMETER ); return 0; } + if (src_info->bmiHeader.biCompression == BI_BITFIELDS) + { + DWORD *masks = (DWORD *)src_info->bmiColors; + if (!masks[0] || !masks[1] || !masks[2]) + { + SetLastError( ERROR_INVALID_PARAMETER ); + return 0; + } + } src_bits.ptr = (void *)bits; src_bits.is_copy = FALSE; @@ -591,7 +689,7 @@ ptr = HeapAlloc( GetProcessHeap(), 0, get_dib_image_size( dst_info )); if (ptr) { - err = convert_bitmapinfo( src_info, src_bits.ptr, &src, dst_info, ptr ); + err = convert_bitmapinfo( src_info, src_bits.ptr, &src, dst_info, ptr, FALSE ); if (src_bits.free) src_bits.free( &src_bits ); src_bits.ptr = ptr; src_bits.is_copy = TRUE; @@ -721,7 +819,7 @@ ptr = HeapAlloc( GetProcessHeap(), 0, get_dib_image_size( dst_info )); if (ptr) { - err = convert_bitmapinfo( src_info, src_bits.ptr, &src, dst_info, ptr ); + err = convert_bitmapinfo( src_info, src_bits.ptr, &src, dst_info, ptr, FALSE ); if (src_bits.free) src_bits.free( &src_bits ); src_bits.ptr = ptr; src_bits.is_copy = TRUE; @@ -1226,7 +1324,7 @@ else dst_info->bmiHeader.biHeight = -src.height; - convert_bitmapinfo( src_info, src_bits.ptr, &src, dst_info, bits ); + convert_bitmapinfo( src_info, src_bits.ptr, &src, dst_info, bits, FALSE ); if (src_bits.free) src_bits.free( &src_bits ); ret = lines; } diff -Nru wine1.3-1.3.30/dlls/gdi32/dibdrv/bitblt.c wine1.3-1.3.31/dlls/gdi32/dibdrv/bitblt.c --- wine1.3-1.3.30/dlls/gdi32/dibdrv/bitblt.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/dibdrv/bitblt.c 2011-10-21 18:38:36.000000000 +0000 @@ -473,6 +473,28 @@ RECT clipped_rect; const WINEREGION *clip_data; int i, start, end, overlap; + DWORD and = 0, xor = 0; + + switch (rop2) + { + case R2_NOT: and = ~0u; + /* fall through */ + case R2_WHITE: xor = ~0u; + /* fall through */ + case R2_BLACK: + if (clip) + { + clip_data = get_wine_region( clip ); + for (i = 0; i < clip_data->numRects; i++) + if (intersect_rect( &clipped_rect, dst_rect, clip_data->rects + i )) + dst->funcs->solid_rects( dst, 1, &clipped_rect, and, xor ); + release_wine_region( clip ); + } + else dst->funcs->solid_rects( dst, 1, dst_rect, and, xor ); + /* fall through */ + case R2_NOP: + return ERROR_SUCCESS; + } origin.x = src_rect->left; origin.y = src_rect->top; @@ -550,6 +572,35 @@ return ERROR_SUCCESS; } +static DWORD blend_rect( dib_info *dst, const RECT *dst_rect, const dib_info *src, const RECT *src_rect, + HRGN clip, BLENDFUNCTION blend ) +{ + POINT origin; + RECT clipped_rect; + const WINEREGION *clip_data; + int i; + + origin.x = src_rect->left; + origin.y = src_rect->top; + + if (clip == NULL) dst->funcs->blend_rect( dst, dst_rect, src, &origin, blend ); + else + { + clip_data = get_wine_region( clip ); + for (i = 0; i < clip_data->numRects; i++) + { + if (intersect_rect( &clipped_rect, dst_rect, clip_data->rects + i )) + { + origin.x = src_rect->left + clipped_rect.left - dst_rect->left; + origin.y = src_rect->top + clipped_rect.top - dst_rect->top; + dst->funcs->blend_rect( dst, &clipped_rect, src, &origin, blend ); + } + } + release_wine_region( clip ); + } + return ERROR_SUCCESS; +} + static DWORD copy_src_bits( dib_info *src, RECT *src_rect ) { int y, stride = get_dib_stride( src->width, src->bit_count ); @@ -884,6 +935,49 @@ return ret; } +/*********************************************************************** + * dibdrv_BlendImage + */ +DWORD dibdrv_BlendImage( PHYSDEV dev, BITMAPINFO *info, const struct gdi_image_bits *bits, + struct bitblt_coords *src, struct bitblt_coords *dst, BLENDFUNCTION blend ) +{ + dibdrv_physdev *pdev = get_dibdrv_pdev( dev ); + dib_info src_dib; + DWORD ret; + + TRACE( "%p %p\n", dev, info ); + + if (info->bmiHeader.biPlanes != 1) goto update_format; + if (info->bmiHeader.biBitCount != 32) goto update_format; + if (info->bmiHeader.biCompression == BI_BITFIELDS) + { + DWORD *masks = (DWORD *)info->bmiColors; + if (masks[0] != 0xff0000 || masks[1] != 0x00ff00 || masks[2] != 0x0000ff) + goto update_format; + } + + if (!bits) return ERROR_SUCCESS; + if ((src->width != dst->width) || (src->height != dst->height)) return ERROR_TRANSFORM_NOT_SUPPORTED; + + init_dib_info_from_bitmapinfo( &src_dib, info, bits->ptr, 0 ); + src_dib.bits.is_copy = bits->is_copy; + + ret = blend_rect( &pdev->dib, &dst->visrect, &src_dib, &src->visrect, pdev->clip, blend ); + + free_dib_info( &src_dib ); + return ret; + +update_format: + if (blend.AlphaFormat & AC_SRC_ALPHA) /* source alpha requires A8R8G8B8 format */ + return ERROR_INVALID_PARAMETER; + + info->bmiHeader.biPlanes = 1; + info->bmiHeader.biBitCount = 32; + info->bmiHeader.biCompression = BI_RGB; + info->bmiHeader.biClrUsed = 0; + return ERROR_BAD_FORMAT; +} + /**************************************************************************** * calc_1d_stretch_params (helper for stretch_bitmapinfo) * @@ -1034,13 +1128,7 @@ src_start.x, src_start.y, h_params.src_inc, v_params.src_inc, h_params.length, v_params.length); - rect.left = dst_start.x; - rect.top = dst_start.y; - rect.right = dst_end.x; - rect.bottom = dst_end.y; - - if (rect.right < rect.left) { INT tmp = rect.left; rect.left = rect.right+1; rect.right = tmp+1; } - if (rect.bottom < rect.top) { INT tmp = rect.top; rect.top = rect.bottom+1; rect.bottom = tmp+1; } + get_bounding_rect( &rect, dst_start.x, dst_start.y, dst_end.x - dst_start.x, dst_end.y - dst_start.y ); intersect_rect( &dst->visrect, &dst->visrect, &rect ); dst_start.x -= dst->visrect.left; @@ -1114,6 +1202,20 @@ return ERROR_SUCCESS; } +DWORD blend_bitmapinfo( const BITMAPINFO *src_info, void *src_bits, struct bitblt_coords *src, + const BITMAPINFO *dst_info, void *dst_bits, struct bitblt_coords *dst, + BLENDFUNCTION blend ) +{ + dib_info src_dib, dst_dib; + + if (!init_dib_info_from_bitmapinfo( &src_dib, src_info, src_bits, 0 ) ) + return ERROR_BAD_FORMAT; + if (!init_dib_info_from_bitmapinfo( &dst_dib, dst_info, dst_bits, 0 ) ) + return ERROR_BAD_FORMAT; + + return blend_rect( &dst_dib, &dst->visrect, &src_dib, &src->visrect, NULL, blend ); +} + /*********************************************************************** * dibdrv_StretchBlt */ @@ -1133,3 +1235,19 @@ release_dc_ptr( dc_dst ); return ret; } + +/*********************************************************************** + * dibdrv_AlphaBlend + */ +BOOL dibdrv_AlphaBlend( PHYSDEV dst_dev, struct bitblt_coords *dst, + PHYSDEV src_dev, struct bitblt_coords *src, BLENDFUNCTION blend ) +{ + BOOL ret; + DC *dc_dst = get_dc_ptr( dst_dev->hdc ); + + if (!dc_dst) return FALSE; + + ret = dc_dst->nulldrv.funcs->pAlphaBlend( &dc_dst->nulldrv, dst, src_dev, src, blend ); + release_dc_ptr( dc_dst ); + return ret; +} diff -Nru wine1.3-1.3.30/dlls/gdi32/dibdrv/dc.c wine1.3-1.3.31/dlls/gdi32/dibdrv/dc.c --- wine1.3-1.3.30/dlls/gdi32/dibdrv/dc.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/dibdrv/dc.c 2011-10-21 18:38:36.000000000 +0000 @@ -278,7 +278,7 @@ } DWORD convert_bitmapinfo( const BITMAPINFO *src_info, void *src_bits, struct bitblt_coords *src, - const BITMAPINFO *dst_info, void *dst_bits ) + const BITMAPINFO *dst_info, void *dst_bits, BOOL add_alpha ) { dib_info src_dib, dst_dib; DWORD ret; @@ -290,7 +290,8 @@ __TRY { - ret = dst_dib.funcs->convert_to( &dst_dib, &src_dib, &src->visrect ); + dst_dib.funcs->convert_to( &dst_dib, &src_dib, &src->visrect ); + ret = TRUE; } __EXCEPT_PAGE_FAULT { @@ -306,13 +307,24 @@ src->x -= src->visrect.left; src->y -= src->visrect.top; offset_rect( &src->visrect, -src->visrect.left, -src->visrect.top ); + + if (add_alpha && dst_dib.funcs == &funcs_8888 && src_dib.funcs != &funcs_8888) + { + DWORD *pixel = dst_dib.bits.ptr; + int x, y; + + for (y = src->visrect.top; y < src->visrect.bottom; y++, pixel += dst_dib.stride / 4) + for (x = src->visrect.left; x < src->visrect.right; x++) + pixel[x] |= 0xff000000; + } + return ERROR_SUCCESS; } static void update_fg_colors( dibdrv_physdev *pdev ) { - pdev->pen_color = get_fg_color( pdev, pdev->pen_colorref ); - pdev->brush_color = get_fg_color( pdev, pdev->brush_colorref ); + pdev->pen_color = get_pixel_color( pdev, pdev->pen_colorref, TRUE ); + pdev->brush_color = get_pixel_color( pdev, pdev->brush_colorref, TRUE ); } static void update_masks( dibdrv_physdev *pdev, INT rop ) @@ -415,7 +427,7 @@ PHYSDEV next = GET_NEXT_PHYSDEV( dev, pSetBkColor ); dibdrv_physdev *pdev = get_dibdrv_pdev(dev); - pdev->bkgnd_color = pdev->dib.funcs->colorref_to_pixel( &pdev->dib, color ); + pdev->bkgnd_color = get_pixel_color( pdev, color, FALSE ); if( GetBkMode(dev->hdc) == OPAQUE ) calc_and_xor_masks( GetROP2(dev->hdc), pdev->bkgnd_color, &pdev->bkgnd_and, &pdev->bkgnd_xor ); @@ -476,7 +488,7 @@ if( pos + count > pdev->dib.color_table_size ) count = pdev->dib.color_table_size - pos; memcpy( pdev->dib.color_table + pos, colors, count * sizeof(RGBQUAD) ); - pdev->bkgnd_color = pdev->dib.funcs->colorref_to_pixel( &pdev->dib, GetBkColor( dev->hdc ) ); + pdev->bkgnd_color = get_pixel_color( pdev, GetBkColor( dev->hdc ), FALSE ); update_fg_colors( pdev ); update_masks( pdev, GetROP2( dev->hdc ) ); @@ -497,16 +509,16 @@ return next->funcs->pSetROP2( next, rop ); } -const DC_FUNCTIONS dib_driver = +const struct gdi_dc_funcs dib_driver = { NULL, /* pAbortDoc */ NULL, /* pAbortPath */ - NULL, /* pAlphaBlend */ + dibdrv_AlphaBlend, /* pAlphaBlend */ NULL, /* pAngleArc */ NULL, /* pArc */ NULL, /* pArcTo */ NULL, /* pBeginPath */ - NULL, /* pBlendImage */ + dibdrv_BlendImage, /* pBlendImage */ NULL, /* pChoosePixelFormat */ NULL, /* pChord */ NULL, /* pCloseFigure */ @@ -542,7 +554,7 @@ NULL, /* pGetICMProfile */ dibdrv_GetImage, /* pGetImage */ NULL, /* pGetNearestColor */ - NULL, /* pGetPixel */ + dibdrv_GetPixel, /* pGetPixel */ NULL, /* pGetPixelFormat */ NULL, /* pGetSystemPaletteEntries */ NULL, /* pGetTextExtentExPoint */ @@ -594,7 +606,7 @@ NULL, /* pSetLayout */ NULL, /* pSetMapMode */ NULL, /* pSetMapperFlags */ - NULL, /* pSetPixel */ + dibdrv_SetPixel, /* pSetPixel */ NULL, /* pSetPixelFormat */ NULL, /* pSetPolyFillMode */ dibdrv_SetROP2, /* pSetROP2 */ diff -Nru wine1.3-1.3.30/dlls/gdi32/dibdrv/dibdrv.h wine1.3-1.3.31/dlls/gdi32/dibdrv/dibdrv.h --- wine1.3-1.3.30/dlls/gdi32/dibdrv/dibdrv.h 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/dibdrv/dibdrv.h 2011-10-21 18:38:36.000000000 +0000 @@ -100,8 +100,13 @@ #define DEFER_PEN 2 #define DEFER_BRUSH 4 +extern BOOL dibdrv_AlphaBlend( PHYSDEV dst_dev, struct bitblt_coords *dst, + PHYSDEV src_dev, struct bitblt_coords *src, BLENDFUNCTION blend ) DECLSPEC_HIDDEN; +extern DWORD dibdrv_BlendImage( PHYSDEV dev, BITMAPINFO *info, const struct gdi_image_bits *bits, + struct bitblt_coords *src, struct bitblt_coords *dst, BLENDFUNCTION func ) DECLSPEC_HIDDEN; extern DWORD dibdrv_GetImage( PHYSDEV dev, HBITMAP hbitmap, BITMAPINFO *info, struct gdi_image_bits *bits, struct bitblt_coords *src ) DECLSPEC_HIDDEN; +extern COLORREF dibdrv_GetPixel( PHYSDEV dev, INT x, INT y ) DECLSPEC_HIDDEN; extern BOOL dibdrv_LineTo( PHYSDEV dev, INT x, INT y ) DECLSPEC_HIDDEN; extern BOOL dibdrv_PatBlt( PHYSDEV dev, struct bitblt_coords *dst, DWORD rop ) DECLSPEC_HIDDEN; extern BOOL dibdrv_PaintRgn( PHYSDEV dev, HRGN hrgn ) DECLSPEC_HIDDEN; @@ -116,6 +121,7 @@ extern HPEN dibdrv_SelectPen( PHYSDEV dev, HPEN hpen ) DECLSPEC_HIDDEN; extern COLORREF dibdrv_SetDCBrushColor( PHYSDEV dev, COLORREF color ) DECLSPEC_HIDDEN; extern COLORREF dibdrv_SetDCPenColor( PHYSDEV dev, COLORREF color ) DECLSPEC_HIDDEN; +extern COLORREF dibdrv_SetPixel( PHYSDEV dev, INT x, INT y, COLORREF color ) DECLSPEC_HIDDEN; extern BOOL dibdrv_StretchBlt( PHYSDEV dst_dev, struct bitblt_coords *dst, PHYSDEV src_dev, struct bitblt_coords *src, DWORD rop ) DECLSPEC_HIDDEN; @@ -138,8 +144,12 @@ const dib_info *brush, void *and_bits, void *xor_bits); void (* copy_rect)(const dib_info *dst, const RECT *rc, const dib_info *src, const POINT *origin, int rop2, int overlap); + void (* blend_rect)(const dib_info *dst, const RECT *rc, const dib_info *src, + const POINT *origin, BLENDFUNCTION blend); + DWORD (* get_pixel)(const dib_info *dib, const POINT *pt); DWORD (* colorref_to_pixel)(const dib_info *dib, COLORREF color); - BOOL (* convert_to)(dib_info *dst, const dib_info *src, const RECT *src_rect); + COLORREF (* pixel_to_colorref)(const dib_info *dib, DWORD pixel); + void (* convert_to)(dib_info *dst, const dib_info *src, const RECT *src_rect); BOOL (* create_rop_masks)(const dib_info *dib, const dib_info *hatch, const rop_mask *fg, const rop_mask *bg, rop_mask_bits *bits); void (* stretch_row)(const dib_info *dst_dib, const POINT *dst_start, @@ -192,7 +202,7 @@ extern void free_pattern_brush(dibdrv_physdev *pdev) DECLSPEC_HIDDEN; extern void copy_dib_color_info(dib_info *dst, const dib_info *src) DECLSPEC_HIDDEN; extern BOOL convert_dib(dib_info *dst, const dib_info *src) DECLSPEC_HIDDEN; -extern DWORD get_fg_color(dibdrv_physdev *pdev, COLORREF color) DECLSPEC_HIDDEN; +extern DWORD get_pixel_color(dibdrv_physdev *pdev, COLORREF color, BOOL mono_fixup) DECLSPEC_HIDDEN; extern BOOL brush_rects( dibdrv_physdev *pdev, int num, const RECT *rects ) DECLSPEC_HIDDEN; extern HRGN add_extra_clipping_region( dibdrv_physdev *pdev, HRGN rgn ) DECLSPEC_HIDDEN; extern void restore_clipping_region( dibdrv_physdev *pdev, HRGN rgn ) DECLSPEC_HIDDEN; diff -Nru wine1.3-1.3.30/dlls/gdi32/dibdrv/graphics.c wine1.3-1.3.31/dlls/gdi32/dibdrv/graphics.c --- wine1.3-1.3.30/dlls/gdi32/dibdrv/graphics.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/dibdrv/graphics.c 2011-10-21 18:38:36.000000000 +0000 @@ -57,6 +57,29 @@ } /*********************************************************************** + * dibdrv_GetPixel + */ +COLORREF dibdrv_GetPixel( PHYSDEV dev, INT x, INT y ) +{ + dibdrv_physdev *pdev = get_dibdrv_pdev( dev ); + POINT pt; + DWORD pixel; + + TRACE( "(%p, %d, %d)\n", dev, x, y ); + + pt.x = x; + pt.y = y; + LPtoDP( dev->hdc, &pt, 1 ); + + if (pt.x < 0 || pt.x >= pdev->dib.width || + pt.y < 0 || pt.y >= pdev->dib.height) + return CLR_INVALID; + + pixel = pdev->dib.funcs->get_pixel( &pdev->dib, &pt ); + return pdev->dib.funcs->pixel_to_colorref( &pdev->dib, pixel ); +} + +/*********************************************************************** * dibdrv_LineTo */ BOOL dibdrv_LineTo( PHYSDEV dev, INT x, INT y ) @@ -240,3 +263,43 @@ return TRUE; } + +/*********************************************************************** + * dibdrv_SetPixel + */ +COLORREF dibdrv_SetPixel( PHYSDEV dev, INT x, INT y, COLORREF color ) +{ + dibdrv_physdev *pdev = get_dibdrv_pdev( dev ); + int i; + POINT pt; + DWORD pixel; + const WINEREGION *clip = get_wine_region( pdev->clip ); + + TRACE( "(%p, %d, %d, %08x)\n", dev, x, y, color ); + + pt.x = x; + pt.y = y; + LPtoDP( dev->hdc, &pt, 1 ); + + /* SetPixel doesn't do the 1bpp massaging like other fg colors */ + pixel = get_pixel_color( pdev, color, FALSE ); + color = pdev->dib.funcs->pixel_to_colorref( &pdev->dib, pixel ); + + for (i = 0; i < clip->numRects; i++) + { + if (pt_in_rect( clip->rects + i, pt )) + { + RECT rect; + rect.left = pt.x; + rect.top = pt.y; + rect.right = rect.left + 1; + rect.bottom = rect.top + 1; + + pdev->dib.funcs->solid_rects( &pdev->dib, 1, &rect, 0, pixel ); + break; + } + } + + release_wine_region( pdev->clip ); + return color; +} diff -Nru wine1.3-1.3.30/dlls/gdi32/dibdrv/objects.c wine1.3-1.3.31/dlls/gdi32/dibdrv/objects.c --- wine1.3-1.3.30/dlls/gdi32/dibdrv/objects.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/dibdrv/objects.c 2011-10-21 18:38:36.000000000 +0000 @@ -123,8 +123,56 @@ return FALSE; } +static COLORREF make_rgb_colorref( dibdrv_physdev *pdev, COLORREF color, + BOOL *got_pixel, DWORD *pixel ) +{ + BYTE type = color >> 24; + WORD index = LOWORD( color ); + HPALETTE pal = GetCurrentObject( pdev->dev.hdc, OBJ_PAL ); + PALETTEENTRY pal_ent; + + *pixel = 0; + *got_pixel = FALSE; + + switch( type ) + { + case 0: break; + + case 0x10: /* DIBINDEX */ + *got_pixel = TRUE; + *pixel = 0; + color = RGB(0, 0, 0); + + if (pdev->dib.bit_count <= 8 && index < (1 << pdev->dib.bit_count)) + { + *pixel = index; + if (index < pdev->dib.color_table_size) + color = RGB( pdev->dib.color_table[index].rgbRed, + pdev->dib.color_table[index].rgbGreen, + pdev->dib.color_table[index].rgbBlue ); + } + break; + + case 2: /* PALETTERGB */ + color &= 0xffffff; + break; + + case 1: /* PALETTEINDEX */ + if (!GetPaletteEntries( pal, index, 1, &pal_ent )) + GetPaletteEntries( pal, 0, 1, &pal_ent ); + color = RGB( pal_ent.peRed, pal_ent.peGreen, pal_ent.peBlue ); + break; + + default: + FIXME("Unhandled color type %08x\n", color); + color &= 0xffffff; + } + + return color; +} + /****************************************************************** - * get_fg_color + * get_pixel_color * * 1 bit bitmaps map the fg/bg colors as follows: * If the fg colorref exactly matches one of the color table entries then @@ -132,20 +180,26 @@ * Otherwise the bg color is mapped to the closest entry in the table and * the fg takes the other one. */ -DWORD get_fg_color( dibdrv_physdev *pdev, COLORREF fg ) +DWORD get_pixel_color( dibdrv_physdev *pdev, COLORREF color, BOOL mono_fixup ) { RGBQUAD fg_quad; + BOOL got_pixel; + DWORD pixel; + COLORREF rgb_ref; + + rgb_ref = make_rgb_colorref( pdev, color, &got_pixel, &pixel ); + if (got_pixel) return pixel; - if(pdev->dib.bit_count != 1) - return pdev->dib.funcs->colorref_to_pixel( &pdev->dib, fg ); + if (pdev->dib.bit_count != 1 || !mono_fixup) + return pdev->dib.funcs->colorref_to_pixel( &pdev->dib, rgb_ref ); - fg_quad = rgbquad_from_colorref( fg ); + fg_quad = rgbquad_from_colorref( rgb_ref ); if(rgbquad_equal(&fg_quad, pdev->dib.color_table)) return 0; if(rgbquad_equal(&fg_quad, pdev->dib.color_table + 1)) return 1; - if(fg == GetBkColor(pdev->dev.hdc)) return pdev->bkgnd_color; + if(color == GetBkColor(pdev->dev.hdc)) return pdev->bkgnd_color; else return pdev->bkgnd_color ? 0 : 1; } @@ -205,12 +259,6 @@ } } -static inline BOOL pt_in_rect( const RECT *rect, const POINT *pt ) -{ - return ((pt->x >= rect->left) && (pt->x < rect->right) && - (pt->y >= rect->top) && (pt->y < rect->bottom)); -} - #define Y_INCREASING_MASK 0x0f #define X_INCREASING_MASK 0xc3 #define X_MAJOR_MASK 0x99 @@ -987,7 +1035,7 @@ logpen.lopnColor = GetDCPenColor( dev->hdc ); pdev->pen_colorref = logpen.lopnColor; - pdev->pen_color = get_fg_color( pdev, pdev->pen_colorref ); + pdev->pen_color = get_pixel_color( pdev, pdev->pen_colorref, TRUE ); calc_and_xor_masks(GetROP2(dev->hdc), pdev->pen_color, &pdev->pen_and, &pdev->pen_xor); pdev->pen_pattern = dash_patterns[PS_SOLID]; @@ -1039,7 +1087,7 @@ if (GetCurrentObject(dev->hdc, OBJ_PEN) == GetStockObject( DC_PEN )) { pdev->pen_colorref = color; - pdev->pen_color = get_fg_color( pdev, pdev->pen_colorref ); + pdev->pen_color = get_pixel_color( pdev, pdev->pen_colorref, TRUE ); calc_and_xor_masks(GetROP2(dev->hdc), pdev->pen_color, &pdev->pen_and, &pdev->pen_xor); } @@ -1311,7 +1359,7 @@ { case BS_SOLID: pdev->brush_colorref = logbrush.lbColor; - pdev->brush_color = get_fg_color( pdev, pdev->brush_colorref ); + pdev->brush_color = get_pixel_color( pdev, pdev->brush_colorref, TRUE ); calc_and_xor_masks(GetROP2(dev->hdc), pdev->brush_color, &pdev->brush_and, &pdev->brush_xor); pdev->brush_rects = solid_brush; pdev->defer &= ~DEFER_BRUSH; @@ -1349,13 +1397,9 @@ rect.right = orig_dib.width; rect.bottom = orig_dib.height; - if(pdev->brush_dib.funcs->convert_to(&pdev->brush_dib, &orig_dib, &rect)) - { - pdev->brush_rects = pattern_brush; - pdev->defer &= ~DEFER_BRUSH; - } - else - free_dib_info(&pdev->brush_dib); + pdev->brush_dib.funcs->convert_to(&pdev->brush_dib, &orig_dib, &rect); + pdev->brush_rects = pattern_brush; + pdev->defer &= ~DEFER_BRUSH; free_dib_info(&orig_dib); } GlobalUnlock((HGLOBAL)logbrush.lbHatch); @@ -1367,7 +1411,7 @@ if(logbrush.lbHatch > HS_DIAGCROSS) return 0; pdev->brush_hatch = logbrush.lbHatch; pdev->brush_colorref = logbrush.lbColor; - pdev->brush_color = get_fg_color( pdev, pdev->brush_colorref ); + pdev->brush_color = get_pixel_color( pdev, pdev->brush_colorref, TRUE ); calc_and_xor_masks(GetROP2(dev->hdc), pdev->brush_color, &pdev->brush_and, &pdev->brush_xor); pdev->brush_rects = pattern_brush; pdev->defer &= ~DEFER_BRUSH; @@ -1392,7 +1436,7 @@ if (GetCurrentObject(dev->hdc, OBJ_BRUSH) == GetStockObject( DC_BRUSH )) { pdev->brush_colorref = color; - pdev->brush_color = get_fg_color( pdev, pdev->brush_colorref ); + pdev->brush_color = get_pixel_color( pdev, pdev->brush_colorref, TRUE ); calc_and_xor_masks(GetROP2(dev->hdc), pdev->brush_color, &pdev->brush_and, &pdev->brush_xor); } diff -Nru wine1.3-1.3.30/dlls/gdi32/dibdrv/primitives.c wine1.3-1.3.31/dlls/gdi32/dibdrv/primitives.c --- wine1.3-1.3.30/dlls/gdi32/dibdrv/primitives.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/dibdrv/primitives.c 2011-10-21 18:38:36.000000000 +0000 @@ -785,22 +785,9 @@ const dib_info *src, const POINT *origin, int rop2, int overlap) { DWORD *dst_start, *src_start; - DWORD and = 0, xor = 0; struct rop_codes codes; int y, dst_stride, src_stride; - switch (rop2) - { - case R2_NOP: return; - case R2_NOT: and = ~0u; - /* fall through */ - case R2_WHITE: xor = ~0u; - /* fall through */ - case R2_BLACK: - dst->funcs->solid_rects( dst, 1, rc, and, xor ); - return; - } - if (overlap & OVERLAP_BELOW) { dst_start = get_pixel_ptr_32(dst, rc->left, rc->bottom - 1); @@ -837,22 +824,9 @@ const dib_info *src, const POINT *origin, int rop2, int overlap) { BYTE *dst_start, *src_start; - DWORD and = 0, xor = 0; int y, dst_stride, src_stride; struct rop_codes codes; - switch (rop2) - { - case R2_NOP: return; - case R2_NOT: and = ~0u; - /* fall through */ - case R2_WHITE: xor = ~0u; - /* fall through */ - case R2_BLACK: - dst->funcs->solid_rects( dst, 1, rc, and, xor ); - return; - } - if (overlap & OVERLAP_BELOW) { dst_start = get_pixel_ptr_24(dst, rc->left, rc->bottom - 1); @@ -889,22 +863,9 @@ const dib_info *src, const POINT *origin, int rop2, int overlap) { WORD *dst_start, *src_start; - DWORD and = 0, xor = 0; int y, dst_stride, src_stride; struct rop_codes codes; - switch (rop2) - { - case R2_NOP: return; - case R2_NOT: and = ~0u; - /* fall through */ - case R2_WHITE: xor = ~0u; - /* fall through */ - case R2_BLACK: - dst->funcs->solid_rects( dst, 1, rc, and, xor ); - return; - } - if (overlap & OVERLAP_BELOW) { dst_start = get_pixel_ptr_16(dst, rc->left, rc->bottom - 1); @@ -941,22 +902,9 @@ const dib_info *src, const POINT *origin, int rop2, int overlap) { BYTE *dst_start, *src_start; - DWORD and = 0, xor = 0; int y, dst_stride, src_stride; struct rop_codes codes; - switch (rop2) - { - case R2_NOP: return; - case R2_NOT: and = ~0u; - /* fall through */ - case R2_WHITE: xor = ~0u; - /* fall through */ - case R2_BLACK: - dst->funcs->solid_rects( dst, 1, rc, and, xor ); - return; - } - if (overlap & OVERLAP_BELOW) { dst_start = get_pixel_ptr_8(dst, rc->left, rc->bottom - 1); @@ -993,22 +941,9 @@ const dib_info *src, const POINT *origin, int rop2, int overlap) { BYTE *dst_start, *src_start; - DWORD and = 0, xor = 0; int y, dst_stride, src_stride; struct rop_codes codes; - switch (rop2) - { - case R2_NOP: return; - case R2_NOT: and = ~0u; - /* fall through */ - case R2_WHITE: xor = ~0u; - /* fall through */ - case R2_BLACK: - dst->funcs->solid_rects( dst, 1, rc, and, xor ); - return; - } - if (overlap & OVERLAP_BELOW) { dst_start = get_pixel_ptr_4(dst, 0, rc->bottom - 1); @@ -1047,22 +982,9 @@ const dib_info *src, const POINT *origin, int rop2, int overlap) { BYTE *dst_start, *src_start; - DWORD and = 0, xor = 0; int y, dst_stride, src_stride; struct rop_codes codes; - switch (rop2) - { - case R2_NOP: return; - case R2_NOT: and = ~0u; - /* fall through */ - case R2_WHITE: xor = ~0u; - /* fall through */ - case R2_BLACK: - dst->funcs->solid_rects( dst, 1, rc, and, xor ); - return; - } - if (overlap & OVERLAP_BELOW) { dst_start = get_pixel_ptr_1(dst, 0, rc->bottom - 1); @@ -1103,16 +1025,81 @@ return; } +static DWORD get_pixel_32(const dib_info *dib, const POINT *pt) +{ + DWORD *ptr = get_pixel_ptr_32( dib, pt->x, pt->y ); + return *ptr; +} + +static DWORD get_pixel_24(const dib_info *dib, const POINT *pt) +{ + BYTE *ptr = get_pixel_ptr_24( dib, pt->x, pt->y ); + return ptr[0] | ((DWORD)ptr[1] << 8) | ((DWORD)ptr[2] << 16); +} + +static DWORD get_pixel_16(const dib_info *dib, const POINT *pt) +{ + WORD *ptr = get_pixel_ptr_16( dib, pt->x, pt->y ); + return *ptr; +} + +static DWORD get_pixel_8(const dib_info *dib, const POINT *pt) +{ + BYTE *ptr = get_pixel_ptr_8( dib, pt->x, pt->y ); + return *ptr; +} + +static DWORD get_pixel_4(const dib_info *dib, const POINT *pt) +{ + BYTE *ptr = get_pixel_ptr_4( dib, pt->x, pt->y ); + + if (pt->x & 1) + return *ptr & 0x0f; + else + return (*ptr >> 4) & 0x0f; +} + +static DWORD get_pixel_1(const dib_info *dib, const POINT *pt) +{ + BYTE *ptr = get_pixel_ptr_1( dib, pt->x, pt->y ); + return (*ptr & pixel_masks_1[pt->x & 0x7]) ? 1 : 0; +} + +static DWORD get_pixel_null(const dib_info *dib, const POINT *pt) +{ + return 0; +} + static DWORD colorref_to_pixel_888(const dib_info *dib, COLORREF color) { return ( ((color >> 16) & 0xff) | (color & 0xff00) | ((color << 16) & 0xff0000) ); } +static const DWORD field_masks[33] = +{ + 0x00, /* should never happen */ + 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +}; + +static inline DWORD get_field(DWORD field, int shift, int len) +{ + shift = shift - (8 - len); + if (shift < 0) + field <<= -shift; + else + field >>= shift; + field &= field_masks[len]; + field |= field >> len; + return field; +} + static inline DWORD put_field(DWORD field, int shift, int len) { shift = shift - (8 - len); - if (len <= 8) - field &= (((1 << len) - 1) << (8 - len)); + field &= field_masks[len]; if (shift < 0) field >>= -shift; else @@ -1138,30 +1125,25 @@ return ( ((color >> 19) & 0x1f) | ((color >> 6) & 0x03e0) | ((color << 7) & 0x7c00) ); } -static DWORD colorref_to_pixel_colortable(const dib_info *dib, COLORREF color) +static DWORD rgb_to_pixel_colortable(const dib_info *dib, BYTE r, BYTE g, BYTE b) { int i, best_index = 0; - RGBQUAD rgb; DWORD diff, best_diff = 0xffffffff; - rgb.rgbRed = GetRValue(color); - rgb.rgbGreen = GetGValue(color); - rgb.rgbBlue = GetBValue(color); - /* special case for conversion to 1-bpp without a color table: * we get a 1-entry table containing the background color */ if (dib->bit_count == 1 && dib->color_table_size == 1) - return (rgb.rgbRed == dib->color_table[0].rgbRed && - rgb.rgbGreen == dib->color_table[0].rgbGreen && - rgb.rgbBlue == dib->color_table[0].rgbBlue); + return (r == dib->color_table[0].rgbRed && + g == dib->color_table[0].rgbGreen && + b == dib->color_table[0].rgbBlue); for(i = 0; i < dib->color_table_size; i++) { RGBQUAD *cur = dib->color_table + i; - diff = (rgb.rgbRed - cur->rgbRed) * (rgb.rgbRed - cur->rgbRed) - + (rgb.rgbGreen - cur->rgbGreen) * (rgb.rgbGreen - cur->rgbGreen) - + (rgb.rgbBlue - cur->rgbBlue) * (rgb.rgbBlue - cur->rgbBlue); + diff = (r - cur->rgbRed) * (r - cur->rgbRed) + + (g - cur->rgbGreen) * (g - cur->rgbGreen) + + (b - cur->rgbBlue) * (b - cur->rgbBlue); if(diff == 0) { @@ -1178,11 +1160,54 @@ return best_index; } +static DWORD colorref_to_pixel_colortable(const dib_info *dib, COLORREF color) +{ + return rgb_to_pixel_colortable( dib, GetRValue(color), GetGValue(color), GetBValue(color) ); +} + static DWORD colorref_to_pixel_null(const dib_info *dib, COLORREF color) { return 0; } +static inline RGBQUAD colortable_entry(const dib_info *dib, DWORD index) +{ + static const RGBQUAD default_rgb; + if (index < dib->color_table_size) return dib->color_table[index]; + return default_rgb; +} + +static COLORREF pixel_to_colorref_888(const dib_info *dib, DWORD pixel) +{ + return ( ((pixel >> 16) & 0xff) | (pixel & 0xff00) | ((pixel << 16) & 0xff0000) ); +} + +static COLORREF pixel_to_colorref_masks(const dib_info *dib, DWORD pixel) +{ + return RGB( get_field( pixel, dib->red_shift, dib->red_len ), + get_field( pixel, dib->green_shift, dib->green_len ), + get_field( pixel, dib->blue_shift, dib->blue_len ) ); +} + +static COLORREF pixel_to_colorref_555(const dib_info *dib, DWORD pixel) +{ + return RGB( ((pixel >> 7) & 0xf8) | ((pixel >> 12) & 0x07), + ((pixel >> 2) & 0xf8) | ((pixel >> 7) & 0x07), + ((pixel << 3) & 0xf8) | ((pixel >> 2) & 0x07) ); +} + +static COLORREF pixel_to_colorref_colortable(const dib_info *dib, DWORD pixel) +{ + RGBQUAD quad = colortable_entry( dib, pixel ); + + return RGB( quad.rgbRed, quad.rgbGreen, quad.rgbBlue ); +} + +static COLORREF pixel_to_colorref_null(const dib_info *dib, DWORD pixel) +{ + return 0; +} + static inline BOOL bit_fields_match(const dib_info *d1, const dib_info *d2) { assert( d1->bit_count > 8 && d1->bit_count == d2->bit_count ); @@ -1192,7 +1217,7 @@ d1->blue_mask == d2->blue_mask; } -static BOOL convert_to_8888(dib_info *dst, const dib_info *src, const RECT *src_rect) +static void convert_to_8888(dib_info *dst, const dib_info *src, const RECT *src_rect) { DWORD *dst_start = get_pixel_ptr_32(dst, 0, 0), *dst_pixel, src_val; int x, y, pad_size = (dst->width - (src_rect->right - src_rect->left)) * 4; @@ -1237,8 +1262,21 @@ } else { - FIXME("Unsupported conversion: 32 (%08x, %08x, %08x) -> 8888\n", src->red_mask, src->green_mask, src->blue_mask); - return FALSE; + for(y = src_rect->top; y < src_rect->bottom; y++) + { + dst_pixel = dst_start; + src_pixel = src_start; + for(x = src_rect->left; x < src_rect->right; x++) + { + src_val = *src_pixel++; + *dst_pixel++ = (get_field( src_val, src->red_shift, src->red_len ) << 16 | + get_field( src_val, src->green_shift, src->green_len ) << 8 | + get_field( src_val, src->blue_shift, src->blue_len )); + } + if(pad_size) memset(dst_pixel, 0, pad_size); + dst_start += dst->stride / 4; + src_start += src->stride / 4; + } } break; } @@ -1332,8 +1370,21 @@ } else { - FIXME("Unsupported conversion: 16 (%08x, %08x, %08x) -> 8888\n", src->red_mask, src->green_mask, src->blue_mask); - return FALSE; + for(y = src_rect->top; y < src_rect->bottom; y++) + { + dst_pixel = dst_start; + src_pixel = src_start; + for(x = src_rect->left; x < src_rect->right; x++) + { + src_val = *src_pixel++; + *dst_pixel++ = (get_field( src_val, src->red_shift, src->red_len ) << 16 | + get_field( src_val, src->green_shift, src->green_len ) << 8 | + get_field( src_val, src->blue_shift, src->blue_len )); + } + if(pad_size) memset(dst_pixel, 0, pad_size); + dst_start += dst->stride / 4; + src_start += src->stride / 2; + } } break; } @@ -1347,10 +1398,7 @@ src_pixel = src_start; for(x = src_rect->left; x < src_rect->right; x++) { - RGBQUAD rgb; - src_val = *src_pixel++; - if(src_val >= src->color_table_size) src_val = src->color_table_size - 1; - rgb = src->color_table[src_val]; + RGBQUAD rgb = colortable_entry( src, *src_pixel++ ); *dst_pixel++ = rgb.rgbRed << 16 | rgb.rgbGreen << 8 | rgb.rgbBlue; } if(pad_size) memset(dst_pixel, 0, pad_size); @@ -1371,11 +1419,9 @@ { RGBQUAD rgb; if(x & 1) - src_val = *src_pixel++ & 0xf; + rgb = colortable_entry( src, *src_pixel++ & 0xf ); else - src_val = (*src_pixel >> 4) & 0xf; - if(src_val >= src->color_table_size) src_val = src->color_table_size - 1; - rgb = src->color_table[src_val]; + rgb = colortable_entry( src, *src_pixel >> 4 ); *dst_pixel++ = rgb.rgbRed << 16 | rgb.rgbGreen << 8 | rgb.rgbBlue; } if(pad_size) memset(dst_pixel, 0, pad_size); @@ -1406,16 +1452,10 @@ } break; } - - default: - FIXME("Unsupported conversion: %d -> 8888\n", src->bit_count); - return FALSE; } - - return TRUE; } -static BOOL convert_to_32(dib_info *dst, const dib_info *src, const RECT *src_rect) +static void convert_to_32(dib_info *dst, const dib_info *src, const RECT *src_rect) { DWORD *dst_start = get_pixel_ptr_32(dst, 0, 0), *dst_pixel, src_val; int x, y, pad_size = (dst->width - (src_rect->right - src_rect->left)) * 4; @@ -1435,9 +1475,9 @@ for(x = src_rect->left; x < src_rect->right; x++) { src_val = *src_pixel++; - *dst_pixel++ = put_field((src_val >> 16) & 0xff, dst->red_shift, dst->red_len) | - put_field((src_val >> 8) & 0xff, dst->green_shift, dst->green_len) | - put_field( src_val & 0xff, dst->blue_shift, dst->blue_len); + *dst_pixel++ = put_field(src_val >> 16, dst->red_shift, dst->red_len) | + put_field(src_val >> 8, dst->green_shift, dst->green_len) | + put_field(src_val, dst->blue_shift, dst->blue_len); } if(pad_size) memset(dst_pixel, 0, pad_size); dst_start += dst->stride / 4; @@ -1480,9 +1520,21 @@ } else { - FIXME("Unsupported conversion: 32 (%08x, %08x, %08x) -> 32 (%08x, %08x, %08x)\n", - src->red_mask, src->green_mask, src->blue_mask, dst->red_mask, dst->green_mask, dst->blue_mask); - return FALSE; + for(y = src_rect->top; y < src_rect->bottom; y++) + { + dst_pixel = dst_start; + src_pixel = src_start; + for(x = src_rect->left; x < src_rect->right; x++) + { + src_val = *src_pixel++; + *dst_pixel++ = put_field(get_field(src_val, src->red_shift, src->red_len ), dst->red_shift, dst->red_len) | + put_field(get_field(src_val, src->green_shift, src->green_len ), dst->green_shift, dst->green_len) | + put_field(get_field(src_val, src->blue_shift, src->blue_len ), dst->blue_shift, dst->blue_len); + } + if(pad_size) memset(dst_pixel, 0, pad_size); + dst_start += dst->stride / 4; + src_start += src->stride / 4; + } } break; } @@ -1578,8 +1630,21 @@ } else { - FIXME("Unsupported conversion: 16 (%08x, %08x, %08x) -> 32\n", src->red_mask, src->green_mask, src->blue_mask); - return FALSE; + for(y = src_rect->top; y < src_rect->bottom; y++) + { + dst_pixel = dst_start; + src_pixel = src_start; + for(x = src_rect->left; x < src_rect->right; x++) + { + src_val = *src_pixel++; + *dst_pixel++ = put_field(get_field(src_val, src->red_shift, src->red_len ), dst->red_shift, dst->red_len) | + put_field(get_field(src_val, src->green_shift, src->green_len ), dst->green_shift, dst->green_len) | + put_field(get_field(src_val, src->blue_shift, src->blue_len ), dst->blue_shift, dst->blue_len); + } + if(pad_size) memset(dst_pixel, 0, pad_size); + dst_start += dst->stride / 4; + src_start += src->stride / 2; + } } break; } @@ -1593,10 +1658,7 @@ src_pixel = src_start; for(x = src_rect->left; x < src_rect->right; x++) { - RGBQUAD rgb; - src_val = *src_pixel++; - if(src_val >= src->color_table_size) src_val = src->color_table_size - 1; - rgb = src->color_table[src_val]; + RGBQUAD rgb = colortable_entry( src, *src_pixel++ ); *dst_pixel++ = put_field(rgb.rgbRed, dst->red_shift, dst->red_len) | put_field(rgb.rgbGreen, dst->green_shift, dst->green_len) | put_field(rgb.rgbBlue, dst->blue_shift, dst->blue_len); @@ -1619,11 +1681,9 @@ { RGBQUAD rgb; if(x & 1) - src_val = *src_pixel++ & 0xf; + rgb = colortable_entry( src, *src_pixel++ & 0xf ); else - src_val = (*src_pixel >> 4) & 0xf; - if(src_val >= src->color_table_size) src_val = src->color_table_size - 1; - rgb = src->color_table[src_val]; + rgb = colortable_entry( src, *src_pixel >> 4 ); *dst_pixel++ = put_field(rgb.rgbRed, dst->red_shift, dst->red_len) | put_field(rgb.rgbGreen, dst->green_shift, dst->green_len) | put_field(rgb.rgbBlue, dst->blue_shift, dst->blue_len); @@ -1658,16 +1718,10 @@ } break; } - - default: - FIXME("Unsupported conversion: %d -> 32\n", src->bit_count); - return FALSE; } - - return TRUE; } -static BOOL convert_to_24(dib_info *dst, const dib_info *src, const RECT *src_rect) +static void convert_to_24(dib_info *dst, const dib_info *src, const RECT *src_rect) { BYTE *dst_start = get_pixel_ptr_24(dst, 0, 0), *dst_pixel; DWORD src_val; @@ -1716,8 +1770,21 @@ } else { - FIXME("Unsupported conversion: 32 (%08x, %08x, %08x) -> 24\n", src->red_mask, src->green_mask, src->blue_mask); - return FALSE; + for(y = src_rect->top; y < src_rect->bottom; y++) + { + dst_pixel = dst_start; + src_pixel = src_start; + for(x = src_rect->left; x < src_rect->right; x++) + { + src_val = *src_pixel++; + *dst_pixel++ = get_field( src_val, src->blue_shift, src->blue_len ); + *dst_pixel++ = get_field( src_val, src->green_shift, src->green_len ); + *dst_pixel++ = get_field( src_val, src->red_shift, src->red_len ); + } + if(pad_size) memset(dst_pixel, 0, pad_size); + dst_start += dst->stride; + src_start += src->stride / 4; + } } break; } @@ -1806,8 +1873,21 @@ } else { - FIXME("Unsupported conversion: 16 (%08x, %08x, %08x) -> 24\n", src->red_mask, src->green_mask, src->blue_mask); - return FALSE; + for(y = src_rect->top; y < src_rect->bottom; y++) + { + dst_pixel = dst_start; + src_pixel = src_start; + for(x = src_rect->left; x < src_rect->right; x++) + { + src_val = *src_pixel++; + *dst_pixel++ = get_field(src_val, src->blue_shift, src->blue_len ); + *dst_pixel++ = get_field(src_val, src->green_shift, src->green_len ); + *dst_pixel++ = get_field(src_val, src->red_shift, src->red_len ); + } + if(pad_size) memset(dst_pixel, 0, pad_size); + dst_start += dst->stride; + src_start += src->stride / 2; + } } break; } @@ -1821,10 +1901,7 @@ src_pixel = src_start; for(x = src_rect->left; x < src_rect->right; x++) { - RGBQUAD rgb; - src_val = *src_pixel++; - if(src_val >= src->color_table_size) src_val = src->color_table_size - 1; - rgb = src->color_table[src_val]; + RGBQUAD rgb = colortable_entry( src, *src_pixel++ ); *dst_pixel++ = rgb.rgbBlue; *dst_pixel++ = rgb.rgbGreen; *dst_pixel++ = rgb.rgbRed; @@ -1847,11 +1924,9 @@ { RGBQUAD rgb; if(x & 1) - src_val = *src_pixel++ & 0xf; + rgb = colortable_entry( src, *src_pixel++ & 0xf ); else - src_val = (*src_pixel >> 4) & 0xf; - if(src_val >= src->color_table_size) src_val = src->color_table_size - 1; - rgb = src->color_table[src_val]; + rgb = colortable_entry( src, *src_pixel >> 4 ); *dst_pixel++ = rgb.rgbBlue; *dst_pixel++ = rgb.rgbGreen; *dst_pixel++ = rgb.rgbRed; @@ -1886,16 +1961,10 @@ } break; } - - default: - FIXME("Unsupported conversion: %d -> 24\n", src->bit_count); - return FALSE; } - - return TRUE; } -static BOOL convert_to_555(dib_info *dst, const dib_info *src, const RECT *src_rect) +static void convert_to_555(dib_info *dst, const dib_info *src, const RECT *src_rect) { WORD *dst_start = get_pixel_ptr_16(dst, 0, 0), *dst_pixel; INT x, y, pad_size = ((dst->width + 1) & ~1) * 2 - (src_rect->right - src_rect->left) * 2; @@ -1945,8 +2014,21 @@ } else { - FIXME("Unsupported conversion: 32 (%08x, %08x, %08x) -> 555\n", src->red_mask, src->green_mask, src->blue_mask); - return FALSE; + for(y = src_rect->top; y < src_rect->bottom; y++) + { + dst_pixel = dst_start; + src_pixel = src_start; + for(x = src_rect->left; x < src_rect->right; x++) + { + src_val = *src_pixel++; + *dst_pixel++ = (((get_field(src_val, src->red_shift, src->red_len ) << 7) & 0x7c00) | + ((get_field(src_val, src->green_shift, src->green_len ) << 2) & 0x03e0) | + ( get_field(src_val, src->blue_shift, src->blue_len ) >> 3)); + } + if(pad_size) memset(dst_pixel, 0, pad_size); + dst_start += dst->stride / 2; + src_start += src->stride / 4; + } } break; } @@ -2033,8 +2115,21 @@ } else { - FIXME("Unsupported conversion: 16 (%08x, %08x, %08x) -> 555\n", src->red_mask, src->green_mask, src->blue_mask); - return FALSE; + for(y = src_rect->top; y < src_rect->bottom; y++) + { + dst_pixel = dst_start; + src_pixel = src_start; + for(x = src_rect->left; x < src_rect->right; x++) + { + src_val = *src_pixel++; + *dst_pixel++ = (((get_field(src_val, src->red_shift, src->red_len) << 7) & 0x7c00) | + ((get_field(src_val, src->green_shift, src->green_len) << 2) & 0x03e0) | + ( get_field(src_val, src->blue_shift, src->blue_len) >> 3)); + } + if(pad_size) memset(dst_pixel, 0, pad_size); + dst_start += dst->stride / 2; + src_start += src->stride / 2; + } } break; } @@ -2048,10 +2143,7 @@ src_pixel = src_start; for(x = src_rect->left; x < src_rect->right; x++) { - RGBQUAD rgb; - src_val = *src_pixel++; - if(src_val >= src->color_table_size) src_val = src->color_table_size - 1; - rgb = src->color_table[src_val]; + RGBQUAD rgb = colortable_entry( src, *src_pixel++ ); *dst_pixel++ = ((rgb.rgbRed << 7) & 0x7c00) | ((rgb.rgbGreen << 2) & 0x03e0) | ((rgb.rgbBlue >> 3) & 0x001f); @@ -2074,11 +2166,9 @@ { RGBQUAD rgb; if(x & 1) - src_val = *src_pixel++ & 0xf; + rgb = colortable_entry( src, *src_pixel++ & 0xf ); else - src_val = (*src_pixel >> 4) & 0xf; - if(src_val >= src->color_table_size) src_val = src->color_table_size - 1; - rgb = src->color_table[src_val]; + rgb = colortable_entry( src, *src_pixel >> 4 ); *dst_pixel++ = ((rgb.rgbRed << 7) & 0x7c00) | ((rgb.rgbGreen << 2) & 0x03e0) | ((rgb.rgbBlue >> 3) & 0x001f); @@ -2113,16 +2203,10 @@ } break; } - - default: - FIXME("Unsupported conversion: %d -> 555\n", src->bit_count); - return FALSE; - } - return TRUE; } -static BOOL convert_to_16(dib_info *dst, const dib_info *src, const RECT *src_rect) +static void convert_to_16(dib_info *dst, const dib_info *src, const RECT *src_rect) { WORD *dst_start = get_pixel_ptr_16(dst, 0, 0), *dst_pixel; INT x, y, pad_size = ((dst->width + 1) & ~1) * 2 - (src_rect->right - src_rect->left) * 2; @@ -2143,9 +2227,9 @@ for(x = src_rect->left; x < src_rect->right; x++) { src_val = *src_pixel++; - *dst_pixel++ = put_field((src_val >> 16) & 0xff, dst->red_shift, dst->red_len) | - put_field((src_val >> 8) & 0xff, dst->green_shift, dst->green_len) | - put_field( src_val & 0xff, dst->blue_shift, dst->blue_len); + *dst_pixel++ = put_field(src_val >> 16, dst->red_shift, dst->red_len) | + put_field(src_val >> 8, dst->green_shift, dst->green_len) | + put_field(src_val, dst->blue_shift, dst->blue_len); } if(pad_size) memset(dst_pixel, 0, pad_size); dst_start += dst->stride / 2; @@ -2161,9 +2245,9 @@ for(x = src_rect->left; x < src_rect->right; x++) { src_val = *src_pixel++; - *dst_pixel++ = put_field((src_val >> src->red_shift) & 0xff, dst->red_shift, dst->red_len) | - put_field((src_val >> src->green_shift) & 0xff, dst->green_shift, dst->green_len) | - put_field((src_val >> src->blue_shift) & 0xff, dst->blue_shift, dst->blue_len); + *dst_pixel++ = put_field(src_val >> src->red_shift, dst->red_shift, dst->red_len) | + put_field(src_val >> src->green_shift, dst->green_shift, dst->green_len) | + put_field(src_val >> src->blue_shift, dst->blue_shift, dst->blue_len); } if(pad_size) memset(dst_pixel, 0, pad_size); dst_start += dst->stride / 2; @@ -2172,8 +2256,21 @@ } else { - FIXME("Unsupported conversion: 32 (%08x, %08x, %08x) -> 16\n", src->red_mask, src->green_mask, src->blue_mask); - return FALSE; + for(y = src_rect->top; y < src_rect->bottom; y++) + { + dst_pixel = dst_start; + src_pixel = src_start; + for(x = src_rect->left; x < src_rect->right; x++) + { + src_val = *src_pixel++; + *dst_pixel++ = put_field(get_field(src_val, src->red_shift, src->red_len ), dst->red_shift, dst->red_len) | + put_field(get_field(src_val, src->green_shift, src->green_len ), dst->green_shift, dst->green_len) | + put_field(get_field(src_val, src->blue_shift, src->blue_len ), dst->blue_shift, dst->blue_len); + } + if(pad_size) memset(dst_pixel, 0, pad_size); + dst_start += dst->stride / 2; + src_start += src->stride / 4; + } } break; } @@ -2284,9 +2381,21 @@ } else { - FIXME("Unsupported conversion: 16 (%08x, %08x, %08x) -> 16 (%08x, %08x, %08x)\n", - src->red_mask, src->green_mask, src->blue_mask, dst->red_mask, dst->green_mask, dst->blue_mask); - return FALSE; + for(y = src_rect->top; y < src_rect->bottom; y++) + { + dst_pixel = dst_start; + src_pixel = src_start; + for(x = src_rect->left; x < src_rect->right; x++) + { + src_val = *src_pixel++; + *dst_pixel++ = put_field(get_field(src_val, src->red_shift, src->red_len ), dst->red_shift, dst->red_len) | + put_field(get_field(src_val, src->green_shift, src->green_len ), dst->green_shift, dst->green_len) | + put_field(get_field(src_val, src->blue_shift, src->blue_len ), dst->blue_shift, dst->blue_len); + } + if(pad_size) memset(dst_pixel, 0, pad_size); + dst_start += dst->stride / 2; + src_start += src->stride / 2; + } } break; } @@ -2300,10 +2409,7 @@ src_pixel = src_start; for(x = src_rect->left; x < src_rect->right; x++) { - RGBQUAD rgb; - src_val = *src_pixel++; - if(src_val >= src->color_table_size) src_val = src->color_table_size - 1; - rgb = src->color_table[src_val]; + RGBQUAD rgb = colortable_entry( src, *src_pixel++ ); *dst_pixel++ = put_field(rgb.rgbRed, dst->red_shift, dst->red_len) | put_field(rgb.rgbGreen, dst->green_shift, dst->green_len) | put_field(rgb.rgbBlue, dst->blue_shift, dst->blue_len); @@ -2326,11 +2432,9 @@ { RGBQUAD rgb; if(x & 1) - src_val = *src_pixel++ & 0xf; + rgb = colortable_entry( src, *src_pixel++ & 0xf ); else - src_val = (*src_pixel >> 4) & 0xf; - if(src_val >= src->color_table_size) src_val = src->color_table_size - 1; - rgb = src->color_table[src_val]; + rgb = colortable_entry( src, *src_pixel >> 4 ); *dst_pixel++ = put_field(rgb.rgbRed, dst->red_shift, dst->red_len) | put_field(rgb.rgbGreen, dst->green_shift, dst->green_len) | put_field(rgb.rgbBlue, dst->blue_shift, dst->blue_len); @@ -2365,13 +2469,7 @@ } break; } - - default: - FIXME("Unsupported conversion: %d -> 16\n", src->bit_count); - return FALSE; - } - return TRUE; } static inline BOOL color_tables_match(const dib_info *d1, const dib_info *d2) @@ -2382,7 +2480,13 @@ return !memcmp(d1->color_table, d2->color_table, d1->color_table_size * sizeof(d1->color_table[0])); } -static BOOL convert_to_8(dib_info *dst, const dib_info *src, const RECT *src_rect) +static inline DWORD rgb_lookup_colortable(const dib_info *dst, BYTE r, BYTE g, BYTE b) +{ + /* Windows reduces precision to 5 bits, probably in order to build some sort of lookup cache */ + return rgb_to_pixel_colortable( dst, (r & ~7) + 4, (g & ~7) + 4, (b & ~7) + 4 ); +} + +static void convert_to_8(dib_info *dst, const dib_info *src, const RECT *src_rect) { BYTE *dst_start = get_pixel_ptr_8(dst, 0, 0), *dst_pixel; INT x, y, pad_size = ((dst->width + 3) & ~3) - (src_rect->right - src_rect->left); @@ -2403,9 +2507,7 @@ for(x = src_rect->left; x < src_rect->right; x++) { src_val = *src_pixel++; - *dst_pixel++ = colorref_to_pixel_colortable(dst, ((src_val >> 16) & 0x0000ff) | - ( src_val & 0x00ff00) | - ((src_val << 16) & 0xff0000) ); + *dst_pixel++ = rgb_lookup_colortable(dst, src_val >> 16, src_val >> 8, src_val ); } if(pad_size) memset(dst_pixel, 0, pad_size); dst_start += dst->stride; @@ -2421,9 +2523,10 @@ for(x = src_rect->left; x < src_rect->right; x++) { src_val = *src_pixel++; - *dst_pixel++ = colorref_to_pixel_colortable(dst, ( (src_val >> src->red_shift) & 0x0000ff) | - (((src_val >> src->green_shift) << 8) & 0x00ff00) | - (((src_val >> src->blue_shift) << 16) & 0xff0000) ); + *dst_pixel++ = rgb_lookup_colortable(dst, + src_val >> src->red_shift, + src_val >> src->green_shift, + src_val >> src->blue_shift ); } if(pad_size) memset(dst_pixel, 0, pad_size); dst_start += dst->stride; @@ -2432,8 +2535,22 @@ } else { - FIXME("Unsupported conversion: 32 (%08x, %08x, %08x) -> 8\n", src->red_mask, src->green_mask, src->blue_mask); - return FALSE; + for(y = src_rect->top; y < src_rect->bottom; y++) + { + dst_pixel = dst_start; + src_pixel = src_start; + for(x = src_rect->left; x < src_rect->right; x++) + { + src_val = *src_pixel++; + *dst_pixel++ = rgb_lookup_colortable(dst, + get_field(src_val, src->red_shift, src->red_len), + get_field(src_val, src->green_shift, src->green_len), + get_field(src_val, src->blue_shift, src->blue_len)); + } + if(pad_size) memset(dst_pixel, 0, pad_size); + dst_start += dst->stride; + src_start += src->stride / 4; + } } break; } @@ -2446,16 +2563,9 @@ { dst_pixel = dst_start; src_pixel = src_start; - for(x = src_rect->left; x < src_rect->right; x++) + for(x = src_rect->left; x < src_rect->right; x++, src_pixel += 3) { - RGBQUAD rgb; - rgb.rgbBlue = *src_pixel++; - rgb.rgbGreen = *src_pixel++; - rgb.rgbRed = *src_pixel++; - - *dst_pixel++ = colorref_to_pixel_colortable(dst, ( rgb.rgbRed & 0x0000ff) | - ((rgb.rgbGreen << 8) & 0x00ff00) | - ((rgb.rgbBlue << 16) & 0xff0000)); + *dst_pixel++ = rgb_lookup_colortable(dst, src_pixel[2], src_pixel[1], src_pixel[0] ); } if(pad_size) memset(dst_pixel, 0, pad_size); dst_start += dst->stride; @@ -2476,9 +2586,10 @@ for(x = src_rect->left; x < src_rect->right; x++) { src_val = *src_pixel++; - *dst_pixel++ = colorref_to_pixel_colortable(dst, ((src_val >> 7) & 0x0000f8) | ((src_val >> 12) & 0x000007) | - ((src_val << 6) & 0x00f800) | ((src_val << 1) & 0x000700) | - ((src_val << 19) & 0xf80000) | ((src_val << 14) & 0x070000) ); + *dst_pixel++ = rgb_lookup_colortable(dst, + ((src_val >> 7) & 0xf8) | ((src_val >> 12) & 0x07), + ((src_val >> 2) & 0xf8) | ((src_val >> 7) & 0x07), + ((src_val << 3) & 0xf8) | ((src_val >> 2) & 0x07) ); } if(pad_size) memset(dst_pixel, 0, pad_size); dst_start += dst->stride; @@ -2494,12 +2605,13 @@ for(x = src_rect->left; x < src_rect->right; x++) { src_val = *src_pixel++; - *dst_pixel++ = colorref_to_pixel_colortable(dst, (((src_val >> src->red_shift) << 3) & 0x0000f8) | - (((src_val >> src->red_shift) >> 2) & 0x000007) | - (((src_val >> src->green_shift) << 11) & 0x00f800) | - (((src_val >> src->green_shift) << 6) & 0x000700) | - (((src_val >> src->blue_shift) << 19) & 0xf80000) | - (((src_val >> src->blue_shift) << 14) & 0x070000) ); + *dst_pixel++ = rgb_lookup_colortable(dst, + (((src_val >> src->red_shift) << 3) & 0xf8) | + (((src_val >> src->red_shift) >> 2) & 0x07), + (((src_val >> src->green_shift) << 3) & 0xf8) | + (((src_val >> src->green_shift) >> 2) & 0x07), + (((src_val >> src->blue_shift) << 3) & 0xf8) | + (((src_val >> src->blue_shift) >> 2) & 0x07) ); } if(pad_size) memset(dst_pixel, 0, pad_size); dst_start += dst->stride; @@ -2515,12 +2627,13 @@ for(x = src_rect->left; x < src_rect->right; x++) { src_val = *src_pixel++; - *dst_pixel++ = colorref_to_pixel_colortable(dst, (((src_val >> src->red_shift) << 3) & 0x0000f8) | - (((src_val >> src->red_shift) >> 2) & 0x000007) | - (((src_val >> src->green_shift) << 10) & 0x00fc00) | - (((src_val >> src->green_shift) << 4) & 0x000300) | - (((src_val >> src->blue_shift) << 19) & 0xf80000) | - (((src_val >> src->blue_shift) << 14) & 0x070000) ); + *dst_pixel++ = rgb_lookup_colortable(dst, + (((src_val >> src->red_shift) << 3) & 0xf8) | + (((src_val >> src->red_shift) >> 2) & 0x07), + (((src_val >> src->green_shift) << 2) & 0xfc) | + (((src_val >> src->green_shift) >> 4) & 0x03), + (((src_val >> src->blue_shift) << 3) & 0xf8) | + (((src_val >> src->blue_shift) >> 2) & 0x07) ); } if(pad_size) memset(dst_pixel, 0, pad_size); dst_start += dst->stride; @@ -2529,8 +2642,22 @@ } else { - FIXME("Unsupported conversion: 16 (%08x, %08x, %08x) -> 8\n", src->red_mask, src->green_mask, src->blue_mask); - return FALSE; + for(y = src_rect->top; y < src_rect->bottom; y++) + { + dst_pixel = dst_start; + src_pixel = src_start; + for(x = src_rect->left; x < src_rect->right; x++) + { + src_val = *src_pixel++; + *dst_pixel++ = rgb_lookup_colortable(dst, + get_field(src_val, src->red_shift, src->red_len), + get_field(src_val, src->green_shift, src->green_len), + get_field(src_val, src->blue_shift, src->blue_len)); + } + if(pad_size) memset(dst_pixel, 0, pad_size); + dst_start += dst->stride; + src_start += src->stride / 2; + } } break; } @@ -2562,11 +2689,8 @@ src_pixel = src_start; for(x = src_rect->left; x < src_rect->right; x++) { - RGBQUAD rgb; - src_val = *src_pixel++; - if(src_val >= src->color_table_size) src_val = src->color_table_size - 1; - rgb = src->color_table[src_val]; - *dst_pixel++ = colorref_to_pixel_colortable(dst, RGB(rgb.rgbRed, rgb.rgbGreen, rgb.rgbBlue)); + RGBQUAD rgb = colortable_entry( src, *src_pixel++ ); + *dst_pixel++ = rgb_to_pixel_colortable(dst, rgb.rgbRed, rgb.rgbGreen, rgb.rgbBlue); } if(pad_size) memset(dst_pixel, 0, pad_size); dst_start += dst->stride; @@ -2587,12 +2711,10 @@ { RGBQUAD rgb; if(x & 1) - src_val = *src_pixel++ & 0xf; + rgb = colortable_entry( src, *src_pixel++ & 0xf ); else - src_val = (*src_pixel >> 4) & 0xf; - if(src_val >= src->color_table_size) src_val = src->color_table_size - 1; - rgb = src->color_table[src_val]; - *dst_pixel++ = colorref_to_pixel_colortable(dst, RGB(rgb.rgbRed, rgb.rgbGreen, rgb.rgbBlue)); + rgb = colortable_entry( src, *src_pixel >> 4 ); + *dst_pixel++ = rgb_to_pixel_colortable(dst, rgb.rgbRed, rgb.rgbGreen, rgb.rgbBlue); } if(pad_size) memset(dst_pixel, 0, pad_size); dst_start += dst->stride; @@ -2614,7 +2736,7 @@ src_val = (*src_pixel & pixel_masks_1[x % 8]) ? 1 : 0; if((x % 8) == 7) src_pixel++; rgb = src->color_table[src_val]; - *dst_pixel++ = colorref_to_pixel_colortable(dst, RGB(rgb.rgbRed, rgb.rgbGreen, rgb.rgbBlue)); + *dst_pixel++ = rgb_to_pixel_colortable(dst, rgb.rgbRed, rgb.rgbGreen, rgb.rgbBlue); } if(pad_size) memset(dst_pixel, 0, pad_size); dst_start += dst->stride; @@ -2622,16 +2744,10 @@ } break; } - - default: - FIXME("Unsupported conversion: %d -> 8\n", src->bit_count); - return FALSE; - } - return TRUE; } -static BOOL convert_to_4(dib_info *dst, const dib_info *src, const RECT *src_rect) +static void convert_to_4(dib_info *dst, const dib_info *src, const RECT *src_rect) { BYTE *dst_start = get_pixel_ptr_4(dst, 0, 0), *dst_pixel, dst_val; INT x, y, pad_size = ((dst->width + 7) & ~7) / 2 - (src_rect->right - src_rect->left + 1) / 2; @@ -2652,9 +2768,7 @@ for(x = src_rect->left; x < src_rect->right; x++) { src_val = *src_pixel++; - dst_val = colorref_to_pixel_colortable(dst, ((src_val >> 16) & 0x0000ff) | - ( src_val & 0x00ff00) | - ((src_val << 16) & 0xff0000) ); + dst_val = rgb_to_pixel_colortable(dst, src_val >> 16, src_val >> 8, src_val); if((x - src_rect->left) & 1) { *dst_pixel = (dst_val & 0x0f) | (*dst_pixel & 0xf0); @@ -2681,9 +2795,10 @@ for(x = src_rect->left; x < src_rect->right; x++) { src_val = *src_pixel++; - dst_val = colorref_to_pixel_colortable(dst, ( (src_val >> src->red_shift) & 0x0000ff) | - (((src_val >> src->green_shift) << 8) & 0x00ff00) | - (((src_val >> src->blue_shift) << 16) & 0xff0000) ); + dst_val = rgb_to_pixel_colortable(dst, + src_val >> src->red_shift, + src_val >> src->green_shift, + src_val >> src->blue_shift); if((x - src_rect->left) & 1) { *dst_pixel = (dst_val & 0x0f) | (*dst_pixel & 0xf0); @@ -2703,8 +2818,33 @@ } else { - FIXME("Unsupported conversion: 32 (%08x, %08x, %08x) -> 4\n", src->red_mask, src->green_mask, src->blue_mask); - return FALSE; + for(y = src_rect->top; y < src_rect->bottom; y++) + { + dst_pixel = dst_start; + src_pixel = src_start; + for(x = src_rect->left; x < src_rect->right; x++) + { + src_val = *src_pixel++; + dst_val = rgb_to_pixel_colortable(dst, + get_field(src_val, src->red_shift, src->red_len), + get_field(src_val, src->green_shift, src->green_len), + get_field(src_val, src->blue_shift, src->blue_len)); + if((x - src_rect->left) & 1) + { + *dst_pixel = (dst_val & 0x0f) | (*dst_pixel & 0xf0); + dst_pixel++; + } + else + *dst_pixel = (dst_val << 4) & 0xf0; + } + if(pad_size) + { + if((x - src_rect->left) & 1) dst_pixel++; + memset(dst_pixel, 0, pad_size); + } + dst_start += dst->stride; + src_start += src->stride / 4; + } } break; } @@ -2717,16 +2857,9 @@ { dst_pixel = dst_start; src_pixel = src_start; - for(x = src_rect->left; x < src_rect->right; x++) + for(x = src_rect->left; x < src_rect->right; x++, src_pixel += 3) { - RGBQUAD rgb; - rgb.rgbBlue = *src_pixel++; - rgb.rgbGreen = *src_pixel++; - rgb.rgbRed = *src_pixel++; - - dst_val = colorref_to_pixel_colortable(dst, ( rgb.rgbRed & 0x0000ff) | - ((rgb.rgbGreen << 8) & 0x00ff00) | - ((rgb.rgbBlue << 16) & 0xff0000)); + dst_val = rgb_to_pixel_colortable(dst, src_pixel[2], src_pixel[1], src_pixel[0]); if((x - src_rect->left) & 1) { @@ -2759,9 +2892,10 @@ for(x = src_rect->left; x < src_rect->right; x++) { src_val = *src_pixel++; - dst_val = colorref_to_pixel_colortable(dst, ((src_val >> 7) & 0x0000f8) | ((src_val >> 12) & 0x000007) | - ((src_val << 6) & 0x00f800) | ((src_val << 1) & 0x000700) | - ((src_val << 19) & 0xf80000) | ((src_val << 14) & 0x070000) ); + dst_val = rgb_to_pixel_colortable(dst, + ((src_val >> 7) & 0xf8) | ((src_val >> 12) & 0x07), + ((src_val >> 2) & 0xf8) | ((src_val >> 7) & 0x07), + ((src_val << 3) & 0xf8) | ((src_val >> 2) & 0x07) ); if((x - src_rect->left) & 1) { *dst_pixel = (dst_val & 0x0f) | (*dst_pixel & 0xf0); @@ -2788,12 +2922,13 @@ for(x = src_rect->left; x < src_rect->right; x++) { src_val = *src_pixel++; - dst_val = colorref_to_pixel_colortable(dst, (((src_val >> src->red_shift) << 3) & 0x0000f8) | - (((src_val >> src->red_shift) >> 2) & 0x000007) | - (((src_val >> src->green_shift) << 11) & 0x00f800) | - (((src_val >> src->green_shift) << 6) & 0x000700) | - (((src_val >> src->blue_shift) << 19) & 0xf80000) | - (((src_val >> src->blue_shift) << 14) & 0x070000) ); + dst_val = rgb_to_pixel_colortable(dst, + (((src_val >> src->red_shift) << 3) & 0xf8) | + (((src_val >> src->red_shift) >> 2) & 0x07), + (((src_val >> src->green_shift) << 3) & 0xf8) | + (((src_val >> src->green_shift) >> 2) & 0x07), + (((src_val >> src->blue_shift) << 3) & 0xf8) | + (((src_val >> src->blue_shift) >> 2) & 0x07) ); if((x - src_rect->left) & 1) { *dst_pixel = (dst_val & 0x0f) | (*dst_pixel & 0xf0); @@ -2820,12 +2955,13 @@ for(x = src_rect->left; x < src_rect->right; x++) { src_val = *src_pixel++; - dst_val = colorref_to_pixel_colortable(dst, (((src_val >> src->red_shift) << 3) & 0x0000f8) | - (((src_val >> src->red_shift) >> 2) & 0x000007) | - (((src_val >> src->green_shift) << 10) & 0x00fc00) | - (((src_val >> src->green_shift) << 4) & 0x000300) | - (((src_val >> src->blue_shift) << 19) & 0xf80000) | - (((src_val >> src->blue_shift) << 14) & 0x070000) ); + dst_val = rgb_to_pixel_colortable(dst, + (((src_val >> src->red_shift) << 3) & 0xf8) | + (((src_val >> src->red_shift) >> 2) & 0x07), + (((src_val >> src->green_shift) << 2) & 0xfc) | + (((src_val >> src->green_shift) >> 4) & 0x03), + (((src_val >> src->blue_shift) << 3) & 0xf8) | + (((src_val >> src->blue_shift) >> 2) & 0x07) ); if((x - src_rect->left) & 1) { *dst_pixel = (dst_val & 0x0f) | (*dst_pixel & 0xf0); @@ -2845,8 +2981,33 @@ } else { - FIXME("Unsupported conversion: 16 (%08x, %08x, %08x) -> 4\n", src->red_mask, src->green_mask, src->blue_mask); - return FALSE; + for(y = src_rect->top; y < src_rect->bottom; y++) + { + dst_pixel = dst_start; + src_pixel = src_start; + for(x = src_rect->left; x < src_rect->right; x++) + { + src_val = *src_pixel++; + dst_val = rgb_to_pixel_colortable(dst, + get_field(src_val, src->red_shift, src->red_len), + get_field(src_val, src->green_shift, src->green_len), + get_field(src_val, src->blue_shift, src->blue_len)); + if((x - src_rect->left) & 1) + { + *dst_pixel = (dst_val & 0x0f) | (*dst_pixel & 0xf0); + dst_pixel++; + } + else + *dst_pixel = (dst_val << 4) & 0xf0; + } + if(pad_size) + { + if((x - src_rect->left) & 1) dst_pixel++; + memset(dst_pixel, 0, pad_size); + } + dst_start += dst->stride; + src_start += src->stride / 2; + } } break; } @@ -2861,11 +3022,8 @@ src_pixel = src_start; for(x = src_rect->left; x < src_rect->right; x++) { - RGBQUAD rgb; - src_val = *src_pixel++; - if(src_val >= src->color_table_size) src_val = src->color_table_size - 1; - rgb = src->color_table[src_val]; - dst_val = colorref_to_pixel_colortable(dst, RGB(rgb.rgbRed, rgb.rgbGreen, rgb.rgbBlue)); + RGBQUAD rgb = colortable_entry( src, *src_pixel++ ); + dst_val = rgb_to_pixel_colortable(dst, rgb.rgbRed, rgb.rgbGreen, rgb.rgbBlue); if((x - src_rect->left) & 1) { *dst_pixel = (dst_val & 0x0f) | (*dst_pixel & 0xf0); @@ -2914,12 +3072,10 @@ { RGBQUAD rgb; if(x & 1) - src_val = *src_pixel++ & 0xf; + rgb = colortable_entry( src, *src_pixel++ & 0xf ); else - src_val = (*src_pixel >> 4) & 0xf; - if(src_val >= src->color_table_size) src_val = src->color_table_size - 1; - rgb = src->color_table[src_val]; - dst_val = colorref_to_pixel_colortable(dst, RGB(rgb.rgbRed, rgb.rgbGreen, rgb.rgbBlue)); + rgb = colortable_entry( src, *src_pixel >> 4 ); + dst_val = rgb_to_pixel_colortable(dst, rgb.rgbRed, rgb.rgbGreen, rgb.rgbBlue); if((x - src_rect->left) & 1) { *dst_pixel = (dst_val & 0x0f) | (*dst_pixel & 0xf0); @@ -2953,7 +3109,7 @@ src_val = (*src_pixel & pixel_masks_1[x % 8]) ? 1 : 0; if((x % 8) == 7) src_pixel++; rgb = src->color_table[src_val]; - dst_val = colorref_to_pixel_colortable(dst, RGB(rgb.rgbRed, rgb.rgbGreen, rgb.rgbBlue)); + dst_val = rgb_to_pixel_colortable(dst, rgb.rgbRed, rgb.rgbGreen, rgb.rgbBlue); if((x - src_rect->left) & 1) { *dst_pixel = (dst_val & 0x0f) | (*dst_pixel & 0xf0); @@ -2972,17 +3128,10 @@ } break; } - - default: - FIXME("Unsupported conversion: %d -> 4\n", src->bit_count); - return FALSE; - } - - return TRUE; } -static BOOL convert_to_1(dib_info *dst, const dib_info *src, const RECT *src_rect) +static void convert_to_1(dib_info *dst, const dib_info *src, const RECT *src_rect) { BYTE *dst_start = get_pixel_ptr_1(dst, 0, 0), *dst_pixel, dst_val; INT x, y, pad_size = ((dst->width + 31) & ~31) / 8 - (src_rect->right - src_rect->left + 7) / 8; @@ -3006,9 +3155,7 @@ for(x = src_rect->left, bit_pos = 0; x < src_rect->right; x++) { src_val = *src_pixel++; - dst_val = colorref_to_pixel_colortable(dst, ((src_val >> 16) & 0x0000ff) | - ( src_val & 0x00ff00) | - ((src_val << 16) & 0xff0000) ) ? 0xff : 0; + dst_val = rgb_to_pixel_colortable(dst, src_val >> 16, src_val >> 8, src_val) ? 0xff : 0; if(bit_pos == 0) *dst_pixel = 0; *dst_pixel = (*dst_pixel & ~pixel_masks_1[bit_pos]) | (dst_val & pixel_masks_1[bit_pos]); @@ -3037,9 +3184,10 @@ for(x = src_rect->left, bit_pos = 0; x < src_rect->right; x++) { src_val = *src_pixel++; - dst_val = colorref_to_pixel_colortable(dst, ( (src_val >> src->red_shift) & 0x0000ff) | - (((src_val >> src->green_shift) << 8) & 0x00ff00) | - (((src_val >> src->blue_shift) << 16) & 0xff0000) ) ? 0xff : 0; + dst_val = rgb_to_pixel_colortable(dst, + src_val >> src->red_shift, + src_val >> src->green_shift, + src_val >> src->blue_shift) ? 0xff : 0; if(bit_pos == 0) *dst_pixel = 0; *dst_pixel = (*dst_pixel & ~pixel_masks_1[bit_pos]) | (dst_val & pixel_masks_1[bit_pos]); @@ -3061,8 +3209,35 @@ } else { - FIXME("Unsupported conversion: 32 (%08x, %08x, %08x) -> 1\n", src->red_mask, src->green_mask, src->blue_mask); - return FALSE; + for(y = src_rect->top; y < src_rect->bottom; y++) + { + dst_pixel = dst_start; + src_pixel = src_start; + for(x = src_rect->left, bit_pos = 0; x < src_rect->right; x++) + { + src_val = *src_pixel++; + dst_val = rgb_to_pixel_colortable(dst, + get_field(src_val, src->red_shift, src->red_len), + get_field(src_val, src->green_shift, src->green_len), + get_field(src_val, src->blue_shift, src->blue_len)) ? 0xff : 0; + + if(bit_pos == 0) *dst_pixel = 0; + *dst_pixel = (*dst_pixel & ~pixel_masks_1[bit_pos]) | (dst_val & pixel_masks_1[bit_pos]); + + if(++bit_pos == 8) + { + dst_pixel++; + bit_pos = 0; + } + } + if(pad_size) + { + if(bit_pos != 0) dst_pixel++; + memset(dst_pixel, 0, pad_size); + } + dst_start += dst->stride; + src_start += src->stride / 4; + } } break; } @@ -3075,16 +3250,9 @@ { dst_pixel = dst_start; src_pixel = src_start; - for(x = src_rect->left, bit_pos = 0; x < src_rect->right; x++) + for(x = src_rect->left, bit_pos = 0; x < src_rect->right; x++, src_pixel += 3) { - RGBQUAD rgb; - rgb.rgbBlue = *src_pixel++; - rgb.rgbGreen = *src_pixel++; - rgb.rgbRed = *src_pixel++; - - dst_val = colorref_to_pixel_colortable(dst, ( rgb.rgbRed & 0x0000ff) | - ((rgb.rgbGreen << 8) & 0x00ff00) | - ((rgb.rgbBlue << 16) & 0xff0000)) ? 0xff : 0; + dst_val = rgb_to_pixel_colortable(dst, src_pixel[2], src_pixel[1], src_pixel[0]) ? 0xff : 0; if(bit_pos == 0) *dst_pixel = 0; *dst_pixel = (*dst_pixel & ~pixel_masks_1[bit_pos]) | (dst_val & pixel_masks_1[bit_pos]); @@ -3118,9 +3286,10 @@ for(x = src_rect->left, bit_pos = 0; x < src_rect->right; x++) { src_val = *src_pixel++; - dst_val = colorref_to_pixel_colortable(dst, ((src_val >> 7) & 0x0000f8) | ((src_val >> 12) & 0x000007) | - ((src_val << 6) & 0x00f800) | ((src_val << 1) & 0x000700) | - ((src_val << 19) & 0xf80000) | ((src_val << 14) & 0x070000) ) ? 0xff : 0; + dst_val = rgb_to_pixel_colortable(dst, + ((src_val >> 7) & 0xf8) | ((src_val >> 12) & 0x07), + ((src_val >> 2) & 0xf8) | ((src_val >> 7) & 0x07), + ((src_val << 3) & 0xf8) | ((src_val >> 2) & 0x07) ) ? 0xff : 0; if(bit_pos == 0) *dst_pixel = 0; *dst_pixel = (*dst_pixel & ~pixel_masks_1[bit_pos]) | (dst_val & pixel_masks_1[bit_pos]); @@ -3149,12 +3318,13 @@ for(x = src_rect->left, bit_pos = 0; x < src_rect->right; x++) { src_val = *src_pixel++; - dst_val = colorref_to_pixel_colortable(dst, (((src_val >> src->red_shift) << 3) & 0x0000f8) | - (((src_val >> src->red_shift) >> 2) & 0x000007) | - (((src_val >> src->green_shift) << 11) & 0x00f800) | - (((src_val >> src->green_shift) << 6) & 0x000700) | - (((src_val >> src->blue_shift) << 19) & 0xf80000) | - (((src_val >> src->blue_shift) << 14) & 0x070000) ) ? 0xff : 0; + dst_val = rgb_to_pixel_colortable(dst, + (((src_val >> src->red_shift) << 3) & 0xf8) | + (((src_val >> src->red_shift) >> 2) & 0x07), + (((src_val >> src->green_shift) << 3) & 0xf8) | + (((src_val >> src->green_shift) >> 2) & 0x07), + (((src_val >> src->blue_shift) << 3) & 0xf8) | + (((src_val >> src->blue_shift) >> 2) & 0x07) ) ? 0xff : 0; if(bit_pos == 0) *dst_pixel = 0; *dst_pixel = (*dst_pixel & ~pixel_masks_1[bit_pos]) | (dst_val & pixel_masks_1[bit_pos]); @@ -3182,12 +3352,13 @@ for(x = src_rect->left, bit_pos = 0; x < src_rect->right; x++) { src_val = *src_pixel++; - dst_val = colorref_to_pixel_colortable(dst, (((src_val >> src->red_shift) << 3) & 0x0000f8) | - (((src_val >> src->red_shift) >> 2) & 0x000007) | - (((src_val >> src->green_shift) << 10) & 0x00fc00) | - (((src_val >> src->green_shift) << 4) & 0x000300) | - (((src_val >> src->blue_shift) << 19) & 0xf80000) | - (((src_val >> src->blue_shift) << 14) & 0x070000) ); + dst_val = rgb_to_pixel_colortable(dst, + (((src_val >> src->red_shift) << 3) & 0xf8) | + (((src_val >> src->red_shift) >> 2) & 0x07), + (((src_val >> src->green_shift) << 2) & 0xfc) | + (((src_val >> src->green_shift) >> 4) & 0x03), + (((src_val >> src->blue_shift) << 3) & 0xf8) | + (((src_val >> src->blue_shift) >> 2) & 0x07) ) ? 0xff : 0; if(bit_pos == 0) *dst_pixel = 0; *dst_pixel = (*dst_pixel & ~pixel_masks_1[bit_pos]) | (dst_val & pixel_masks_1[bit_pos]); @@ -3208,8 +3379,34 @@ } else { - FIXME("Unsupported conversion: 16 (%08x, %08x, %08x) -> 1\n", src->red_mask, src->green_mask, src->blue_mask); - return FALSE; + for(y = src_rect->top; y < src_rect->bottom; y++) + { + dst_pixel = dst_start; + src_pixel = src_start; + for(x = src_rect->left, bit_pos = 0; x < src_rect->right; x++) + { + src_val = *src_pixel++; + dst_val = rgb_to_pixel_colortable(dst, + get_field(src_val, src->red_shift, src->red_len), + get_field(src_val, src->green_shift, src->green_len), + get_field(src_val, src->blue_shift, src->blue_len)) ? 0xff : 0; + if(bit_pos == 0) *dst_pixel = 0; + *dst_pixel = (*dst_pixel & ~pixel_masks_1[bit_pos]) | (dst_val & pixel_masks_1[bit_pos]); + + if(++bit_pos == 8) + { + dst_pixel++; + bit_pos = 0; + } + } + if(pad_size) + { + if(bit_pos != 0) dst_pixel++; + memset(dst_pixel, 0, pad_size); + } + dst_start += dst->stride; + src_start += src->stride / 2; + } } break; } @@ -3224,11 +3421,8 @@ src_pixel = src_start; for(x = src_rect->left, bit_pos = 0; x < src_rect->right; x++) { - RGBQUAD rgb; - src_val = *src_pixel++; - if(src_val >= src->color_table_size) src_val = src->color_table_size - 1; - rgb = src->color_table[src_val]; - dst_val = colorref_to_pixel_colortable(dst, RGB(rgb.rgbRed, rgb.rgbGreen, rgb.rgbBlue)) ? 0xff : 0; + RGBQUAD rgb = colortable_entry( src, *src_pixel++ ); + dst_val = rgb_to_pixel_colortable(dst, rgb.rgbRed, rgb.rgbGreen, rgb.rgbBlue) ? 0xff : 0; if(bit_pos == 0) *dst_pixel = 0; *dst_pixel = (*dst_pixel & ~pixel_masks_1[bit_pos]) | (dst_val & pixel_masks_1[bit_pos]); @@ -3262,12 +3456,10 @@ { RGBQUAD rgb; if(x & 1) - src_val = *src_pixel++ & 0xf; + rgb = colortable_entry( src, *src_pixel++ & 0xf ); else - src_val = (*src_pixel >> 4) & 0xf; - if(src_val >= src->color_table_size) src_val = src->color_table_size - 1; - rgb = src->color_table[src_val]; - dst_val = colorref_to_pixel_colortable(dst, RGB(rgb.rgbRed, rgb.rgbGreen, rgb.rgbBlue)) ? 0xff : 0; + rgb = colortable_entry( src, *src_pixel >> 4 ); + dst_val = rgb_to_pixel_colortable(dst, rgb.rgbRed, rgb.rgbGreen, rgb.rgbBlue) ? 0xff : 0; if(bit_pos == 0) *dst_pixel = 0; *dst_pixel = (*dst_pixel & ~pixel_masks_1[bit_pos]) | (dst_val & pixel_masks_1[bit_pos]); @@ -3307,7 +3499,7 @@ src_val = (*src_pixel & pixel_masks_1[x % 8]) ? 1 : 0; if((x % 8) == 7) src_pixel++; rgb = src->color_table[src_val]; - dst_val = colorref_to_pixel_colortable(dst, RGB(rgb.rgbRed, rgb.rgbGreen, rgb.rgbBlue)) ? 0xff : 0; + dst_val = rgb_to_pixel_colortable(dst, rgb.rgbRed, rgb.rgbGreen, rgb.rgbBlue) ? 0xff : 0; if(bit_pos == 0) *dst_pixel = 0; *dst_pixel = (*dst_pixel & ~pixel_masks_1[bit_pos]) | (dst_val & pixel_masks_1[bit_pos]); @@ -3328,18 +3520,240 @@ } break; } + } +} - default: - FIXME("Unsupported conversion: %d -> 1\n", src->bit_count); - return FALSE; +static void convert_to_null(dib_info *dst, const dib_info *src, const RECT *src_rect) +{ +} +static inline BYTE blend_color(BYTE dst, BYTE src, DWORD alpha) +{ + return (src * alpha + dst * (255 - alpha) + 127) / 255; +} + +static inline DWORD blend_argb( DWORD dst, DWORD src, DWORD alpha ) +{ + return (blend_color( dst, src, alpha ) | + blend_color( dst >> 8, src >> 8, alpha ) << 8 | + blend_color( dst >> 16, src >> 16, alpha ) << 16 | + blend_color( dst >> 24, src >> 24, alpha ) << 24); +} + +static inline DWORD blend_argb_alpha( DWORD dst, DWORD src, DWORD alpha ) +{ + BYTE b = ((BYTE)src * alpha + 127) / 255; + BYTE g = ((BYTE)(src >> 8) * alpha + 127) / 255; + BYTE r = ((BYTE)(src >> 16) * alpha + 127) / 255; + alpha = ((BYTE)(src >> 24) * alpha + 127) / 255; + return ((b + ((BYTE)dst * (255 - alpha) + 127) / 255) | + (g + ((BYTE)(dst >> 8) * (255 - alpha) + 127) / 255) << 8 | + (r + ((BYTE)(dst >> 16) * (255 - alpha) + 127) / 255) << 16 | + (alpha + ((BYTE)(dst >> 24) * (255 - alpha) + 127) / 255) << 24); +} + +static inline DWORD blend_rgb( BYTE dst_r, BYTE dst_g, BYTE dst_b, DWORD src, BLENDFUNCTION blend ) +{ + if (blend.AlphaFormat & AC_SRC_ALPHA) + { + DWORD alpha = blend.SourceConstantAlpha; + BYTE src_b = ((BYTE)src * alpha + 127) / 255; + BYTE src_g = ((BYTE)(src >> 8) * alpha + 127) / 255; + BYTE src_r = ((BYTE)(src >> 16) * alpha + 127) / 255; + alpha = ((BYTE)(src >> 24) * alpha + 127) / 255; + return ((src_b + (dst_b * (255 - alpha) + 127) / 255) | + (src_g + (dst_g * (255 - alpha) + 127) / 255) << 8 | + (src_r + (dst_r * (255 - alpha) + 127) / 255) << 16); } - return TRUE; + return (blend_color( dst_b, src, blend.SourceConstantAlpha ) | + blend_color( dst_g, src >> 8, blend.SourceConstantAlpha ) << 8 | + blend_color( dst_r, src >> 16, blend.SourceConstantAlpha ) << 16); } -static BOOL convert_to_null(dib_info *dst, const dib_info *src, const RECT *src_rect) +static void blend_rect_8888(const dib_info *dst, const RECT *rc, + const dib_info *src, const POINT *origin, BLENDFUNCTION blend) +{ + DWORD *src_ptr = get_pixel_ptr_32( src, origin->x, origin->y ); + DWORD *dst_ptr = get_pixel_ptr_32( dst, rc->left, rc->top ); + int x, y; + + if (blend.AlphaFormat & AC_SRC_ALPHA) + for (y = rc->top; y < rc->bottom; y++, dst_ptr += dst->stride / 4, src_ptr += src->stride / 4) + for (x = 0; x < rc->right - rc->left; x++) + dst_ptr[x] = blend_argb_alpha( dst_ptr[x], src_ptr[x], blend.SourceConstantAlpha ); + else + for (y = rc->top; y < rc->bottom; y++, dst_ptr += dst->stride / 4, src_ptr += src->stride / 4) + for (x = 0; x < rc->right - rc->left; x++) + dst_ptr[x] = blend_argb( dst_ptr[x], src_ptr[x], blend.SourceConstantAlpha ); +} + +static void blend_rect_32(const dib_info *dst, const RECT *rc, + const dib_info *src, const POINT *origin, BLENDFUNCTION blend) +{ + DWORD *src_ptr = get_pixel_ptr_32( src, origin->x, origin->y ); + DWORD *dst_ptr = get_pixel_ptr_32( dst, rc->left, rc->top ); + int x, y; + + if (dst->red_len == 8 && dst->green_len == 8 && dst->blue_len == 8) + { + for (y = rc->top; y < rc->bottom; y++, dst_ptr += dst->stride / 4, src_ptr += src->stride / 4) + { + for (x = 0; x < rc->right - rc->left; x++) + { + DWORD val = blend_rgb( dst_ptr[x] >> dst->red_shift, + dst_ptr[x] >> dst->green_shift, + dst_ptr[x] >> dst->blue_shift, + src_ptr[x], blend ); + dst_ptr[x] = ((( val & 0xff) << dst->blue_shift) | + (((val >> 8) & 0xff) << dst->green_shift) | + (((val >> 16) & 0xff) << dst->red_shift)); + } + } + } + else + { + for (y = rc->top; y < rc->bottom; y++, dst_ptr += dst->stride / 4, src_ptr += src->stride / 4) + { + for (x = 0; x < rc->right - rc->left; x++) + { + DWORD val = blend_rgb( get_field( dst_ptr[x], dst->red_shift, dst->red_len ), + get_field( dst_ptr[x], dst->green_shift, dst->green_len ), + get_field( dst_ptr[x], dst->blue_shift, dst->blue_len ), + src_ptr[x], blend ); + dst_ptr[x] = (put_field( val >> 16, dst->red_shift, dst->red_len ) | + put_field( val >> 8, dst->green_shift, dst->green_len ) | + put_field( val, dst->blue_shift, dst->blue_len )); + } + } + } +} + +static void blend_rect_24(const dib_info *dst, const RECT *rc, + const dib_info *src, const POINT *origin, BLENDFUNCTION blend) +{ + DWORD *src_ptr = get_pixel_ptr_32( src, origin->x, origin->y ); + BYTE *dst_ptr = get_pixel_ptr_24( dst, rc->left, rc->top ); + int x, y; + + for (y = rc->top; y < rc->bottom; y++, dst_ptr += dst->stride, src_ptr += src->stride / 4) + { + for (x = 0; x < rc->right - rc->left; x++) + { + DWORD val = blend_rgb( dst_ptr[x * 3 + 2], dst_ptr[x * 3 + 1], dst_ptr[x * 3], + src_ptr[x], blend ); + dst_ptr[x * 3] = val; + dst_ptr[x * 3 + 1] = val >> 8; + dst_ptr[x * 3 + 2] = val >> 16; + } + } +} + +static void blend_rect_555(const dib_info *dst, const RECT *rc, + const dib_info *src, const POINT *origin, BLENDFUNCTION blend) +{ + DWORD *src_ptr = get_pixel_ptr_32( src, origin->x, origin->y ); + WORD *dst_ptr = get_pixel_ptr_16( dst, rc->left, rc->top ); + int x, y; + + for (y = rc->top; y < rc->bottom; y++, dst_ptr += dst->stride / 2, src_ptr += src->stride / 4) + { + for (x = 0; x < rc->right - rc->left; x++) + { + DWORD val = blend_rgb( ((dst_ptr[x] >> 7) & 0xf8) | ((dst_ptr[x] >> 12) & 0x07), + ((dst_ptr[x] >> 2) & 0xf8) | ((dst_ptr[x] >> 7) & 0x07), + ((dst_ptr[x] << 3) & 0xf8) | ((dst_ptr[x] >> 2) & 0x07), + src_ptr[x], blend ); + dst_ptr[x] = ((val >> 9) & 0x7c00) | ((val >> 6) & 0x03e0) | ((val >> 3) & 0x001f); + } + } +} + +static void blend_rect_16(const dib_info *dst, const RECT *rc, + const dib_info *src, const POINT *origin, BLENDFUNCTION blend) +{ + DWORD *src_ptr = get_pixel_ptr_32( src, origin->x, origin->y ); + WORD *dst_ptr = get_pixel_ptr_16( dst, rc->left, rc->top ); + int x, y; + + for (y = rc->top; y < rc->bottom; y++, dst_ptr += dst->stride / 2, src_ptr += src->stride / 4) + { + for (x = 0; x < rc->right - rc->left; x++) + { + DWORD val = blend_rgb( get_field( dst_ptr[x], dst->red_shift, dst->red_len ), + get_field( dst_ptr[x], dst->green_shift, dst->green_len ), + get_field( dst_ptr[x], dst->blue_shift, dst->blue_len ), + src_ptr[x], blend ); + dst_ptr[x] = (put_field((val >> 16), dst->red_shift, dst->red_len) | + put_field((val >> 8), dst->green_shift, dst->green_len) | + put_field( val, dst->blue_shift, dst->blue_len)); + } + } +} + +static void blend_rect_8(const dib_info *dst, const RECT *rc, + const dib_info *src, const POINT *origin, BLENDFUNCTION blend) +{ + DWORD *src_ptr = get_pixel_ptr_32( src, origin->x, origin->y ); + BYTE *dst_ptr = get_pixel_ptr_8( dst, rc->left, rc->top ); + int x, y; + + for (y = rc->top; y < rc->bottom; y++, dst_ptr += dst->stride, src_ptr += src->stride / 4) + { + for (x = 0; x < rc->right - rc->left; x++) + { + RGBQUAD rgb = colortable_entry( dst, dst_ptr[x] ); + DWORD val = blend_rgb( rgb.rgbRed, rgb.rgbGreen, rgb.rgbBlue, src_ptr[x], blend ); + dst_ptr[x] = rgb_lookup_colortable( dst, val >> 16, val >> 8, val ); + } + } +} + +static void blend_rect_4(const dib_info *dst, const RECT *rc, + const dib_info *src, const POINT *origin, BLENDFUNCTION blend) +{ + DWORD *src_ptr = get_pixel_ptr_32( src, origin->x - rc->left, origin->y ); + BYTE *dst_ptr = get_pixel_ptr_4( dst, 0, rc->top ); + int x, y; + + for (y = rc->top; y < rc->bottom; y++, dst_ptr += dst->stride, src_ptr += src->stride / 4) + { + for (x = rc->left; x < rc->right; x++) + { + DWORD val = ((x & 1) ? dst_ptr[x / 2] : (dst_ptr[x / 2] >> 4)) & 0x0f; + RGBQUAD rgb = colortable_entry( dst, val ); + val = blend_rgb( rgb.rgbRed, rgb.rgbGreen, rgb.rgbBlue, src_ptr[x], blend ); + val = rgb_lookup_colortable( dst, val >> 16, val >> 8, val ); + if (x & 1) + dst_ptr[x / 2] = val | (dst_ptr[x / 2] & 0xf0); + else + dst_ptr[x / 2] = (val << 4) | (dst_ptr[x / 2] & 0x0f); + } + } +} + +static void blend_rect_1(const dib_info *dst, const RECT *rc, + const dib_info *src, const POINT *origin, BLENDFUNCTION blend) +{ + DWORD *src_ptr = get_pixel_ptr_32( src, origin->x - rc->left, origin->y ); + BYTE *dst_ptr = get_pixel_ptr_1( dst, 0, rc->top ); + int x, y; + + for (y = rc->top; y < rc->bottom; y++, dst_ptr += dst->stride, src_ptr += src->stride / 4) + { + for (x = rc->left; x < rc->right; x++) + { + DWORD val = (dst_ptr[x / 8] & pixel_masks_1[x % 8]) ? 1 : 0; + RGBQUAD rgb = dst->color_table[val]; + val = blend_rgb( rgb.rgbRed, rgb.rgbGreen, rgb.rgbBlue, src_ptr[x], blend ); + val = rgb_to_pixel_colortable(dst, val >> 16, val >> 8, val) ? 0xff : 0; + dst_ptr[x / 8] = (dst_ptr[x / 8] & ~pixel_masks_1[x % 8]) | (val & pixel_masks_1[x % 8]); + } + } +} + +static void blend_rect_null(const dib_info *dst, const RECT *rc, + const dib_info *src, const POINT *origin, BLENDFUNCTION blend) { - return FALSE; } static BOOL create_rop_masks_32(const dib_info *dib, const dib_info *hatch, const rop_mask *fg, const rop_mask *bg, rop_mask_bits *bits) @@ -3980,7 +4394,10 @@ solid_rects_32, pattern_rects_32, copy_rect_32, + blend_rect_8888, + get_pixel_32, colorref_to_pixel_888, + pixel_to_colorref_888, convert_to_8888, create_rop_masks_32, stretch_row_32, @@ -3992,7 +4409,10 @@ solid_rects_32, pattern_rects_32, copy_rect_32, + blend_rect_32, + get_pixel_32, colorref_to_pixel_masks, + pixel_to_colorref_masks, convert_to_32, create_rop_masks_32, stretch_row_32, @@ -4004,7 +4424,10 @@ solid_rects_24, pattern_rects_24, copy_rect_24, + blend_rect_24, + get_pixel_24, colorref_to_pixel_888, + pixel_to_colorref_888, convert_to_24, create_rop_masks_24, stretch_row_24, @@ -4016,7 +4439,10 @@ solid_rects_16, pattern_rects_16, copy_rect_16, + blend_rect_555, + get_pixel_16, colorref_to_pixel_555, + pixel_to_colorref_555, convert_to_555, create_rop_masks_16, stretch_row_16, @@ -4028,7 +4454,10 @@ solid_rects_16, pattern_rects_16, copy_rect_16, + blend_rect_16, + get_pixel_16, colorref_to_pixel_masks, + pixel_to_colorref_masks, convert_to_16, create_rop_masks_16, stretch_row_16, @@ -4040,7 +4469,10 @@ solid_rects_8, pattern_rects_8, copy_rect_8, + blend_rect_8, + get_pixel_8, colorref_to_pixel_colortable, + pixel_to_colorref_colortable, convert_to_8, create_rop_masks_8, stretch_row_8, @@ -4052,7 +4484,10 @@ solid_rects_4, pattern_rects_4, copy_rect_4, + blend_rect_4, + get_pixel_4, colorref_to_pixel_colortable, + pixel_to_colorref_colortable, convert_to_4, create_rop_masks_4, stretch_row_4, @@ -4064,7 +4499,10 @@ solid_rects_1, pattern_rects_1, copy_rect_1, + blend_rect_1, + get_pixel_1, colorref_to_pixel_colortable, + pixel_to_colorref_colortable, convert_to_1, create_rop_masks_1, stretch_row_1, @@ -4076,7 +4514,10 @@ solid_rects_null, pattern_rects_null, copy_rect_null, + blend_rect_null, + get_pixel_null, colorref_to_pixel_null, + pixel_to_colorref_null, convert_to_null, create_rop_masks_null, stretch_row_null, diff -Nru wine1.3-1.3.30/dlls/gdi32/driver.c wine1.3-1.3.31/dlls/gdi32/driver.c --- wine1.3-1.3.30/dlls/gdi32/driver.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/driver.c 2011-10-21 18:38:36.000000000 +0000 @@ -49,6 +49,8 @@ static struct list drivers = LIST_INIT( drivers ); static struct graphics_driver *display_driver; +const struct gdi_dc_funcs *font_driver = NULL; + static CRITICAL_SECTION driver_section; static CRITICAL_SECTION_DEBUG critsect_debug = { @@ -138,7 +140,7 @@ /********************************************************************** * DRIVER_load_driver */ -const DC_FUNCTIONS *DRIVER_load_driver( LPCWSTR name ) +const struct gdi_dc_funcs *DRIVER_load_driver( LPCWSTR name ) { HMODULE module; struct graphics_driver *driver, *new_driver; @@ -196,12 +198,6 @@ return TRUE; } -static DWORD nulldrv_BlendImage( PHYSDEV dev, BITMAPINFO *info, const struct gdi_image_bits *bits, - struct bitblt_coords *src, struct bitblt_coords *dst, BLENDFUNCTION func ) -{ - return TRUE; -} - static INT nulldrv_ChoosePixelFormat( PHYSDEV dev, const PIXELFORMATDESCRIPTOR *descr ) { return 0; @@ -463,7 +459,7 @@ return brush; } -static HFONT nulldrv_SelectFont( PHYSDEV dev, HFONT font, HANDLE gdi_font ) +static HFONT nulldrv_SelectFont( PHYSDEV dev, HFONT font ) { return 0; } @@ -657,7 +653,7 @@ return FALSE; } -const DC_FUNCTIONS null_driver = +const struct gdi_dc_funcs null_driver = { nulldrv_AbortDoc, /* pAbortDoc */ nulldrv_AbortPath, /* pAbortPath */ diff -Nru wine1.3-1.3.30/dlls/gdi32/enhmfdrv/enhmetafiledrv.h wine1.3-1.3.31/dlls/gdi32/enhmfdrv/enhmetafiledrv.h --- wine1.3-1.3.30/dlls/gdi32/enhmfdrv/enhmetafiledrv.h 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/enhmfdrv/enhmetafiledrv.h 2011-10-21 18:38:36.000000000 +0000 @@ -110,7 +110,7 @@ extern HBITMAP EMFDRV_SelectBitmap( PHYSDEV dev, HBITMAP handle ) DECLSPEC_HIDDEN; extern HBRUSH EMFDRV_SelectBrush( PHYSDEV dev, HBRUSH handle ) DECLSPEC_HIDDEN; extern BOOL EMFDRV_SelectClipPath( PHYSDEV dev, INT iMode ) DECLSPEC_HIDDEN; -extern HFONT EMFDRV_SelectFont( PHYSDEV dev, HFONT handle, HANDLE gdiFont ) DECLSPEC_HIDDEN; +extern HFONT EMFDRV_SelectFont( PHYSDEV dev, HFONT handle ) DECLSPEC_HIDDEN; extern HPEN EMFDRV_SelectPen( PHYSDEV dev, HPEN handle ) DECLSPEC_HIDDEN; extern HPALETTE EMFDRV_SelectPalette( PHYSDEV dev, HPALETTE hPal, BOOL force ) DECLSPEC_HIDDEN; extern INT EMFDRV_SetArcDirection( PHYSDEV dev, INT arcDirection ) DECLSPEC_HIDDEN; diff -Nru wine1.3-1.3.30/dlls/gdi32/enhmfdrv/init.c wine1.3-1.3.31/dlls/gdi32/enhmfdrv/init.c --- wine1.3-1.3.30/dlls/gdi32/enhmfdrv/init.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/enhmfdrv/init.c 2011-10-21 18:38:36.000000000 +0000 @@ -34,7 +34,7 @@ static BOOL EMFDRV_DeleteDC( PHYSDEV dev ); -static const DC_FUNCTIONS EMFDRV_Funcs = +static const struct gdi_dc_funcs EMFDRV_Funcs = { NULL, /* pAbortDoc */ EMFDRV_AbortPath, /* pAbortPath */ diff -Nru wine1.3-1.3.30/dlls/gdi32/enhmfdrv/objects.c wine1.3-1.3.31/dlls/gdi32/enhmfdrv/objects.c --- wine1.3-1.3.30/dlls/gdi32/enhmfdrv/objects.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/enhmfdrv/objects.c 2011-10-21 18:38:36.000000000 +0000 @@ -310,14 +310,14 @@ /*********************************************************************** * EMFDRV_SelectFont */ -HFONT EMFDRV_SelectFont( PHYSDEV dev, HFONT hFont, HANDLE gdiFont ) +HFONT EMFDRV_SelectFont( PHYSDEV dev, HFONT hFont ) { EMFDRV_PDEVICE *physDev = (EMFDRV_PDEVICE*)dev; EMRSELECTOBJECT emr; DWORD index; int i; - if (physDev->restoring) return 0; /* don't output SelectObject records during RestoreDC */ + if (physDev->restoring) goto done; /* don't output SelectObject records during RestoreDC */ /* If the object is a stock font object, do not need to create it. * See definitions in wingdi.h for range of stock fonts. @@ -337,7 +337,7 @@ if((index = EMFDRV_FindObject(dev, hFont)) != 0) goto found; - if (!(index = EMFDRV_CreateFontIndirect(dev, hFont ))) return HGDI_ERROR; + if (!(index = EMFDRV_CreateFontIndirect(dev, hFont ))) return 0; GDI_hdc_using_object(hFont, dev->hdc); found: @@ -345,8 +345,11 @@ emr.emr.nSize = sizeof(emr); emr.ihObject = index; if(!EMFDRV_WriteRecord( dev, &emr.emr )) - return HGDI_ERROR; - return 0; + return 0; +done: + dev = GET_NEXT_PHYSDEV( dev, pSelectFont ); + dev->funcs->pSelectFont( dev, hFont ); + return hFont; } diff -Nru wine1.3-1.3.30/dlls/gdi32/font.c wine1.3-1.3.31/dlls/gdi32/font.c --- wine1.3-1.3.30/dlls/gdi32/font.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/font.c 2011-10-21 18:38:36.000000000 +0000 @@ -230,11 +230,16 @@ ptmA->tmFirstChar = 0x1e; ptmA->tmLastChar = 0xff; /* win9x behaviour - we need the OS2 table data to calculate correctly */ } - else + else if (ptmW->tmPitchAndFamily & TMPF_TRUETYPE) { ptmA->tmFirstChar = ptmW->tmDefaultChar - 1; ptmA->tmLastChar = min(ptmW->tmLastChar, 0xff); } + else + { + ptmA->tmFirstChar = min(ptmW->tmFirstChar, 0xff); + ptmA->tmLastChar = min(ptmW->tmLastChar, 0xff); + } ptmA->tmDefaultChar = ptmW->tmDefaultChar; ptmA->tmBreakChar = ptmW->tmBreakChar; ptmA->tmItalic = ptmW->tmItalic; @@ -516,14 +521,6 @@ /*********************************************************************** * FONT_SelectObject - * - * If the driver supports vector fonts we create a gdi font first and - * then call the driver to give it a chance to supply its own device - * font. If the driver wants to do this it returns TRUE and we can - * delete the gdi font, if the driver wants to use the gdi font it - * should return FALSE, to signal an error return GDI_ERROR. For - * drivers that don't support vector fonts they must supply their own - * font. */ static HGDIOBJ FONT_SelectObject( HGDIOBJ handle, HDC hdc ) { @@ -539,26 +536,16 @@ return 0; } - if (GetDeviceCaps( dc->hSelf, TEXTCAPS ) & TC_VA_ABLE) - dc->gdiFont = WineEngCreateFontInstance( dc, handle ); - physdev = GET_DC_PHYSDEV( dc, pSelectFont ); - ret = physdev->funcs->pSelectFont( physdev, handle, dc->gdiFont ); - - if (ret && dc->gdiFont) dc->gdiFont = 0; - - if (ret == HGDI_ERROR) - { - GDI_dec_ref_count( handle ); - ret = 0; /* SelectObject returns 0 on error */ - } - else + if (physdev->funcs->pSelectFont( physdev, handle )) { ret = dc->hFont; dc->hFont = handle; update_font_code_page( dc ); GDI_dec_ref_count( ret ); } + else GDI_dec_ref_count( handle ); + release_dc_ptr( dc ); return ret; } @@ -920,9 +907,14 @@ { BOOL ret = FALSE; INT wlen; - LPWSTR p = FONT_mbtowc(hdc, str, count, &wlen, NULL); + LPWSTR p; + + if (count < 0) return FALSE; - if (p) { + p = FONT_mbtowc(hdc, str, count, &wlen, NULL); + + if (p) + { ret = GetTextExtentPoint32W( hdc, p, wlen, size ); HeapFree( GetProcessHeap(), 0, p ); } @@ -975,10 +967,15 @@ LPINT nfit, LPINT dxs, LPSIZE size ) { BOOL ret = FALSE; - DC * dc = get_dc_ptr( hdc ); + DC *dc; + + if (count < 0) return FALSE; + + dc = get_dc_ptr( hdc ); if (!dc) return FALSE; - if(dc->gdiFont) { + if(dc->gdiFont) + { ret = WineEngGetTextExtentExPointI(dc->gdiFont, indices, count, max_ext, nfit, dxs, size); size->cx = abs(INTERNAL_XDSTOWS(dc, size->cx)); size->cy = abs(INTERNAL_YDSTOWS(dc, size->cy)); @@ -1051,11 +1048,15 @@ INT wlen; INT *walpDx = NULL; LPWSTR p = NULL; - - if (alpDx && - NULL == (walpDx = HeapAlloc(GetProcessHeap(), 0, count * sizeof(INT)))) - return FALSE; - + + if (count < 0) return FALSE; + + if (alpDx) + { + walpDx = HeapAlloc( GetProcessHeap(), 0, count * sizeof(INT) ); + if (!walpDx) return FALSE; + } + p = FONT_mbtowc(hdc, str, count, &wlen, NULL); ret = GetTextExtentExPointW( hdc, p, wlen, maxExt, lpnFit, walpDx, size); if (walpDx) @@ -1115,12 +1116,14 @@ DC *dc; BOOL ret = FALSE; TEXTMETRICW tm; + PHYSDEV dev; TRACE("(%p, %s, %d)\n",hdc,debugstr_wn(str,count),maxExt); + if (count < 0) return FALSE; + dc = get_dc_ptr(hdc); - if (! dc) - return FALSE; + if (!dc) return FALSE; GetTextMetricsW(hdc, &tm); @@ -1139,14 +1142,8 @@ else dxs = alpDx; - if (dc->gdiFont) - ret = WineEngGetTextExtentExPoint(dc->gdiFont, str, count, - 0, NULL, dxs, size); - else - { - PHYSDEV physdev = GET_DC_PHYSDEV( dc, pGetTextExtentExPoint ); - ret = physdev->funcs->pGetTextExtentExPoint(physdev, str, count, 0, NULL, dxs, size); - } + dev = GET_DC_PHYSDEV( dc, pGetTextExtentExPoint ); + ret = dev->funcs->pGetTextExtentExPoint(dev, str, count, 0, NULL, dxs, size); /* Perform device size to world size transformations. */ if (ret) @@ -1615,23 +1612,19 @@ { UINT i; BOOL ret; + PHYSDEV dev; DC * dc = get_dc_ptr( hdc ); + if (!dc) return FALSE; - if (dc->gdiFont) - ret = WineEngGetCharWidth( dc->gdiFont, firstChar, lastChar, buffer ); - else - { - PHYSDEV physdev = GET_DC_PHYSDEV( dc, pGetCharWidth ); - ret = physdev->funcs->pGetCharWidth( physdev, firstChar, lastChar, buffer); - } + dev = GET_DC_PHYSDEV( dc, pGetCharWidth ); + ret = dev->funcs->pGetCharWidth( dev, firstChar, lastChar, buffer ); if (ret) { /* convert device units to logical */ for( i = firstChar; i <= lastChar; i++, buffer++ ) *buffer = INTERNAL_XDSTOWS(dc, *buffer); - ret = TRUE; } release_dc_ptr( dc ); return ret; diff -Nru wine1.3-1.3.30/dlls/gdi32/freetype.c wine1.3-1.3.31/dlls/gdi32/freetype.c --- wine1.3-1.3.30/dlls/gdi32/freetype.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/freetype.c 2011-10-21 18:38:36.000000000 +0000 @@ -117,9 +117,6 @@ #ifdef HAVE_FREETYPE_FTOUTLN_H #include #endif -#ifdef HAVE_FREETYPE_INTERNAL_SFNT_H -#include -#endif #ifdef HAVE_FREETYPE_FTTRIGON_H #include #endif @@ -157,11 +154,15 @@ #define MAKE_FUNCPTR(f) static typeof(f) * p##f = NULL MAKE_FUNCPTR(FT_Done_Face); MAKE_FUNCPTR(FT_Get_Char_Index); +MAKE_FUNCPTR(FT_Get_First_Char); MAKE_FUNCPTR(FT_Get_Module); +MAKE_FUNCPTR(FT_Get_Next_Char); MAKE_FUNCPTR(FT_Get_Sfnt_Name); MAKE_FUNCPTR(FT_Get_Sfnt_Name_Count); MAKE_FUNCPTR(FT_Get_Sfnt_Table); +MAKE_FUNCPTR(FT_Get_WinFNT_Header); MAKE_FUNCPTR(FT_Init_FreeType); +MAKE_FUNCPTR(FT_Library_Version); MAKE_FUNCPTR(FT_Load_Glyph); MAKE_FUNCPTR(FT_Load_Sfnt_Table); MAKE_FUNCPTR(FT_Matrix_Multiply); @@ -181,16 +182,10 @@ MAKE_FUNCPTR(FT_Set_Pixel_Sizes); MAKE_FUNCPTR(FT_Vector_Transform); MAKE_FUNCPTR(FT_Vector_Unit); -static void (*pFT_Library_Version)(FT_Library,FT_Int*,FT_Int*,FT_Int*); -static FT_ULong (*pFT_Get_First_Char)(FT_Face,FT_UInt*); -static FT_ULong (*pFT_Get_Next_Char)(FT_Face,FT_ULong,FT_UInt*); static FT_TrueTypeEngineType (*pFT_Get_TrueType_Engine_Type)(FT_Library); #ifdef HAVE_FREETYPE_FTLCDFIL_H static FT_Error (*pFT_Library_SetLcdFilter)(FT_Library, FT_LcdFilter); #endif -#ifdef HAVE_FREETYPE_FTWINFNT_H -MAKE_FUNCPTR(FT_Get_WinFNT_Header); -#endif #ifdef SONAME_LIBFONTCONFIG #include @@ -380,6 +375,19 @@ static struct list font_list = LIST_INIT(font_list); +struct freetype_physdev +{ + struct gdi_physdev dev; + GdiFont *font; +}; + +static inline struct freetype_physdev *get_freetype_dev( PHYSDEV dev ) +{ + return (struct freetype_physdev *)dev; +} + +static const struct gdi_dc_funcs freetype_funcs; + static const WCHAR defSerif[] = {'T','i','m','e','s',' ','N','e','w',' ','R','o','m','a','n','\0'}; static const WCHAR defSans[] = {'A','r','i','a','l','\0'}; static const WCHAR defFixed[] = {'C','o','u','r','i','e','r',' ','N','e','w','\0'}; @@ -420,6 +428,41 @@ static const WCHAR PMingLiU[] = {'P','M','i','n','g','L','i','U',0}; static const WCHAR Batang[] = {'B','a','t','a','n','g',0}; +static const WCHAR arial[] = {'A','r','i','a','l',0}; +static const WCHAR bitstream_vera_sans[] = {'B','i','t','s','t','r','e','a','m',' ','V','e','r','a',' ','S','a','n','s',0}; +static const WCHAR bitstream_vera_sans_mono[] = {'B','i','t','s','t','r','e','a','m',' ','V','e','r','a',' ','S','a','n','s',' ','M','o','n','o',0}; +static const WCHAR bitstream_vera_serif[] = {'B','i','t','s','t','r','e','a','m',' ','V','e','r','a',' ','S','e','r','i','f',0}; +static const WCHAR courier_new[] = {'C','o','u','r','i','e','r',' ','N','e','w',0}; +static const WCHAR liberation_mono[] = {'L','i','b','e','r','a','t','i','o','n',' ','M','o','n','o',0}; +static const WCHAR liberation_sans[] = {'L','i','b','e','r','a','t','i','o','n',' ','S','a','n','s',0}; +static const WCHAR liberation_serif[] = {'L','i','b','e','r','a','t','i','o','n',' ','S','e','r','i','f',0}; +static const WCHAR times_new_roman[] = {'T','i','m','e','s',' ','N','e','w',' ','R','o','m','a','n',0}; + +static const WCHAR *default_serif_list[] = +{ + times_new_roman, + liberation_serif, + bitstream_vera_serif, + NULL +}; + +static const WCHAR *default_fixed_list[] = +{ + courier_new, + liberation_mono, + bitstream_vera_sans_mono, + NULL +}; + +static const WCHAR *default_sans_list[] = +{ + arial, + liberation_sans, + bitstream_vera_sans, + NULL +}; + + static const WCHAR ArabicW[] = {'A','r','a','b','i','c','\0'}; static const WCHAR BalticW[] = {'B','a','l','t','i','c','\0'}; static const WCHAR CHINESE_BIG5W[] = {'C','H','I','N','E','S','E','_','B','I','G','5','\0'}; @@ -1452,9 +1495,7 @@ struct list *family_elem_ptr, *face_elem_ptr; FT_Error err; FT_Long face_index = 0, num_faces; -#ifdef HAVE_FREETYPE_FTWINFNT_H FT_WinFNT_HeaderRec winfnt_header; -#endif int i, bitmap_num, internal_leading; FONTSIGNATURE fs; @@ -1635,14 +1676,13 @@ if(pOS2->version == 0) { FT_UInt dummy; - if(!pFT_Get_First_Char || (pFT_Get_First_Char( ft_face, &dummy ) < 0x100)) + if(pFT_Get_First_Char( ft_face, &dummy ) < 0x100) fs.fsCsb[0] |= FS_LATIN1; else fs.fsCsb[0] |= FS_SYMBOL; } } -#ifdef HAVE_FREETYPE_FTWINFNT_H - else if(pFT_Get_WinFNT_Header && !pFT_Get_WinFNT_Header(ft_face, &winfnt_header)) { + else if(!pFT_Get_WinFNT_Header(ft_face, &winfnt_header)) { CHARSETINFO csi; TRACE("pix_h %d charset %d dpi %dx%d pt %d\n", winfnt_header.pixel_height, winfnt_header.charset, winfnt_header.vertical_resolution,winfnt_header.horizontal_resolution, winfnt_header.nominal_point_size); @@ -1650,7 +1690,6 @@ fs = csi.fs; internal_leading = winfnt_header.internal_leading; } -#endif face_elem_ptr = list_head(&family->faces); while(face_elem_ptr) { @@ -2901,11 +2940,15 @@ LOAD_FUNCPTR(FT_Done_Face) LOAD_FUNCPTR(FT_Get_Char_Index) + LOAD_FUNCPTR(FT_Get_First_Char) LOAD_FUNCPTR(FT_Get_Module) + LOAD_FUNCPTR(FT_Get_Next_Char) LOAD_FUNCPTR(FT_Get_Sfnt_Name) LOAD_FUNCPTR(FT_Get_Sfnt_Name_Count) LOAD_FUNCPTR(FT_Get_Sfnt_Table) + LOAD_FUNCPTR(FT_Get_WinFNT_Header) LOAD_FUNCPTR(FT_Init_FreeType) + LOAD_FUNCPTR(FT_Library_Version) LOAD_FUNCPTR(FT_Load_Glyph) LOAD_FUNCPTR(FT_Load_Sfnt_Table) LOAD_FUNCPTR(FT_Matrix_Multiply) @@ -2925,16 +2968,10 @@ LOAD_FUNCPTR(FT_Vector_Unit) #undef LOAD_FUNCPTR /* Don't warn if these ones are missing */ - pFT_Library_Version = wine_dlsym(ft_handle, "FT_Library_Version", NULL, 0); - pFT_Get_First_Char = wine_dlsym(ft_handle, "FT_Get_First_Char", NULL, 0); - pFT_Get_Next_Char = wine_dlsym(ft_handle, "FT_Get_Next_Char", NULL, 0); pFT_Get_TrueType_Engine_Type = wine_dlsym(ft_handle, "FT_Get_TrueType_Engine_Type", NULL, 0); #ifdef HAVE_FREETYPE_FTLCDFIL_H pFT_Library_SetLcdFilter = wine_dlsym(ft_handle, "FT_Library_SetLcdFilter", NULL, 0); #endif -#ifdef HAVE_FREETYPE_FTWINFNT_H - pFT_Get_WinFNT_Header = wine_dlsym(ft_handle, "FT_Get_WinFNT_Header", NULL, 0); -#endif if(pFT_Init_FreeType(&library) != 0) { ERR("Can't init FreeType library\n"); @@ -2942,21 +2979,14 @@ ft_handle = NULL; return FALSE; } - FT_Version.major = FT_Version.minor = FT_Version.patch = -1; - if (pFT_Library_Version) - pFT_Library_Version(library,&FT_Version.major,&FT_Version.minor,&FT_Version.patch); - - if (FT_Version.major<=0) - { - FT_Version.major=2; - FT_Version.minor=0; - FT_Version.patch=5; - } + pFT_Library_Version(library,&FT_Version.major,&FT_Version.minor,&FT_Version.patch); + TRACE("FreeType version is %d.%d.%d\n",FT_Version.major,FT_Version.minor,FT_Version.patch); FT_SimpleVersion = ((FT_Version.major << 16) & 0xff0000) | ((FT_Version.minor << 8) & 0x00ff00) | ((FT_Version.patch ) & 0x0000ff); + font_driver = &freetype_funcs; return TRUE; sym_not_found: @@ -3111,23 +3141,22 @@ return FALSE; } -static const WCHAR arial[] = {'A','r','i','a','l',0}; -static const WCHAR bitstream_vera_sans[] = {'B','i','t','s','t','r','e','a','m',' ','V','e','r','a',' ','S','a','n','s',0}; -static const WCHAR bitstream_vera_sans_mono[] = {'B','i','t','s','t','r','e','a','m',' ','V','e','r','a',' ','S','a','n','s',' ','M','o','n','o',0}; -static const WCHAR bitstream_vera_serif[] = {'B','i','t','s','t','r','e','a','m',' ','V','e','r','a',' ','S','e','r','i','f',0}; -static const WCHAR courier_new[] = {'C','o','u','r','i','e','r',' ','N','e','w',0}; -static const WCHAR times_new_roman[] = {'T','i','m','e','s',' ','N','e','w',' ','R','o','m','a','n',0}; - -static void reorder_font_list(void) +static BOOL set_default(const WCHAR **name_list) { - if(!move_to_front(times_new_roman)) - move_to_front(bitstream_vera_serif); + while (*name_list) + { + if (move_to_front(*name_list)) return TRUE; + name_list++; + } - if(!move_to_front(courier_new)) - move_to_front(bitstream_vera_sans_mono); + return FALSE; +} - if(!move_to_front(arial)) - move_to_front(bitstream_vera_sans); +static void reorder_font_list(void) +{ + set_default( default_serif_list ); + set_default( default_fixed_list ); + set_default( default_sans_list ); } /************************************************************* @@ -3758,12 +3787,38 @@ return pFT_Select_Charmap(ft_face, encoding) == FT_Err_Ok; } + /************************************************************* - * WineEngCreateFontInstance - * + * freetype_CreateDC */ -GdiFont *WineEngCreateFontInstance(DC *dc, HFONT hfont) +static BOOL freetype_CreateDC( PHYSDEV *dev, LPCWSTR driver, LPCWSTR device, + LPCWSTR output, const DEVMODEW *devmode ) { + struct freetype_physdev *physdev = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*physdev) ); + + if (!physdev) return FALSE; + push_dc_driver( dev, &physdev->dev, &freetype_funcs ); + return TRUE; +} + + +/************************************************************* + * freetype_DeleteDC + */ +static BOOL freetype_DeleteDC( PHYSDEV dev ) +{ + struct freetype_physdev *physdev = get_freetype_dev( dev ); + HeapFree( GetProcessHeap(), 0, physdev ); + return TRUE; +} + + +/************************************************************* + * freetype_SelectFont + */ +static HFONT freetype_SelectFont( PHYSDEV dev, HFONT hfont ) +{ + struct freetype_physdev *physdev = get_freetype_dev( dev ); GdiFont *ret; Face *face, *best, *best_bitmap; Family *family, *last_resort_family; @@ -3777,11 +3832,20 @@ HFONTLIST *hflist; FMAT2 dcmat; FontSubst *psub = NULL; + DC *dc = get_dc_ptr( dev->hdc ); + + if (!hfont) /* notification that the font has been changed by another driver */ + { + dc->gdiFont = NULL; + physdev->font = NULL; + release_dc_ptr( dc ); + return 0; + } - if (!GetObjectW( hfont, sizeof(lf), &lf )) return NULL; + GetObjectW( hfont, sizeof(lf), &lf ); lf.lfWidth = abs(lf.lfWidth); - can_use_bitmap = GetDeviceCaps(dc->hSelf, TEXTCAPS) & TC_RA_ABLE; + can_use_bitmap = GetDeviceCaps(dev->hdc, TEXTCAPS) & TC_RA_ABLE; TRACE("%s, h=%d, it=%d, weight=%d, PandF=%02x, charset=%d orient %d escapement %d\n", debugstr_w(lf.lfFaceName), lf.lfHeight, lf.lfItalic, @@ -3815,18 +3879,16 @@ /* check the cache first */ if((ret = find_in_cache(hfont, &lf, &dcmat, can_use_bitmap)) != NULL) { TRACE("returning cached gdiFont(%p) for hFont %p\n", ret, hfont); - LeaveCriticalSection( &freetype_cs ); - return ret; + goto done; } - TRACE("not in cache\n"); if(list_empty(&font_list)) /* No fonts installed */ { TRACE("No fonts installed\n"); - LeaveCriticalSection( &freetype_cs ); - return NULL; + goto done; } + TRACE("not in cache\n"); ret = alloc_font(); ret->font_desc.matrix = dcmat; @@ -4013,8 +4075,8 @@ if(!last_resort_family) { FIXME("can't find a single appropriate font - bailing\n"); free_font(ret); - LeaveCriticalSection( &freetype_cs ); - return NULL; + ret = NULL; + goto done; } WARN("could only find a bitmap font - this will probably look awful!\n"); @@ -4100,8 +4162,8 @@ if((cachedfont = find_in_cache(hfont, &lf, &dcmat, can_use_bitmap)) != NULL) { TRACE("Found cached font after non-scalable matrix rescale!\n"); free_font( ret ); - LeaveCriticalSection( &freetype_cs ); - return cachedfont; + ret = cachedfont; + goto done; } calc_hash(&ret->font_desc); @@ -4128,8 +4190,8 @@ if (!ret->ft_face) { free_font( ret ); - LeaveCriticalSection( &freetype_cs ); - return 0; + ret = NULL; + goto done; } ret->ntmFlags = face->ntmFlags; @@ -4165,8 +4227,15 @@ TRACE("caching: gdiFont=%p hfont=%p\n", ret, hfont); add_to_cache(ret); +done: + if (ret) + { + dc->gdiFont = ret; + physdev->font = ret; + } LeaveCriticalSection( &freetype_cs ); - return ret; + release_dc_ptr( dc ); + return ret ? hfont : 0; } static void dump_gdi_font_list(void) @@ -5664,16 +5733,13 @@ static BOOL get_bitmap_text_metrics(GdiFont *font) { FT_Face ft_face = font->ft_face; -#ifdef HAVE_FREETYPE_FTWINFNT_H FT_WinFNT_HeaderRec winfnt_header; -#endif const DWORD size = offsetof(OUTLINETEXTMETRICW, otmFiller); font->potm = HeapAlloc(GetProcessHeap(), 0, size); font->potm->otmSize = size; #define TM font->potm->otmTextMetrics -#ifdef HAVE_FREETYPE_FTWINFNT_H - if(pFT_Get_WinFNT_Header && !pFT_Get_WinFNT_Header(ft_face, &winfnt_header)) + if(!pFT_Get_WinFNT_Header(ft_face, &winfnt_header)) { TM.tmHeight = winfnt_header.pixel_height; TM.tmAscent = winfnt_header.ascent; @@ -5697,7 +5763,6 @@ TM.tmCharSet = winfnt_header.charset; } else -#endif { TM.tmAscent = ft_face->size->metrics.ascender >> 6; TM.tmDescent = -ft_face->size->metrics.descender >> 6; @@ -6244,24 +6309,29 @@ } /************************************************************* - * WineEngGetCharWidth - * + * freetype_GetCharWidth */ -BOOL WineEngGetCharWidth(GdiFont *font, UINT firstChar, UINT lastChar, - LPINT buffer) +static BOOL freetype_GetCharWidth( PHYSDEV dev, UINT firstChar, UINT lastChar, LPINT buffer ) { static const MAT2 identity = { {0,1},{0,0},{0,0},{0,1} }; UINT c; GLYPHMETRICS gm; FT_UInt glyph_index; GdiFont *linked_font; + struct freetype_physdev *physdev = get_freetype_dev( dev ); - TRACE("%p, %d, %d, %p\n", font, firstChar, lastChar, buffer); + if (!physdev->font) + { + dev = GET_NEXT_PHYSDEV( dev, pGetCharWidth ); + return dev->funcs->pGetCharWidth( dev, firstChar, lastChar, buffer ); + } + + TRACE("%p, %d, %d, %p\n", physdev->font, firstChar, lastChar, buffer); GDI_CheckNotLock(); EnterCriticalSection( &freetype_cs ); for(c = firstChar; c <= lastChar; c++) { - get_glyph_index_linked(font, c, &linked_font, &glyph_index); + get_glyph_index_linked(physdev->font, c, &linked_font, &glyph_index); WineEngGetGlyphOutline(linked_font, glyph_index, GGO_METRICS | GGO_GLYPH_INDEX, &gm, 0, NULL, &identity); buffer[c - firstChar] = FONT_GM(linked_font,glyph_index)->adv; @@ -6380,11 +6450,10 @@ } /************************************************************* - * WineEngGetTextExtentExPoint - * + * freetype_GetTextExtentExPoint */ -BOOL WineEngGetTextExtentExPoint(GdiFont *font, LPCWSTR wstr, INT count, - INT max_ext, LPINT pnfit, LPINT dxs, LPSIZE size) +static BOOL freetype_GetTextExtentExPoint( PHYSDEV dev, LPCWSTR wstr, INT count, + INT max_ext, LPINT pnfit, LPINT dxs, LPSIZE size) { static const MAT2 identity = { {0,1},{0,0},{0,0},{0,1} }; INT idx; @@ -6393,19 +6462,25 @@ TEXTMETRICW tm; FT_UInt glyph_index; GdiFont *linked_font; + struct freetype_physdev *physdev = get_freetype_dev( dev ); + + if (!physdev->font) + { + dev = GET_NEXT_PHYSDEV( dev, pGetTextExtentExPoint ); + return dev->funcs->pGetTextExtentExPoint( dev, wstr, count, max_ext, pnfit, dxs, size ); + } - TRACE("%p, %s, %d, %d, %p\n", font, debugstr_wn(wstr, count), count, - max_ext, size); + TRACE("%p, %s, %d, %d, %p\n", physdev->font, debugstr_wn(wstr, count), count, max_ext, size); GDI_CheckNotLock(); EnterCriticalSection( &freetype_cs ); size->cx = 0; - WineEngGetTextMetrics(font, &tm); + WineEngGetTextMetrics( physdev->font, &tm ); size->cy = tm.tmHeight; for(idx = 0; idx < count; idx++) { - get_glyph_index_linked(font, wstr[idx], &linked_font, &glyph_index); + get_glyph_index_linked( physdev->font, wstr[idx], &linked_font, &glyph_index ); WineEngGetGlyphOutline(linked_font, glyph_index, GGO_METRICS | GGO_GLYPH_INDEX, &gm, 0, NULL, &identity); size->cx += FONT_GM(linked_font,glyph_index)->adv; @@ -6564,7 +6639,7 @@ { DWORD num_ranges = 0; - if (face->charmap->encoding == FT_ENCODING_UNICODE && pFT_Get_First_Char) + if (face->charmap->encoding == FT_ENCODING_UNICODE) { FT_UInt glyph_code; FT_ULong char_code, char_code_prev; @@ -6873,7 +6948,7 @@ return 0; } - if (font->ft_face->charmap->encoding == FT_ENCODING_UNICODE && pFT_Get_First_Char) + if (font->ft_face->charmap->encoding == FT_ENCODING_UNICODE) { FT_UInt glyph_code; FT_ULong char_code; @@ -6967,6 +7042,130 @@ return font->total_kern_pairs; } +static const struct gdi_dc_funcs freetype_funcs = +{ + NULL, /* pAbortDoc */ + NULL, /* pAbortPath */ + NULL, /* pAlphaBlend */ + NULL, /* pAngleArc */ + NULL, /* pArc */ + NULL, /* pArcTo */ + NULL, /* pBeginPath */ + NULL, /* pBlendImage */ + NULL, /* pChoosePixelFormat */ + NULL, /* pChord */ + NULL, /* pCloseFigure */ + NULL, /* pCreateBitmap */ + NULL, /* pCreateCompatibleDC */ + freetype_CreateDC, /* pCreateDC */ + NULL, /* pCreateDIBSection */ + NULL, /* pDeleteBitmap */ + freetype_DeleteDC, /* pDeleteDC */ + NULL, /* pDeleteObject */ + NULL, /* pDescribePixelFormat */ + NULL, /* pDeviceCapabilities */ + NULL, /* pEllipse */ + NULL, /* pEndDoc */ + NULL, /* pEndPage */ + NULL, /* pEndPath */ + NULL, /* pEnumDeviceFonts */ + NULL, /* pEnumICMProfiles */ + NULL, /* pExcludeClipRect */ + NULL, /* pExtDeviceMode */ + NULL, /* pExtEscape */ + NULL, /* pExtFloodFill */ + NULL, /* pExtSelectClipRgn */ + NULL, /* pExtTextOut */ + NULL, /* pFillPath */ + NULL, /* pFillRgn */ + NULL, /* pFlattenPath */ + NULL, /* pFrameRgn */ + NULL, /* pGdiComment */ + freetype_GetCharWidth, /* pGetCharWidth */ + NULL, /* pGetDeviceCaps */ + NULL, /* pGetDeviceGammaRamp */ + NULL, /* pGetICMProfile */ + NULL, /* pGetImage */ + NULL, /* pGetNearestColor */ + NULL, /* pGetPixel */ + NULL, /* pGetPixelFormat */ + NULL, /* pGetSystemPaletteEntries */ + freetype_GetTextExtentExPoint, /* pGetTextExtentExPoint */ + NULL, /* pGetTextMetrics */ + NULL, /* pIntersectClipRect */ + NULL, /* pInvertRgn */ + NULL, /* pLineTo */ + NULL, /* pModifyWorldTransform */ + NULL, /* pMoveTo */ + NULL, /* pOffsetClipRgn */ + NULL, /* pOffsetViewportOrg */ + NULL, /* pOffsetWindowOrg */ + NULL, /* pPaintRgn */ + NULL, /* pPatBlt */ + NULL, /* pPie */ + NULL, /* pPolyBezier */ + NULL, /* pPolyBezierTo */ + NULL, /* pPolyDraw */ + NULL, /* pPolyPolygon */ + NULL, /* pPolyPolyline */ + NULL, /* pPolygon */ + NULL, /* pPolyline */ + NULL, /* pPolylineTo */ + NULL, /* pPutImage */ + NULL, /* pRealizeDefaultPalette */ + NULL, /* pRealizePalette */ + NULL, /* pRectangle */ + NULL, /* pResetDC */ + NULL, /* pRestoreDC */ + NULL, /* pRoundRect */ + NULL, /* pSaveDC */ + NULL, /* pScaleViewportExt */ + NULL, /* pScaleWindowExt */ + NULL, /* pSelectBitmap */ + NULL, /* pSelectBrush */ + NULL, /* pSelectClipPath */ + freetype_SelectFont, /* pSelectFont */ + NULL, /* pSelectPalette */ + NULL, /* pSelectPen */ + NULL, /* pSetArcDirection */ + NULL, /* pSetBkColor */ + NULL, /* pSetBkMode */ + NULL, /* pSetDCBrushColor */ + NULL, /* pSetDCPenColor */ + NULL, /* pSetDIBColorTable */ + NULL, /* pSetDIBitsToDevice */ + NULL, /* pSetDeviceClipping */ + NULL, /* pSetDeviceGammaRamp */ + NULL, /* pSetLayout */ + NULL, /* pSetMapMode */ + NULL, /* pSetMapperFlags */ + NULL, /* pSetPixel */ + NULL, /* pSetPixelFormat */ + NULL, /* pSetPolyFillMode */ + NULL, /* pSetROP2 */ + NULL, /* pSetRelAbs */ + NULL, /* pSetStretchBltMode */ + NULL, /* pSetTextAlign */ + NULL, /* pSetTextCharacterExtra */ + NULL, /* pSetTextColor */ + NULL, /* pSetTextJustification */ + NULL, /* pSetViewportExt */ + NULL, /* pSetViewportOrg */ + NULL, /* pSetWindowExt */ + NULL, /* pSetWindowOrg */ + NULL, /* pSetWorldTransform */ + NULL, /* pStartDoc */ + NULL, /* pStartPage */ + NULL, /* pStretchBlt */ + NULL, /* pStretchDIBits */ + NULL, /* pStrokeAndFillPath */ + NULL, /* pStrokePath */ + NULL, /* pSwapBuffers */ + NULL, /* pUnrealizePalette */ + NULL, /* pWidenPath */ + /* OpenGL not supported */ +}; + #else /* HAVE_FREETYPE */ /*************************************************************************/ @@ -6975,10 +7174,6 @@ { return FALSE; } -GdiFont *WineEngCreateFontInstance(DC *dc, HFONT hfont) -{ - return NULL; -} BOOL WineEngDestroyFontInstance(HFONT hfont) { return FALSE; @@ -7016,13 +7211,6 @@ return 0; } -BOOL WineEngGetCharWidth(GdiFont *font, UINT firstChar, UINT lastChar, - LPINT buffer) -{ - ERR("called but we don't have FreeType\n"); - return FALSE; -} - BOOL WineEngGetCharABCWidths(GdiFont *font, UINT firstChar, UINT lastChar, LPABC buffer) { @@ -7043,13 +7231,6 @@ return FALSE; } -BOOL WineEngGetTextExtentExPoint(GdiFont *font, LPCWSTR wstr, INT count, - INT max_ext, LPINT nfit, LPINT dx, LPSIZE size) -{ - ERR("called but we don't have FreeType\n"); - return FALSE; -} - BOOL WineEngGetTextExtentExPointI(GdiFont *font, const WORD *indices, INT count, INT max_ext, LPINT nfit, LPINT dx, LPSIZE size) { diff -Nru wine1.3-1.3.30/dlls/gdi32/gdi_private.h wine1.3-1.3.31/dlls/gdi32/gdi_private.h --- wine1.3-1.3.30/dlls/gdi32/gdi_private.h 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/gdi_private.h 2011-10-21 18:38:36.000000000 +0000 @@ -72,8 +72,6 @@ struct hdc_list *hdcs; } GDIOBJHDR; -typedef struct gdi_dc_funcs DC_FUNCTIONS; - /* It should not be necessary to access the contents of the GdiPath * structure directly; if you find that the exported functions don't * allow you to do what you want, then please place a new exported @@ -198,7 +196,7 @@ GDIOBJHDR header; BITMAP bitmap; SIZE size; /* For SetBitmapDimension() */ - const DC_FUNCTIONS *funcs; /* DC function table */ + const struct gdi_dc_funcs *funcs; /* DC function table */ /* For device-independent bitmaps: */ DIBSECTION *dib; RGBQUAD *color_table; /* DIB color table if <= 8bpp */ @@ -222,6 +220,14 @@ extern BOOL BIDI_Reorder( HDC hDC, LPCWSTR lpString, INT uCount, DWORD dwFlags, DWORD dwWineGCP_Flags, LPWSTR lpOutString, INT uCountOut, UINT *lpOrder, WORD **lpGlyphs, INT* cGlyphs ) DECLSPEC_HIDDEN; +/* bitblt.c */ +extern DWORD convert_bits( const BITMAPINFO *src_info, struct bitblt_coords *src, + BITMAPINFO *dst_info, struct gdi_image_bits *bits, BOOL add_alpha ) DECLSPEC_HIDDEN; +extern BOOL intersect_vis_rectangles( struct bitblt_coords *dst, struct bitblt_coords *src ) DECLSPEC_HIDDEN; +extern DWORD stretch_bits( const BITMAPINFO *src_info, struct bitblt_coords *src, + BITMAPINFO *dst_info, struct bitblt_coords *dst, + struct gdi_image_bits *bits, int mode ) DECLSPEC_HIDDEN; + /* bitmap.c */ extern void get_ddb_bitmapinfo( BITMAPOBJ *bmp, BITMAPINFO *info ) DECLSPEC_HIDDEN; extern BOOL get_bitmap_image( HBITMAP hbitmap, BITMAPINFO *info, struct gdi_image_bits *bits ) DECLSPEC_HIDDEN; @@ -252,16 +258,20 @@ /* dib.c */ extern int bitmap_info_size( const BITMAPINFO * info, WORD coloruse ) DECLSPEC_HIDDEN; extern DWORD convert_bitmapinfo( const BITMAPINFO *src_info, void *src_bits, struct bitblt_coords *src, - const BITMAPINFO *dst_info, void *dst_bits ) DECLSPEC_HIDDEN; + const BITMAPINFO *dst_info, void *dst_bits, BOOL add_alpha ) DECLSPEC_HIDDEN; extern DWORD stretch_bitmapinfo( const BITMAPINFO *src_info, void *src_bits, struct bitblt_coords *src, const BITMAPINFO *dst_info, void *dst_bits, struct bitblt_coords *dst, INT mode ) DECLSPEC_HIDDEN; +extern DWORD blend_bitmapinfo( const BITMAPINFO *src_info, void *src_bits, struct bitblt_coords *src, + const BITMAPINFO *dst_info, void *dst_bits, struct bitblt_coords *dst, + BLENDFUNCTION blend ) DECLSPEC_HIDDEN; /* driver.c */ -extern const DC_FUNCTIONS null_driver DECLSPEC_HIDDEN; -extern const DC_FUNCTIONS dib_driver DECLSPEC_HIDDEN; -extern const DC_FUNCTIONS *DRIVER_load_driver( LPCWSTR name ) DECLSPEC_HIDDEN; +extern const struct gdi_dc_funcs null_driver DECLSPEC_HIDDEN; +extern const struct gdi_dc_funcs dib_driver DECLSPEC_HIDDEN; +extern const struct gdi_dc_funcs *font_driver DECLSPEC_HIDDEN; +extern const struct gdi_dc_funcs *DRIVER_load_driver( LPCWSTR name ) DECLSPEC_HIDDEN; extern BOOL DRIVER_GetDriverName( LPCWSTR device, LPWSTR driver, DWORD size ) DECLSPEC_HIDDEN; /* enhmetafile.c */ @@ -281,7 +291,6 @@ extern INT WineEngAddFontResourceEx(LPCWSTR, DWORD, PVOID) DECLSPEC_HIDDEN; extern HANDLE WineEngAddFontMemResourceEx(PVOID, DWORD, PVOID, LPDWORD) DECLSPEC_HIDDEN; -extern GdiFont* WineEngCreateFontInstance(DC*, HFONT) DECLSPEC_HIDDEN; extern BOOL WineEngDestroyFontInstance(HFONT handle) DECLSPEC_HIDDEN; extern DWORD WineEngEnumFonts(LPLOGFONTW, FONTENUMPROCW, LPARAM) DECLSPEC_HIDDEN; extern BOOL WineEngGetCharABCWidths(GdiFont *font, UINT firstChar, @@ -290,7 +299,6 @@ UINT lastChar, LPABCFLOAT buffer) DECLSPEC_HIDDEN; extern BOOL WineEngGetCharABCWidthsI(GdiFont *font, UINT firstChar, UINT count, LPWORD pgi, LPABC buffer) DECLSPEC_HIDDEN; -extern BOOL WineEngGetCharWidth(GdiFont*, UINT, UINT, LPINT) DECLSPEC_HIDDEN; extern DWORD WineEngGetFontData(GdiFont*, DWORD, DWORD, LPVOID, DWORD) DECLSPEC_HIDDEN; extern DWORD WineEngGetFontUnicodeRanges(GdiFont *, LPGLYPHSET) DECLSPEC_HIDDEN; extern DWORD WineEngGetGlyphIndices(GdiFont *font, LPCWSTR lpstr, INT count, @@ -302,7 +310,6 @@ extern BOOL WineEngGetLinkedHFont(DC *dc, WCHAR c, HFONT *new_hfont, UINT *glyph) DECLSPEC_HIDDEN; extern UINT WineEngGetOutlineTextMetrics(GdiFont*, UINT, LPOUTLINETEXTMETRICW) DECLSPEC_HIDDEN; extern UINT WineEngGetTextCharsetInfo(GdiFont *font, LPFONTSIGNATURE fs, DWORD flags) DECLSPEC_HIDDEN; -extern BOOL WineEngGetTextExtentExPoint(GdiFont*, LPCWSTR, INT, INT, LPINT, LPINT, LPSIZE) DECLSPEC_HIDDEN; extern BOOL WineEngGetTextExtentExPointI(GdiFont*, const WORD *, INT, INT, LPINT, LPINT, LPSIZE) DECLSPEC_HIDDEN; extern INT WineEngGetTextFace(GdiFont*, INT, LPWSTR) DECLSPEC_HIDDEN; extern BOOL WineEngGetTextMetrics(GdiFont*, LPTEXTMETRICW) DECLSPEC_HIDDEN; @@ -388,6 +395,8 @@ extern BOOL nulldrv_AngleArc( PHYSDEV dev, INT x, INT y, DWORD radius, FLOAT start, FLOAT sweep ) DECLSPEC_HIDDEN; extern BOOL nulldrv_ArcTo( PHYSDEV dev, INT left, INT top, INT right, INT bottom, INT xstart, INT ystart, INT xend, INT yend ) DECLSPEC_HIDDEN; extern BOOL nulldrv_BeginPath( PHYSDEV dev ) DECLSPEC_HIDDEN; +extern DWORD nulldrv_BlendImage( PHYSDEV dev, BITMAPINFO *info, const struct gdi_image_bits *bits, + struct bitblt_coords *src, struct bitblt_coords *dst, BLENDFUNCTION func ) DECLSPEC_HIDDEN; extern BOOL nulldrv_CloseFigure( PHYSDEV dev ) DECLSPEC_HIDDEN; extern BOOL nulldrv_EndPath( PHYSDEV dev ) DECLSPEC_HIDDEN; extern INT nulldrv_ExcludeClipRect( PHYSDEV dev, INT left, INT top, INT right, INT bottom ) DECLSPEC_HIDDEN; @@ -469,6 +478,32 @@ rect->bottom += offset_y; } +static inline BOOL pt_in_rect( const RECT *rect, POINT pt ) +{ + return ((pt.x >= rect->left) && (pt.x < rect->right) && + (pt.y >= rect->top) && (pt.y < rect->bottom)); +} + +static inline void get_bounding_rect( RECT *rect, int x, int y, int width, int height ) +{ + rect->left = x; + rect->right = x + width; + rect->top = y; + rect->bottom = y + height; + if (rect->left > rect->right) + { + int tmp = rect->left; + rect->left = rect->right + 1; + rect->right = tmp + 1; + } + if (rect->top > rect->bottom) + { + int tmp = rect->top; + rect->top = rect->bottom + 1; + rect->bottom = tmp + 1; + } +} + static inline int get_bitmap_stride( int width, int bpp ) { return ((width * bpp + 15) >> 3) & ~1; diff -Nru wine1.3-1.3.30/dlls/gdi32/mfdrv/init.c wine1.3-1.3.31/dlls/gdi32/mfdrv/init.c --- wine1.3-1.3.30/dlls/gdi32/mfdrv/init.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/mfdrv/init.c 2011-10-21 18:38:36.000000000 +0000 @@ -79,7 +79,7 @@ } -static const DC_FUNCTIONS MFDRV_Funcs = +static const struct gdi_dc_funcs MFDRV_Funcs = { NULL, /* pAbortDoc */ MFDRV_AbortPath, /* pAbortPath */ @@ -502,10 +502,11 @@ { char buffer[8]; METARECORD *mr = (METARECORD *)&buffer; + WORD *params = mr->rdParm; mr->rdSize = 4; mr->rdFunction = func; - *(mr->rdParm) = param1; + params[0] = param1; return MFDRV_WriteRecord( dev, mr, mr->rdSize * 2); } @@ -517,11 +518,12 @@ { char buffer[10]; METARECORD *mr = (METARECORD *)&buffer; + WORD *params = mr->rdParm; mr->rdSize = 5; mr->rdFunction = func; - *(mr->rdParm) = param2; - *(mr->rdParm + 1) = param1; + params[0] = param2; + params[1] = param1; return MFDRV_WriteRecord( dev, mr, mr->rdSize * 2); } @@ -535,13 +537,14 @@ { char buffer[14]; METARECORD *mr = (METARECORD *)&buffer; + WORD *params = mr->rdParm; mr->rdSize = 7; mr->rdFunction = func; - *(mr->rdParm) = param4; - *(mr->rdParm + 1) = param3; - *(mr->rdParm + 2) = param2; - *(mr->rdParm + 3) = param1; + params[0] = param4; + params[1] = param3; + params[2] = param2; + params[3] = param1; return MFDRV_WriteRecord( dev, mr, mr->rdSize * 2); } @@ -555,15 +558,16 @@ { char buffer[18]; METARECORD *mr = (METARECORD *)&buffer; + WORD *params = mr->rdParm; mr->rdSize = 9; mr->rdFunction = func; - *(mr->rdParm) = param6; - *(mr->rdParm + 1) = param5; - *(mr->rdParm + 2) = param4; - *(mr->rdParm + 3) = param3; - *(mr->rdParm + 4) = param2; - *(mr->rdParm + 5) = param1; + params[0] = param6; + params[1] = param5; + params[2] = param4; + params[3] = param3; + params[4] = param2; + params[5] = param1; return MFDRV_WriteRecord( dev, mr, mr->rdSize * 2); } @@ -577,16 +581,17 @@ { char buffer[22]; METARECORD *mr = (METARECORD *)&buffer; + WORD *params = mr->rdParm; mr->rdSize = 11; mr->rdFunction = func; - *(mr->rdParm) = param8; - *(mr->rdParm + 1) = param7; - *(mr->rdParm + 2) = param6; - *(mr->rdParm + 3) = param5; - *(mr->rdParm + 4) = param4; - *(mr->rdParm + 5) = param3; - *(mr->rdParm + 6) = param2; - *(mr->rdParm + 7) = param1; + params[0] = param8; + params[1] = param7; + params[2] = param6; + params[3] = param5; + params[4] = param4; + params[5] = param3; + params[6] = param2; + params[7] = param1; return MFDRV_WriteRecord( dev, mr, mr->rdSize * 2); } diff -Nru wine1.3-1.3.30/dlls/gdi32/mfdrv/metafiledrv.h wine1.3-1.3.31/dlls/gdi32/mfdrv/metafiledrv.h --- wine1.3-1.3.30/dlls/gdi32/mfdrv/metafiledrv.h 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/mfdrv/metafiledrv.h 2011-10-21 18:38:36.000000000 +0000 @@ -105,7 +105,7 @@ extern HBITMAP MFDRV_SelectBitmap( PHYSDEV dev, HBITMAP handle ) DECLSPEC_HIDDEN; extern HBRUSH MFDRV_SelectBrush( PHYSDEV dev, HBRUSH handle ) DECLSPEC_HIDDEN; extern BOOL MFDRV_SelectClipPath( PHYSDEV dev, INT iMode ) DECLSPEC_HIDDEN; -extern HFONT MFDRV_SelectFont( PHYSDEV dev, HFONT handle, HANDLE gdiFont ) DECLSPEC_HIDDEN; +extern HFONT MFDRV_SelectFont( PHYSDEV dev, HFONT handle ) DECLSPEC_HIDDEN; extern HPEN MFDRV_SelectPen( PHYSDEV dev, HPEN handle ) DECLSPEC_HIDDEN; extern HPALETTE MFDRV_SelectPalette( PHYSDEV dev, HPALETTE hPalette, BOOL bForceBackground) DECLSPEC_HIDDEN; extern UINT MFDRV_RealizePalette(PHYSDEV dev, HPALETTE hPalette, BOOL primary) DECLSPEC_HIDDEN; diff -Nru wine1.3-1.3.30/dlls/gdi32/mfdrv/objects.c wine1.3-1.3.31/dlls/gdi32/mfdrv/objects.c --- wine1.3-1.3.30/dlls/gdi32/mfdrv/objects.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/mfdrv/objects.c 2011-10-21 18:38:36.000000000 +0000 @@ -284,7 +284,7 @@ return 0; GDI_hdc_using_object(hbrush, dev->hdc); } - return MFDRV_SelectObject( dev, index ) ? hbrush : HGDI_ERROR; + return MFDRV_SelectObject( dev, index ) ? hbrush : 0; } /****************************************************************** @@ -328,7 +328,7 @@ /*********************************************************************** * MFDRV_SelectFont */ -HFONT MFDRV_SelectFont( PHYSDEV dev, HFONT hfont, HANDLE gdiFont ) +HFONT MFDRV_SelectFont( PHYSDEV dev, HFONT hfont ) { LOGFONTW font; INT16 index; @@ -337,13 +337,13 @@ if( index < 0 ) { if (!GetObjectW( hfont, sizeof(font), &font )) - return HGDI_ERROR; + return 0; index = MFDRV_CreateFontIndirect(dev, hfont, &font); if( index < 0 ) - return HGDI_ERROR; + return 0; GDI_hdc_using_object(hfont, dev->hdc); } - return MFDRV_SelectObject( dev, index ) ? hfont : HGDI_ERROR; + return MFDRV_SelectObject( dev, index ) ? hfont : 0; } /****************************************************************** @@ -408,7 +408,7 @@ return 0; GDI_hdc_using_object(hpen, dev->hdc); } - return MFDRV_SelectObject( dev, index ) ? hpen : HGDI_ERROR; + return MFDRV_SelectObject( dev, index ) ? hpen : 0; } diff -Nru wine1.3-1.3.30/dlls/gdi32/pen.c wine1.3-1.3.31/dlls/gdi32/pen.c --- wine1.3-1.3.30/dlls/gdi32/pen.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/pen.c 2011-10-21 18:38:36.000000000 +0000 @@ -115,8 +115,6 @@ /*********************************************************************** * ExtCreatePen (GDI32.@) - * - * FIXME: PS_USERSTYLE not handled */ HPEN WINAPI ExtCreatePen( DWORD style, DWORD width, @@ -137,13 +135,7 @@ return 0; } - if ((style & PS_TYPE_MASK) == PS_COSMETIC) - { - /* FIXME: PS_USERSTYLE workaround */ - FIXME("PS_COSMETIC | PS_USERSTYLE not handled\n"); - style = (style & ~PS_STYLE_MASK) | PS_SOLID; - } - else + if ((style & PS_TYPE_MASK) == PS_GEOMETRIC) { UINT i; BOOL has_neg = FALSE, all_zero = TRUE; diff -Nru wine1.3-1.3.30/dlls/gdi32/tests/bitmap.c wine1.3-1.3.31/dlls/gdi32/tests/bitmap.c --- wine1.3-1.3.30/dlls/gdi32/tests/bitmap.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/tests/bitmap.c 2011-10-21 18:38:36.000000000 +0000 @@ -35,8 +35,6 @@ static BOOL (WINAPI *pGdiAlphaBlend)(HDC,int,int,int,int,HDC,int,int,int,int,BLENDFUNCTION); static DWORD (WINAPI *pSetLayout)(HDC hdc, DWORD layout); -#define expect_eq(expr, value, type, format) { type ret = (expr); ok((value) == ret, #expr " expected " format " got " format "\n", value, ret); } - static inline int get_bitmap_stride( int width, int bpp ) { return ((width * bpp + 15) >> 3) & ~1; @@ -340,21 +338,13 @@ ok(ret == 0, "%d != 0\n", ret); } -#define test_color_todo(got, exp, txt, todo) \ - if (!todo && got != exp && screen_depth < 24) { \ - todo_wine ok(0, #txt " failed at %d-bit screen depth: got 0x%06x expected 0x%06x - skipping DIB tests\n", \ - screen_depth, (UINT)got, (UINT)exp); \ - return; \ - } else if (todo) todo_wine { ok(got == exp, #txt " failed: got 0x%06x expected 0x%06x\n", (UINT)got, (UINT)exp); } \ - else ok(got == exp, #txt " failed: got 0x%06x expected 0x%06x\n", (UINT)got, (UINT)exp) \ - -#define test_color(hdc, color, exp, todo_setp, todo_getp) \ +#define test_color(hdc, color, exp) \ { \ COLORREF c; \ c = SetPixel(hdc, 0, 0, color); \ - test_color_todo(c, exp, SetPixel, todo_setp); \ + ok(c == exp, "SetPixel failed: got 0x%06x expected 0x%06x\n", c, (UINT)exp); \ c = GetPixel(hdc, 0, 0); \ - test_color_todo(c, exp, GetPixel, todo_getp); \ + ok(c == exp, "GetPixel failed: got 0x%06x expected 0x%06x\n", c, (UINT)exp); \ } static void test_dib_bits_access( HBITMAP hdib, void *bits ) @@ -424,6 +414,8 @@ char bcibuf[sizeof(BITMAPCOREINFO) + 256 * sizeof(RGBTRIPLE)]; BITMAPINFO *pbmi = (BITMAPINFO *)bmibuf; BITMAPCOREINFO *pbci = (BITMAPCOREINFO *)bcibuf; + RGBQUAD *colors = pbmi->bmiColors; + RGBTRIPLE *ccolors = pbci->bmciColors; HBITMAP hcoredib; char coreBits[256]; BYTE *bits; @@ -431,17 +423,16 @@ int ret; char logpalbuf[sizeof(LOGPALETTE) + 256 * sizeof(PALETTEENTRY)]; LOGPALETTE *plogpal = (LOGPALETTE*)logpalbuf; + PALETTEENTRY *palent = plogpal->palPalEntry; WORD *index; DWORD *bits32; HPALETTE hpal, oldpal; DIBSECTION dibsec; COLORREF c0, c1; int i; - int screen_depth; MEMORY_BASIC_INFORMATION info; hdc = GetDC(0); - screen_depth = GetDeviceCaps(hdc, BITSPIXEL) * GetDeviceCaps(hdc, PLANES); memset(pbmi, 0, sizeof(bmibuf)); pbmi->bmiHeader.biSize = sizeof(pbmi->bmiHeader); @@ -525,12 +516,12 @@ pbmi->bmiHeader.biBitCount = 1; pbmi->bmiHeader.biPlanes = 1; pbmi->bmiHeader.biCompression = BI_RGB; - pbmi->bmiColors[0].rgbRed = 0xff; - pbmi->bmiColors[0].rgbGreen = 0; - pbmi->bmiColors[0].rgbBlue = 0; - pbmi->bmiColors[1].rgbRed = 0; - pbmi->bmiColors[1].rgbGreen = 0; - pbmi->bmiColors[1].rgbBlue = 0xff; + colors[0].rgbRed = 0xff; + colors[0].rgbGreen = 0; + colors[0].rgbBlue = 0; + colors[1].rgbRed = 0; + colors[1].rgbGreen = 0; + colors[1].rgbBlue = 0xff; hdib = CreateDIBSection(hdc, pbmi, DIB_RGB_COLORS, (void**)&bits, NULL, 0); ok(hdib != NULL, "CreateDIBSection failed\n"); @@ -551,20 +542,20 @@ ret = GetDIBits(hdc, hdib, 0, 16, &coreBits, (BITMAPINFO*) pbci, DIB_RGB_COLORS); ok(ret, "GetDIBits doesn't work with a BITMAPCOREHEADER\n"); - ok((pbci->bmciColors[0].rgbtRed == 0xff) && (pbci->bmciColors[0].rgbtGreen == 0) && - (pbci->bmciColors[0].rgbtBlue == 0) && (pbci->bmciColors[1].rgbtRed == 0) && - (pbci->bmciColors[1].rgbtGreen == 0) && (pbci->bmciColors[1].rgbtBlue == 0xff), + ok((ccolors[0].rgbtRed == 0xff) && (ccolors[0].rgbtGreen == 0) && + (ccolors[0].rgbtBlue == 0) && (ccolors[1].rgbtRed == 0) && + (ccolors[1].rgbtGreen == 0) && (ccolors[1].rgbtBlue == 0xff), "The color table has not been translated to the old BITMAPCOREINFO format\n"); hcoredib = CreateDIBSection(hdc, (BITMAPINFO*) pbci, DIB_RGB_COLORS, (void**)&bits, NULL, 0); ok(hcoredib != NULL, "CreateDIBSection failed with a BITMAPCOREINFO\n"); - ZeroMemory(pbci->bmciColors, 256 * sizeof(RGBTRIPLE)); + ZeroMemory(ccolors, 256 * sizeof(RGBTRIPLE)); ret = GetDIBits(hdc, hcoredib, 0, 16, &coreBits, (BITMAPINFO*) pbci, DIB_RGB_COLORS); ok(ret, "GetDIBits doesn't work with a BITMAPCOREHEADER\n"); - ok((pbci->bmciColors[0].rgbtRed == 0xff) && (pbci->bmciColors[0].rgbtGreen == 0) && - (pbci->bmciColors[0].rgbtBlue == 0) && (pbci->bmciColors[1].rgbtRed == 0) && - (pbci->bmciColors[1].rgbtGreen == 0) && (pbci->bmciColors[1].rgbtBlue == 0xff), + ok((ccolors[0].rgbtRed == 0xff) && (ccolors[0].rgbtGreen == 0) && + (ccolors[0].rgbtBlue == 0) && (ccolors[1].rgbtRed == 0) && + (ccolors[1].rgbtGreen == 0) && (ccolors[1].rgbtBlue == 0xff), "The color table has not been translated to the old BITMAPCOREINFO format\n"); DeleteObject(hcoredib); @@ -579,32 +570,30 @@ rgb[0].rgbRed, rgb[0].rgbGreen, rgb[0].rgbBlue, rgb[0].rgbReserved, rgb[1].rgbRed, rgb[1].rgbGreen, rgb[1].rgbBlue, rgb[1].rgbReserved); - c0 = RGB(pbmi->bmiColors[0].rgbRed, pbmi->bmiColors[0].rgbGreen, pbmi->bmiColors[0].rgbBlue); - c1 = RGB(pbmi->bmiColors[1].rgbRed, pbmi->bmiColors[1].rgbGreen, pbmi->bmiColors[1].rgbBlue); + c0 = RGB(colors[0].rgbRed, colors[0].rgbGreen, colors[0].rgbBlue); + c1 = RGB(colors[1].rgbRed, colors[1].rgbGreen, colors[1].rgbBlue); - test_color(hdcmem, DIBINDEX(0), c0, 0, 1); - test_color(hdcmem, DIBINDEX(1), c1, 0, 1); - test_color(hdcmem, DIBINDEX(2), c0, 1, 1); - test_color(hdcmem, PALETTEINDEX(0), c0, 1, 1); - test_color(hdcmem, PALETTEINDEX(1), c0, 1, 1); - test_color(hdcmem, PALETTEINDEX(2), c0, 1, 1); - test_color(hdcmem, PALETTERGB(pbmi->bmiColors[0].rgbRed, pbmi->bmiColors[0].rgbGreen, - pbmi->bmiColors[0].rgbBlue), c0, 1, 1); - test_color(hdcmem, PALETTERGB(pbmi->bmiColors[1].rgbRed, pbmi->bmiColors[1].rgbGreen, - pbmi->bmiColors[1].rgbBlue), c1, 1, 1); - test_color(hdcmem, PALETTERGB(0, 0, 0), c0, 1, 1); - test_color(hdcmem, PALETTERGB(0xff, 0xff, 0xff), c0, 1, 1); - test_color(hdcmem, PALETTERGB(0, 0, 0xfe), c1, 1, 1); + test_color(hdcmem, DIBINDEX(0), c0); + test_color(hdcmem, DIBINDEX(1), c1); + test_color(hdcmem, DIBINDEX(2), c0); + test_color(hdcmem, PALETTEINDEX(0), c0); + test_color(hdcmem, PALETTEINDEX(1), c0); + test_color(hdcmem, PALETTEINDEX(2), c0); + test_color(hdcmem, PALETTERGB(colors[0].rgbRed, colors[0].rgbGreen, colors[0].rgbBlue), c0); + test_color(hdcmem, PALETTERGB(colors[1].rgbRed, colors[1].rgbGreen, colors[1].rgbBlue), c1); + test_color(hdcmem, PALETTERGB(0, 0, 0), c0); + test_color(hdcmem, PALETTERGB(0xff, 0xff, 0xff), c0); + test_color(hdcmem, PALETTERGB(0, 0, 0xfe), c1); SelectObject(hdcmem, oldbm); DeleteObject(hdib); - pbmi->bmiColors[0].rgbRed = 0xff; - pbmi->bmiColors[0].rgbGreen = 0xff; - pbmi->bmiColors[0].rgbBlue = 0xff; - pbmi->bmiColors[1].rgbRed = 0; - pbmi->bmiColors[1].rgbGreen = 0; - pbmi->bmiColors[1].rgbBlue = 0; + colors[0].rgbRed = 0xff; + colors[0].rgbGreen = 0xff; + colors[0].rgbBlue = 0xff; + colors[1].rgbRed = 0; + colors[1].rgbGreen = 0; + colors[1].rgbBlue = 0; hdib = CreateDIBSection(hdc, pbmi, DIB_RGB_COLORS, (void**)&bits, NULL, 0); ok(hdib != NULL, "CreateDIBSection failed\n"); @@ -615,7 +604,7 @@ ret = GetDIBColorTable(hdcmem, 0, 2, rgb); ok(ret == 2, "GetDIBColorTable returned %d\n", ret); - ok(!memcmp(rgb, pbmi->bmiColors, 2 * sizeof(RGBQUAD)), + ok(!memcmp(rgb, colors, 2 * sizeof(RGBQUAD)), "GetDIBColorTable returns table 0: r%02x g%02x b%02x res%02x 1: r%02x g%02x b%02x res%02x\n", rgb[0].rgbRed, rgb[0].rgbGreen, rgb[0].rgbBlue, rgb[0].rgbReserved, rgb[1].rgbRed, rgb[1].rgbGreen, rgb[1].rgbBlue, rgb[1].rgbReserved); @@ -626,9 +615,9 @@ pbmi->bmiHeader.biBitCount = 4; for (i = 0; i < 16; i++) { - pbmi->bmiColors[i].rgbRed = i; - pbmi->bmiColors[i].rgbGreen = 16-i; - pbmi->bmiColors[i].rgbBlue = 0; + colors[i].rgbRed = i; + colors[i].rgbGreen = 16-i; + colors[i].rgbBlue = 0; } hdib = CreateDIBSection(hdcmem, pbmi, DIB_RGB_COLORS, (void**)&bits, NULL, 0); ok(hdib != NULL, "CreateDIBSection failed\n"); @@ -641,12 +630,12 @@ pbmi->bmiHeader.biBitCount = 8; for (i = 0; i < 128; i++) { - pbmi->bmiColors[i].rgbRed = 255 - i * 2; - pbmi->bmiColors[i].rgbGreen = i * 2; - pbmi->bmiColors[i].rgbBlue = 0; - pbmi->bmiColors[255 - i].rgbRed = 0; - pbmi->bmiColors[255 - i].rgbGreen = i * 2; - pbmi->bmiColors[255 - i].rgbBlue = 255 - i * 2; + colors[i].rgbRed = 255 - i * 2; + colors[i].rgbGreen = i * 2; + colors[i].rgbBlue = 0; + colors[255 - i].rgbRed = 0; + colors[255 - i].rgbGreen = i * 2; + colors[255 - i].rgbBlue = 255 - i * 2; } hdib = CreateDIBSection(hdcmem, pbmi, DIB_RGB_COLORS, (void**)&bits, NULL, 0); ok(hdib != NULL, "CreateDIBSection failed\n"); @@ -657,10 +646,9 @@ oldbm = SelectObject(hdcmem, hdib); for (i = 0; i < 256; i++) { - test_color(hdcmem, DIBINDEX(i), - RGB(pbmi->bmiColors[i].rgbRed, pbmi->bmiColors[i].rgbGreen, pbmi->bmiColors[i].rgbBlue), 0, 0); - test_color(hdcmem, PALETTERGB(pbmi->bmiColors[i].rgbRed, pbmi->bmiColors[i].rgbGreen, pbmi->bmiColors[i].rgbBlue), - RGB(pbmi->bmiColors[i].rgbRed, pbmi->bmiColors[i].rgbGreen, pbmi->bmiColors[i].rgbBlue), 0, 0); + test_color(hdcmem, DIBINDEX(i), RGB(colors[i].rgbRed, colors[i].rgbGreen, colors[i].rgbBlue)); + test_color(hdcmem, PALETTERGB(colors[i].rgbRed, colors[i].rgbGreen, colors[i].rgbBlue), + RGB(colors[i].rgbRed, colors[i].rgbGreen, colors[i].rgbBlue)); } SelectObject(hdcmem, oldbm); @@ -673,9 +661,9 @@ memset(plogpal, 0, sizeof(logpalbuf)); plogpal->palVersion = 0x300; plogpal->palNumEntries = 2; - plogpal->palPalEntry[0].peRed = 0xff; - plogpal->palPalEntry[0].peBlue = 0xff; - plogpal->palPalEntry[1].peGreen = 0xff; + palent[0].peRed = 0xff; + palent[0].peBlue = 0xff; + palent[1].peGreen = 0xff; index = (WORD*)pbmi->bmiColors; *index++ = 0; @@ -703,25 +691,23 @@ rgb[0].rgbRed, rgb[0].rgbGreen, rgb[0].rgbBlue, rgb[0].rgbReserved, rgb[1].rgbRed, rgb[1].rgbGreen, rgb[1].rgbBlue, rgb[1].rgbReserved); - c0 = RGB(plogpal->palPalEntry[0].peRed, plogpal->palPalEntry[0].peGreen, plogpal->palPalEntry[0].peBlue); - c1 = RGB(plogpal->palPalEntry[1].peRed, plogpal->palPalEntry[1].peGreen, plogpal->palPalEntry[1].peBlue); + c0 = RGB(palent[0].peRed, palent[0].peGreen, palent[0].peBlue); + c1 = RGB(palent[1].peRed, palent[1].peGreen, palent[1].peBlue); - test_color(hdcmem, DIBINDEX(0), c0, 0, 1); - test_color(hdcmem, DIBINDEX(1), c1, 0, 1); - test_color(hdcmem, DIBINDEX(2), c0, 1, 1); - test_color(hdcmem, PALETTEINDEX(0), c0, 0, 1); - test_color(hdcmem, PALETTEINDEX(1), c1, 0, 1); - test_color(hdcmem, PALETTEINDEX(2), c0, 1, 1); - test_color(hdcmem, PALETTERGB(plogpal->palPalEntry[0].peRed, plogpal->palPalEntry[0].peGreen, - plogpal->palPalEntry[0].peBlue), c0, 1, 1); - test_color(hdcmem, PALETTERGB(plogpal->palPalEntry[1].peRed, plogpal->palPalEntry[1].peGreen, - plogpal->palPalEntry[1].peBlue), c1, 1, 1); - test_color(hdcmem, PALETTERGB(0, 0, 0), c1, 1, 1); - test_color(hdcmem, PALETTERGB(0xff, 0xff, 0xff), c0, 1, 1); - test_color(hdcmem, PALETTERGB(0, 0, 0xfe), c0, 1, 1); - test_color(hdcmem, PALETTERGB(0, 1, 0), c1, 1, 1); - test_color(hdcmem, PALETTERGB(0x3f, 0, 0x3f), c1, 1, 1); - test_color(hdcmem, PALETTERGB(0x40, 0, 0x40), c0, 1, 1); + test_color(hdcmem, DIBINDEX(0), c0); + test_color(hdcmem, DIBINDEX(1), c1); + test_color(hdcmem, DIBINDEX(2), c0); + test_color(hdcmem, PALETTEINDEX(0), c0); + test_color(hdcmem, PALETTEINDEX(1), c1); + test_color(hdcmem, PALETTEINDEX(2), c0); + test_color(hdcmem, PALETTERGB(palent[0].peRed, palent[0].peGreen, palent[0].peBlue), c0); + test_color(hdcmem, PALETTERGB(palent[1].peRed, palent[1].peGreen, palent[1].peBlue), c1); + test_color(hdcmem, PALETTERGB(0, 0, 0), c1); + test_color(hdcmem, PALETTERGB(0xff, 0xff, 0xff), c0); + test_color(hdcmem, PALETTERGB(0, 0, 0xfe), c0); + test_color(hdcmem, PALETTERGB(0, 1, 0), c1); + test_color(hdcmem, PALETTERGB(0x3f, 0, 0x3f), c1); + test_color(hdcmem, PALETTERGB(0x40, 0, 0x40), c0); /* Bottom and 2nd row from top green, everything else magenta */ bits[0] = bits[1] = 0xff; @@ -758,12 +744,12 @@ plogpal->palNumEntries = 256; for (i = 0; i < 128; i++) { - plogpal->palPalEntry[i].peRed = 255 - i * 2; - plogpal->palPalEntry[i].peBlue = i * 2; - plogpal->palPalEntry[i].peGreen = 0; - plogpal->palPalEntry[255 - i].peRed = 0; - plogpal->palPalEntry[255 - i].peGreen = i * 2; - plogpal->palPalEntry[255 - i].peBlue = 255 - i * 2; + palent[i].peRed = 255 - i * 2; + palent[i].peBlue = i * 2; + palent[i].peGreen = 0; + palent[255 - i].peRed = 0; + palent[255 - i].peGreen = i * 2; + palent[255 - i].peBlue = 255 - i * 2; } index = (WORD*)pbmi->bmiColors; @@ -788,20 +774,18 @@ ret = GetDIBColorTable(hdcmem, 0, 256, rgb); ok(ret == 256, "GetDIBColorTable returned %d\n", ret); for (i = 0; i < 256; i++) { - ok(rgb[i].rgbRed == plogpal->palPalEntry[i].peRed && - rgb[i].rgbBlue == plogpal->palPalEntry[i].peBlue && - rgb[i].rgbGreen == plogpal->palPalEntry[i].peGreen, + ok(rgb[i].rgbRed == palent[i].peRed && + rgb[i].rgbBlue == palent[i].peBlue && + rgb[i].rgbGreen == palent[i].peGreen, "GetDIBColorTable returns table %d: r%02x g%02x b%02x res%02x\n", i, rgb[i].rgbRed, rgb[i].rgbGreen, rgb[i].rgbBlue, rgb[i].rgbReserved); } for (i = 0; i < 256; i++) { - test_color(hdcmem, DIBINDEX(i), - RGB(plogpal->palPalEntry[i].peRed, plogpal->palPalEntry[i].peGreen, plogpal->palPalEntry[i].peBlue), 0, 0); - test_color(hdcmem, PALETTEINDEX(i), - RGB(plogpal->palPalEntry[i].peRed, plogpal->palPalEntry[i].peGreen, plogpal->palPalEntry[i].peBlue), 0, 0); - test_color(hdcmem, PALETTERGB(plogpal->palPalEntry[i].peRed, plogpal->palPalEntry[i].peGreen, plogpal->palPalEntry[i].peBlue), - RGB(plogpal->palPalEntry[i].peRed, plogpal->palPalEntry[i].peGreen, plogpal->palPalEntry[i].peBlue), 0, 0); + test_color(hdcmem, DIBINDEX(i), RGB(palent[i].peRed, palent[i].peGreen, palent[i].peBlue)); + test_color(hdcmem, PALETTEINDEX(i), RGB(palent[i].peRed, palent[i].peGreen, palent[i].peBlue)); + test_color(hdcmem, PALETTERGB(palent[i].peRed, palent[i].peGreen, palent[i].peBlue), + RGB(palent[i].peRed, palent[i].peGreen, palent[i].peBlue)); } SelectPalette(hdcmem, oldpal, TRUE); @@ -823,7 +807,7 @@ HBITMAP hdib, hbmp; HDC hdc, memdc; UINT ret; - BOOL expect_ok, todo; + BOOL expect_ok; bi = HeapAlloc( GetProcessHeap(), 0, FIELD_OFFSET( BITMAPINFO, bmiColors[256] ) ); hdc = GetDC( 0 ); @@ -848,7 +832,6 @@ case 32: expect_ok = (compr == BI_RGB || compr == BI_BITFIELDS); break; default: expect_ok = FALSE; break; } - todo = (compr == BI_BITFIELDS); /* wine doesn't like strange bitfields */ memset( bi, 0, sizeof(bi->bmiHeader) ); bi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); @@ -899,36 +882,21 @@ bi->bmiHeader.biSizeImage = 0; ret = SetDIBits(hdc, hbmp, 0, 1, data, bi, DIB_RGB_COLORS); if (expect_ok) - { - if (todo) - todo_wine ok( ret, "SetDIBits failed for %u/%u/%u\n", bpp, planes, compr ); - else - ok( ret, "SetDIBits failed for %u/%u/%u\n", bpp, planes, compr ); - } + ok( ret, "SetDIBits failed for %u/%u/%u\n", bpp, planes, compr ); else ok( !ret || broken((bpp == 4 && compr == BI_RLE4) || (bpp == 8 && compr == BI_RLE8)), /* nt4 */ "SetDIBits succeeded for %u/%u/%u\n", bpp, planes, compr ); ret = SetDIBitsToDevice( memdc, 0, 0, 1, 1, 0, 0, 0, 1, data, bi, DIB_RGB_COLORS ); if (expect_ok) - { - if (todo) - todo_wine ok( ret, "SetDIBitsToDevice failed for %u/%u/%u\n", bpp, planes, compr ); - else - ok( ret, "SetDIBitsToDevice failed for %u/%u/%u\n", bpp, planes, compr ); - } + ok( ret, "SetDIBitsToDevice failed for %u/%u/%u\n", bpp, planes, compr ); else ok( !ret || broken((bpp == 4 && compr == BI_RLE4) || (bpp == 8 && compr == BI_RLE8)), /* nt4 */ "SetDIBitsToDevice succeeded for %u/%u/%u\n", bpp, planes, compr ); ret = StretchDIBits( memdc, 0, 0, 1, 1, 0, 0, 1, 1, data, bi, DIB_RGB_COLORS, SRCCOPY ); if (expect_ok) - { - if (todo) - todo_wine ok( ret, "StretchDIBits failed for %u/%u/%u\n", bpp, planes, compr ); - else - ok( ret, "StretchDIBits failed for %u/%u/%u\n", bpp, planes, compr ); - } + ok( ret, "StretchDIBits failed for %u/%u/%u\n", bpp, planes, compr ); else ok( !ret || broken((bpp == 4 && compr == BI_RLE4) || (bpp == 8 && compr == BI_RLE8)), /* nt4 */ @@ -955,32 +923,17 @@ ret = SetDIBits(hdc, hbmp, 0, 1, data, bi, DIB_RGB_COLORS); if (expect_ok) - { - if (todo) - todo_wine ok( ret, "SetDIBits failed for %u/%u/%u\n", bpp, planes, compr ); - else - ok( ret, "SetDIBits failed for %u/%u/%u\n", bpp, planes, compr ); - } + ok( ret, "SetDIBits failed for %u/%u/%u\n", bpp, planes, compr ); else ok( !ret, "SetDIBits succeeded for %u/%u/%u\n", bpp, planes, compr ); ret = SetDIBitsToDevice( memdc, 0, 0, 1, 1, 0, 0, 0, 1, data, bi, DIB_RGB_COLORS ); if (expect_ok) - { - if (todo) - todo_wine ok( ret, "SetDIBitsToDevice failed for %u/%u/%u\n", bpp, planes, compr ); - else - ok( ret, "SetDIBitsToDevice failed for %u/%u/%u\n", bpp, planes, compr ); - } + ok( ret, "SetDIBitsToDevice failed for %u/%u/%u\n", bpp, planes, compr ); else ok( !ret, "SetDIBitsToDevice succeeded for %u/%u/%u\n", bpp, planes, compr ); ret = StretchDIBits( memdc, 0, 0, 1, 1, 0, 0, 1, 1, data, bi, DIB_RGB_COLORS, SRCCOPY ); if (expect_ok) - { - if (todo) - todo_wine ok( ret, "StretchDIBits failed for %u/%u/%u\n", bpp, planes, compr ); - else - ok( ret, "StretchDIBits failed for %u/%u/%u\n", bpp, planes, compr ); - } + ok( ret, "StretchDIBits failed for %u/%u/%u\n", bpp, planes, compr ); else ok( !ret, "StretchDIBits succeeded for %u/%u/%u\n", bpp, planes, compr ); @@ -1015,9 +968,9 @@ ok( hdib != NULL, "CreateDIBitmap failed with null bitfields\n" ); DeleteObject( hdib ); ret = SetDIBitsToDevice( memdc, 0, 0, 1, 1, 0, 0, 0, 1, data, bi, DIB_RGB_COLORS ); - todo_wine ok( ret, "SetDIBitsToDevice failed with null bitfields\n" ); + ok( ret, "SetDIBitsToDevice failed with null bitfields\n" ); ret = StretchDIBits( memdc, 0, 0, 1, 1, 0, 0, 1, 1, data, bi, DIB_RGB_COLORS, SRCCOPY ); - todo_wine ok( ret, "StretchDIBits failed with null bitfields\n" ); + ok( ret, "StretchDIBits failed with null bitfields\n" ); ret = GetDIBits(hdc, hbmp, 0, 2, data, bi, DIB_RGB_COLORS); ok( ret, "GetDIBits failed with null bitfields\n" ); bi->bmiHeader.biPlanes = 1; @@ -1047,7 +1000,7 @@ ok( hdib != NULL, "CreateDIBSection failed with bad bitfields\n" ); if (hdib) DeleteObject( hdib ); ret = SetDIBits(hdc, hbmp, 0, 1, data, bi, DIB_RGB_COLORS); - todo_wine ok( ret, "SetDIBits failed with bad bitfields\n" ); + ok( ret, "SetDIBits failed with bad bitfields\n" ); bi->bmiHeader.biWidth = -2; bi->bmiHeader.biHeight = 2; @@ -1132,6 +1085,7 @@ HBITMAP old_bm, mono_ds; char bmibuf[sizeof(BITMAPINFO) + 256 * sizeof(RGBQUAD)]; BITMAPINFO *pbmi = (BITMAPINFO *)bmibuf; + RGBQUAD *colors = pbmi->bmiColors; BYTE bits[10 * 4]; BYTE *ds_bits; int num; @@ -1147,12 +1101,12 @@ pbmi->bmiHeader.biBitCount = 1; pbmi->bmiHeader.biPlanes = 1; pbmi->bmiHeader.biCompression = BI_RGB; - pbmi->bmiColors[0].rgbRed = 0xff; - pbmi->bmiColors[0].rgbGreen = 0xff; - pbmi->bmiColors[0].rgbBlue = 0xff; - pbmi->bmiColors[1].rgbRed = 0x0; - pbmi->bmiColors[1].rgbGreen = 0x0; - pbmi->bmiColors[1].rgbBlue = 0x0; + colors[0].rgbRed = 0xff; + colors[0].rgbGreen = 0xff; + colors[0].rgbBlue = 0xff; + colors[1].rgbRed = 0x0; + colors[1].rgbGreen = 0x0; + colors[1].rgbBlue = 0x0; /* * First dib section is 'inverted' ie color[0] is white, color[1] is black @@ -1177,12 +1131,12 @@ /* SetDIBitsToDevice with a normal bmi -> inverted dib section */ - pbmi->bmiColors[0].rgbRed = 0x0; - pbmi->bmiColors[0].rgbGreen = 0x0; - pbmi->bmiColors[0].rgbBlue = 0x0; - pbmi->bmiColors[1].rgbRed = 0xff; - pbmi->bmiColors[1].rgbGreen = 0xff; - pbmi->bmiColors[1].rgbBlue = 0xff; + colors[0].rgbRed = 0x0; + colors[0].rgbGreen = 0x0; + colors[0].rgbBlue = 0x0; + colors[1].rgbRed = 0xff; + colors[1].rgbGreen = 0xff; + colors[1].rgbBlue = 0xff; SetDIBitsToDevice(memdc, 0, 0, 10, 10, 0, 0, 0, 10, bits, pbmi, DIB_RGB_COLORS); ok(ds_bits[0] == 0x55, "out_bits %02x\n", ds_bits[0]); @@ -1194,12 +1148,12 @@ * Next dib section is 'normal' ie color[0] is black, color[1] is white */ - pbmi->bmiColors[0].rgbRed = 0x0; - pbmi->bmiColors[0].rgbGreen = 0x0; - pbmi->bmiColors[0].rgbBlue = 0x0; - pbmi->bmiColors[1].rgbRed = 0xff; - pbmi->bmiColors[1].rgbGreen = 0xff; - pbmi->bmiColors[1].rgbBlue = 0xff; + colors[0].rgbRed = 0x0; + colors[0].rgbGreen = 0x0; + colors[0].rgbBlue = 0x0; + colors[1].rgbRed = 0xff; + colors[1].rgbGreen = 0xff; + colors[1].rgbBlue = 0xff; mono_ds = CreateDIBSection(hdc, pbmi, DIB_RGB_COLORS, (void**)&ds_bits, NULL, 0); ok(mono_ds != NULL, "CreateDIBSection rets NULL\n"); @@ -1217,12 +1171,12 @@ /* SetDIBitsToDevice with a inverted bmi -> normal dib section */ - pbmi->bmiColors[0].rgbRed = 0xff; - pbmi->bmiColors[0].rgbGreen = 0xff; - pbmi->bmiColors[0].rgbBlue = 0xff; - pbmi->bmiColors[1].rgbRed = 0x0; - pbmi->bmiColors[1].rgbGreen = 0x0; - pbmi->bmiColors[1].rgbBlue = 0x0; + colors[0].rgbRed = 0xff; + colors[0].rgbGreen = 0xff; + colors[0].rgbBlue = 0xff; + colors[1].rgbRed = 0x0; + colors[1].rgbGreen = 0x0; + colors[1].rgbBlue = 0x0; SetDIBitsToDevice(memdc, 0, 0, 10, 10, 0, 0, 0, 10, bits, pbmi, DIB_RGB_COLORS); ok(ds_bits[0] == 0x55, "out_bits %02x\n", ds_bits[0]); @@ -1231,13 +1185,13 @@ * Take that 'normal' dibsection and change its colour table to an 'inverted' one */ - pbmi->bmiColors[0].rgbRed = 0xff; - pbmi->bmiColors[0].rgbGreen = 0xff; - pbmi->bmiColors[0].rgbBlue = 0xff; - pbmi->bmiColors[1].rgbRed = 0x0; - pbmi->bmiColors[1].rgbGreen = 0x0; - pbmi->bmiColors[1].rgbBlue = 0x0; - num = SetDIBColorTable(memdc, 0, 2, pbmi->bmiColors); + colors[0].rgbRed = 0xff; + colors[0].rgbGreen = 0xff; + colors[0].rgbBlue = 0xff; + colors[1].rgbRed = 0x0; + colors[1].rgbGreen = 0x0; + colors[1].rgbBlue = 0x0; + num = SetDIBColorTable(memdc, 0, 2, colors); ok(num == 2, "num = %d\n", num); /* black border, white interior */ @@ -1255,12 +1209,12 @@ /* SetDIBitsToDevice with a normal bmi -> inverted dib section */ - pbmi->bmiColors[0].rgbRed = 0x0; - pbmi->bmiColors[0].rgbGreen = 0x0; - pbmi->bmiColors[0].rgbBlue = 0x0; - pbmi->bmiColors[1].rgbRed = 0xff; - pbmi->bmiColors[1].rgbGreen = 0xff; - pbmi->bmiColors[1].rgbBlue = 0xff; + colors[0].rgbRed = 0x0; + colors[0].rgbGreen = 0x0; + colors[0].rgbBlue = 0x0; + colors[1].rgbRed = 0xff; + colors[1].rgbGreen = 0xff; + colors[1].rgbBlue = 0xff; SetDIBitsToDevice(memdc, 0, 0, 10, 10, 0, 0, 0, 10, bits, pbmi, DIB_RGB_COLORS); ok(ds_bits[0] == 0x55, "out_bits %02x\n", ds_bits[0]); @@ -1272,12 +1226,12 @@ * Now a dib section with a strange colour map just for fun. This behaves just like an inverted one. */ - pbmi->bmiColors[0].rgbRed = 0xff; - pbmi->bmiColors[0].rgbGreen = 0x0; - pbmi->bmiColors[0].rgbBlue = 0x0; - pbmi->bmiColors[1].rgbRed = 0xfe; - pbmi->bmiColors[1].rgbGreen = 0x0; - pbmi->bmiColors[1].rgbBlue = 0x0; + colors[0].rgbRed = 0xff; + colors[0].rgbGreen = 0x0; + colors[0].rgbBlue = 0x0; + colors[1].rgbRed = 0xfe; + colors[1].rgbGreen = 0x0; + colors[1].rgbBlue = 0x0; mono_ds = CreateDIBSection(hdc, pbmi, DIB_RGB_COLORS, (void**)&ds_bits, NULL, 0); ok(mono_ds != NULL, "CreateDIBSection rets NULL\n"); @@ -1290,24 +1244,24 @@ /* SetDIBitsToDevice with a normal bmi -> inverted dib section */ - pbmi->bmiColors[0].rgbRed = 0x0; - pbmi->bmiColors[0].rgbGreen = 0x0; - pbmi->bmiColors[0].rgbBlue = 0x0; - pbmi->bmiColors[1].rgbRed = 0xff; - pbmi->bmiColors[1].rgbGreen = 0xff; - pbmi->bmiColors[1].rgbBlue = 0xff; + colors[0].rgbRed = 0x0; + colors[0].rgbGreen = 0x0; + colors[0].rgbBlue = 0x0; + colors[1].rgbRed = 0xff; + colors[1].rgbGreen = 0xff; + colors[1].rgbBlue = 0xff; SetDIBitsToDevice(memdc, 0, 0, 10, 10, 0, 0, 0, 10, bits, pbmi, DIB_RGB_COLORS); ok(ds_bits[0] == 0x55, "out_bits %02x\n", ds_bits[0]); /* SetDIBitsToDevice with a inverted bmi -> inverted dib section */ - pbmi->bmiColors[0].rgbRed = 0xff; - pbmi->bmiColors[0].rgbGreen = 0xff; - pbmi->bmiColors[0].rgbBlue = 0xff; - pbmi->bmiColors[1].rgbRed = 0x0; - pbmi->bmiColors[1].rgbGreen = 0x0; - pbmi->bmiColors[1].rgbBlue = 0x0; + colors[0].rgbRed = 0xff; + colors[0].rgbGreen = 0xff; + colors[0].rgbBlue = 0xff; + colors[1].rgbRed = 0x0; + colors[1].rgbGreen = 0x0; + colors[1].rgbBlue = 0x0; SetDIBitsToDevice(memdc, 0, 0, 10, 10, 0, 0, 0, 10, bits, pbmi, DIB_RGB_COLORS); ok(ds_bits[0] == 0xaa, "out_bits %02x\n", ds_bits[0]); @@ -1765,6 +1719,7 @@ BYTE buf[1024]; char bi_buf[sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256]; BITMAPINFO *bi = (BITMAPINFO *)bi_buf; + RGBQUAD *colors = bi->bmiColors; PALETTEENTRY pal_ents[20]; hdc = GetDC(0); @@ -1799,7 +1754,7 @@ bi->bmiHeader.biBitCount = 1; bi->bmiHeader.biCompression = BI_RGB; bi->bmiHeader.biSizeImage = 0; - memset(bi->bmiColors, 0xAA, sizeof(RGBQUAD) * 256); + memset(colors, 0xAA, sizeof(RGBQUAD) * 256); SetLastError(0xdeadbeef); lines = GetDIBits(0, hbmp, 0, bm.bmHeight, buf, bi, DIB_RGB_COLORS); ok(lines == 0, "GetDIBits copied %d lines with hdc = 0\n", lines); @@ -1816,36 +1771,33 @@ ok(bi->bmiHeader.biSizeImage == sizeof(dib_bits_1), "expected 16*4, got %u\n", bi->bmiHeader.biSizeImage); /* the color table consists of black and white */ - ok(bi->bmiColors[0].rgbRed == 0 && bi->bmiColors[0].rgbGreen == 0 && - bi->bmiColors[0].rgbBlue == 0 && bi->bmiColors[0].rgbReserved == 0, + ok(colors[0].rgbRed == 0 && colors[0].rgbGreen == 0 && + colors[0].rgbBlue == 0 && colors[0].rgbReserved == 0, "expected bmiColors[0] 0,0,0,0 - got %x %x %x %x\n", - bi->bmiColors[0].rgbRed, bi->bmiColors[0].rgbGreen, - bi->bmiColors[0].rgbBlue, bi->bmiColors[0].rgbReserved); - ok(bi->bmiColors[1].rgbRed == 0xff && bi->bmiColors[1].rgbGreen == 0xff && - bi->bmiColors[1].rgbBlue == 0xff && bi->bmiColors[1].rgbReserved == 0, + colors[0].rgbRed, colors[0].rgbGreen, colors[0].rgbBlue, colors[0].rgbReserved); + ok(colors[1].rgbRed == 0xff && colors[1].rgbGreen == 0xff && + colors[1].rgbBlue == 0xff && colors[1].rgbReserved == 0, "expected bmiColors[0] 0xff,0xff,0xff,0 - got %x %x %x %x\n", - bi->bmiColors[1].rgbRed, bi->bmiColors[1].rgbGreen, - bi->bmiColors[1].rgbBlue, bi->bmiColors[1].rgbReserved); + colors[1].rgbRed, colors[1].rgbGreen, colors[1].rgbBlue, colors[1].rgbReserved); for (i = 2; i < 256; i++) { - ok(bi->bmiColors[i].rgbRed == 0xAA && bi->bmiColors[i].rgbGreen == 0xAA && - bi->bmiColors[i].rgbBlue == 0xAA && bi->bmiColors[i].rgbReserved == 0xAA, + ok(colors[i].rgbRed == 0xAA && colors[i].rgbGreen == 0xAA && + colors[i].rgbBlue == 0xAA && colors[i].rgbReserved == 0xAA, "expected bmiColors[%d] 0xAA,0xAA,0xAA,0xAA - got %x %x %x %x\n", i, - bi->bmiColors[i].rgbRed, bi->bmiColors[i].rgbGreen, - bi->bmiColors[i].rgbBlue, bi->bmiColors[i].rgbReserved); + colors[i].rgbRed, colors[i].rgbGreen, colors[i].rgbBlue, colors[i].rgbReserved); } /* returned bits are DWORD aligned and upside down */ ok(!memcmp(buf, dib_bits_1, sizeof(dib_bits_1)), "DIB bits don't match\n"); /* Test the palette indices */ - memset(bi->bmiColors, 0xAA, sizeof(RGBQUAD) * 256); + memset(colors, 0xAA, sizeof(RGBQUAD) * 256); SetLastError(0xdeadbeef); lines = GetDIBits(hdc, hbmp, 0, 0, NULL, bi, DIB_PAL_COLORS); - ok(((WORD*)bi->bmiColors)[0] == 0, "Color 0 is %d\n", ((WORD*)bi->bmiColors)[0]); - ok(((WORD*)bi->bmiColors)[1] == 1, "Color 1 is %d\n", ((WORD*)bi->bmiColors)[1]); + ok(((WORD*)colors)[0] == 0, "Color 0 is %d\n", ((WORD*)colors)[0]); + ok(((WORD*)colors)[1] == 1, "Color 1 is %d\n", ((WORD*)colors)[1]); for (i = 2; i < 256; i++) - ok(((WORD*)bi->bmiColors)[i] == 0xAAAA, "Color %d is %d\n", i, ((WORD*)bi->bmiColors)[1]); + ok(((WORD*)colors)[i] == 0xAAAA, "Color %d is %d\n", i, ((WORD*)colors)[1]); /* retrieve 24-bit DIB data */ memset(bi, 0, sizeof(*bi)); @@ -1856,7 +1808,7 @@ bi->bmiHeader.biBitCount = 24; bi->bmiHeader.biCompression = BI_RGB; bi->bmiHeader.biSizeImage = 0; - memset(bi->bmiColors, 0xAA, sizeof(RGBQUAD) * 256); + memset(colors, 0xAA, sizeof(RGBQUAD) * 256); memset(buf, 0xAA, sizeof(buf)); SetLastError(0xdeadbeef); lines = GetDIBits(hdc, hbmp, 0, bm.bmHeight, buf, bi, DIB_RGB_COLORS); @@ -1867,11 +1819,10 @@ /* the color table doesn't exist for 24-bit images */ for (i = 0; i < 256; i++) { - ok(bi->bmiColors[i].rgbRed == 0xAA && bi->bmiColors[i].rgbGreen == 0xAA && - bi->bmiColors[i].rgbBlue == 0xAA && bi->bmiColors[i].rgbReserved == 0xAA, + ok(colors[i].rgbRed == 0xAA && colors[i].rgbGreen == 0xAA && + colors[i].rgbBlue == 0xAA && colors[i].rgbReserved == 0xAA, "expected bmiColors[%d] 0xAA,0xAA,0xAA,0xAA - got %x %x %x %x\n", i, - bi->bmiColors[i].rgbRed, bi->bmiColors[i].rgbGreen, - bi->bmiColors[i].rgbBlue, bi->bmiColors[i].rgbReserved); + colors[i].rgbRed, colors[i].rgbGreen, colors[i].rgbBlue, colors[i].rgbReserved); } /* returned bits are DWORD aligned and upside down */ @@ -1913,7 +1864,7 @@ bi->bmiHeader.biBitCount = 1; bi->bmiHeader.biCompression = BI_RGB; bi->bmiHeader.biSizeImage = 0; - memset(bi->bmiColors, 0xAA, sizeof(RGBQUAD) * 256); + memset(colors, 0xAA, sizeof(RGBQUAD) * 256); memset(buf, 0xAA, sizeof(buf)); SetLastError(0xdeadbeef); lines = GetDIBits(hdc, hbmp, 0, bm.bmHeight, buf, bi, DIB_RGB_COLORS); @@ -1922,36 +1873,33 @@ ok(bi->bmiHeader.biSizeImage == sizeof(dib_bits_1), "expected 16*4, got %u\n", bi->bmiHeader.biSizeImage); /* the color table consists of black and white */ - ok(bi->bmiColors[0].rgbRed == 0 && bi->bmiColors[0].rgbGreen == 0 && - bi->bmiColors[0].rgbBlue == 0 && bi->bmiColors[0].rgbReserved == 0, + ok(colors[0].rgbRed == 0 && colors[0].rgbGreen == 0 && + colors[0].rgbBlue == 0 && colors[0].rgbReserved == 0, "expected bmiColors[0] 0,0,0,0 - got %x %x %x %x\n", - bi->bmiColors[0].rgbRed, bi->bmiColors[0].rgbGreen, - bi->bmiColors[0].rgbBlue, bi->bmiColors[0].rgbReserved); - ok(bi->bmiColors[1].rgbRed == 0xff && bi->bmiColors[1].rgbGreen == 0xff && - bi->bmiColors[1].rgbBlue == 0xff && bi->bmiColors[1].rgbReserved == 0, + colors[0].rgbRed, colors[0].rgbGreen, colors[0].rgbBlue, colors[0].rgbReserved); + ok(colors[1].rgbRed == 0xff && colors[1].rgbGreen == 0xff && + colors[1].rgbBlue == 0xff && colors[1].rgbReserved == 0, "expected bmiColors[0] 0xff,0xff,0xff,0 - got %x %x %x %x\n", - bi->bmiColors[1].rgbRed, bi->bmiColors[1].rgbGreen, - bi->bmiColors[1].rgbBlue, bi->bmiColors[1].rgbReserved); + colors[1].rgbRed, colors[1].rgbGreen, colors[1].rgbBlue, colors[1].rgbReserved); for (i = 2; i < 256; i++) { - ok(bi->bmiColors[i].rgbRed == 0xAA && bi->bmiColors[i].rgbGreen == 0xAA && - bi->bmiColors[i].rgbBlue == 0xAA && bi->bmiColors[i].rgbReserved == 0xAA, + ok(colors[i].rgbRed == 0xAA && colors[i].rgbGreen == 0xAA && + colors[i].rgbBlue == 0xAA && colors[i].rgbReserved == 0xAA, "expected bmiColors[%d] 0xAA,0xAA,0xAA,0xAA - got %x %x %x %x\n", i, - bi->bmiColors[i].rgbRed, bi->bmiColors[i].rgbGreen, - bi->bmiColors[i].rgbBlue, bi->bmiColors[i].rgbReserved); + colors[i].rgbRed, colors[i].rgbGreen, colors[i].rgbBlue, colors[i].rgbReserved); } /* returned bits are DWORD aligned and upside down */ ok(!memcmp(buf, dib_bits_1, sizeof(dib_bits_1)), "DIB bits don't match\n"); /* Test the palette indices */ - memset(bi->bmiColors, 0xAA, sizeof(RGBQUAD) * 256); + memset(colors, 0xAA, sizeof(RGBQUAD) * 256); SetLastError(0xdeadbeef); lines = GetDIBits(hdc, hbmp, 0, 0, NULL, bi, DIB_PAL_COLORS); - ok(((WORD*)bi->bmiColors)[0] == 0, "Color 0 is %d\n", ((WORD*)bi->bmiColors)[0]); - ok(((WORD*)bi->bmiColors)[1] == 1, "Color 1 is %d\n", ((WORD*)bi->bmiColors)[1]); + ok(((WORD*)colors)[0] == 0, "Color 0 is %d\n", ((WORD*)colors)[0]); + ok(((WORD*)colors)[1] == 1, "Color 1 is %d\n", ((WORD*)colors)[1]); for (i = 2; i < 256; i++) - ok(((WORD*)bi->bmiColors)[i] == 0xAAAA, "Color %d is %d\n", i, ((WORD*)bi->bmiColors)[i]); + ok(((WORD*)colors)[i] == 0xAAAA, "Color %d is %d\n", i, ((WORD*)colors)[i]); /* retrieve 4-bit DIB data */ memset(bi, 0, sizeof(*bi)); @@ -1962,7 +1910,7 @@ bi->bmiHeader.biBitCount = 4; bi->bmiHeader.biCompression = BI_RGB; bi->bmiHeader.biSizeImage = 0; - memset(bi->bmiColors, 0xAA, sizeof(RGBQUAD) * 256); + memset(colors, 0xAA, sizeof(RGBQUAD) * 256); memset(buf, 0xAA, sizeof(buf)); SetLastError(0xdeadbeef); lines = GetDIBits(hdc, hbmp, 0, bm.bmHeight, buf, bi, DIB_RGB_COLORS); @@ -1984,11 +1932,10 @@ expect.rgbBlue = pal_ents[entry].peBlue; expect.rgbReserved = 0; - ok(!memcmp(bi->bmiColors + i, &expect, sizeof(expect)), + ok(!memcmp(colors + i, &expect, sizeof(expect)), "expected bmiColors[%d] %x %x %x %x - got %x %x %x %x\n", i, expect.rgbRed, expect.rgbGreen, expect.rgbBlue, expect.rgbReserved, - bi->bmiColors[i].rgbRed, bi->bmiColors[i].rgbGreen, - bi->bmiColors[i].rgbBlue, bi->bmiColors[i].rgbReserved); + colors[i].rgbRed, colors[i].rgbGreen, colors[i].rgbBlue, colors[i].rgbReserved); } /* retrieve 8-bit DIB data */ @@ -2000,7 +1947,7 @@ bi->bmiHeader.biBitCount = 8; bi->bmiHeader.biCompression = BI_RGB; bi->bmiHeader.biSizeImage = 0; - memset(bi->bmiColors, 0xAA, sizeof(RGBQUAD) * 256); + memset(colors, 0xAA, sizeof(RGBQUAD) * 256); memset(buf, 0xAA, sizeof(buf)); SetLastError(0xdeadbeef); lines = GetDIBits(hdc, hbmp, 0, bm.bmHeight, buf, bi, DIB_RGB_COLORS); @@ -2028,11 +1975,10 @@ } expect.rgbReserved = 0; - ok(!memcmp(bi->bmiColors + i, &expect, sizeof(expect)), + ok(!memcmp(colors + i, &expect, sizeof(expect)), "expected bmiColors[%d] %x %x %x %x - got %x %x %x %x\n", i, expect.rgbRed, expect.rgbGreen, expect.rgbBlue, expect.rgbReserved, - bi->bmiColors[i].rgbRed, bi->bmiColors[i].rgbGreen, - bi->bmiColors[i].rgbBlue, bi->bmiColors[i].rgbReserved); + colors[i].rgbRed, colors[i].rgbGreen, colors[i].rgbBlue, colors[i].rgbReserved); } /* retrieve 24-bit DIB data */ @@ -2044,7 +1990,7 @@ bi->bmiHeader.biBitCount = 24; bi->bmiHeader.biCompression = BI_RGB; bi->bmiHeader.biSizeImage = 0; - memset(bi->bmiColors, 0xAA, sizeof(RGBQUAD) * 256); + memset(colors, 0xAA, sizeof(RGBQUAD) * 256); memset(buf, 0xAA, sizeof(buf)); SetLastError(0xdeadbeef); lines = GetDIBits(hdc, hbmp, 0, bm.bmHeight, buf, bi, DIB_RGB_COLORS); @@ -2055,11 +2001,10 @@ /* the color table doesn't exist for 24-bit images */ for (i = 0; i < 256; i++) { - ok(bi->bmiColors[i].rgbRed == 0xAA && bi->bmiColors[i].rgbGreen == 0xAA && - bi->bmiColors[i].rgbBlue == 0xAA && bi->bmiColors[i].rgbReserved == 0xAA, + ok(colors[i].rgbRed == 0xAA && colors[i].rgbGreen == 0xAA && + colors[i].rgbBlue == 0xAA && colors[i].rgbReserved == 0xAA, "expected bmiColors[%d] 0xAA,0xAA,0xAA,0xAA - got %x %x %x %x\n", i, - bi->bmiColors[i].rgbRed, bi->bmiColors[i].rgbGreen, - bi->bmiColors[i].rgbBlue, bi->bmiColors[i].rgbReserved); + colors[i].rgbRed, colors[i].rgbGreen, colors[i].rgbBlue, colors[i].rgbReserved); } /* returned bits are DWORD aligned and upside down */ @@ -3087,7 +3032,7 @@ static void check_StretchDIBits_stretch(HDC hdcDst, UINT32 *dstBuffer, UINT32 *srcBuffer, int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeightDest, int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc, - UINT32 expected[4], UINT32 legacy_expected[4], int line) + UINT32 expected[4], int line) { BITMAPINFO bitmapInfo; @@ -3120,7 +3065,7 @@ UINT32 *dstBuffer, srcBuffer[4]; HBRUSH hBrush, hOldBrush; BITMAPINFO biDst; - UINT32 expected[4], legacy_expected[4]; + UINT32 expected[4]; memset(&biDst, 0, sizeof(BITMAPINFO)); biDst.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); @@ -3167,46 +3112,42 @@ expected[0] = 0xCAFED00D, expected[1] = 0xFEEDFACE; expected[2] = 0xFEDCBA98, expected[3] = 0x76543210; check_StretchDIBits_stretch(hdcDst, dstBuffer, srcBuffer, - 0, 0, 2, 2, 0, 0, 2, 2, expected, expected, __LINE__); + 0, 0, 2, 2, 0, 0, 2, 2, expected, __LINE__); expected[0] = 0xCAFED00D, expected[1] = 0x00000000; expected[2] = 0x00000000, expected[3] = 0x00000000; - legacy_expected[0] = 0xFEDCBA98, legacy_expected[1] = 0x00000000; - legacy_expected[2] = 0x00000000, legacy_expected[3] = 0x00000000; check_StretchDIBits_stretch(hdcDst, dstBuffer, srcBuffer, - 0, 0, 1, 1, 0, 0, 1, 1, expected, legacy_expected, __LINE__); + 0, 0, 1, 1, 0, 0, 1, 1, expected, __LINE__); expected[0] = 0xFEDCBA98, expected[1] = 0xFEDCBA98; expected[2] = 0xFEDCBA98, expected[3] = 0xFEDCBA98; check_StretchDIBits_stretch(hdcDst, dstBuffer, srcBuffer, - 0, 0, 2, 2, 0, 0, 1, 1, expected, expected, __LINE__); + 0, 0, 2, 2, 0, 0, 1, 1, expected, __LINE__); expected[0] = 0x42441000, expected[1] = 0x00000000; expected[2] = 0x00000000, expected[3] = 0x00000000; - legacy_expected[0] = 0x00543210, legacy_expected[1] = 0x00000000; - legacy_expected[2] = 0x00000000, legacy_expected[3] = 0x00000000; - todo_wine check_StretchDIBits_stretch(hdcDst, dstBuffer, srcBuffer, - 0, 0, 1, 1, 0, 0, 2, 2, expected, legacy_expected, __LINE__); + check_StretchDIBits_stretch(hdcDst, dstBuffer, srcBuffer, + 0, 0, 1, 1, 0, 0, 2, 2, expected, __LINE__); expected[0] = 0x00000000, expected[1] = 0x00000000; expected[2] = 0x00000000, expected[3] = 0x00000000; check_StretchDIBits_stretch(hdcDst, dstBuffer, srcBuffer, - 0, 0, 2, 2, 1, 1, -2, -2, expected, expected, __LINE__); + 0, 0, 2, 2, 1, 1, -2, -2, expected, __LINE__); expected[0] = 0x00000000, expected[1] = 0x00000000; expected[2] = 0x00000000, expected[3] = 0x00000000; check_StretchDIBits_stretch(hdcDst, dstBuffer, srcBuffer, - 0, 0, 2, 2, 1, 1, -2, -2, expected, expected, __LINE__); + 0, 0, 2, 2, 1, 1, -2, -2, expected, __LINE__); expected[0] = 0x00000000, expected[1] = 0x00000000; expected[2] = 0x00000000, expected[3] = 0x00000000; check_StretchDIBits_stretch(hdcDst, dstBuffer, srcBuffer, - 1, 1, -2, -2, 1, 1, -2, -2, expected, expected, __LINE__); + 1, 1, -2, -2, 1, 1, -2, -2, expected, __LINE__); expected[0] = 0x00000000, expected[1] = 0x00000000; expected[2] = 0x00000000, expected[3] = 0xCAFED00D; check_StretchDIBits_stretch(hdcDst, dstBuffer, srcBuffer, - 1, 1, 2, 2, 0, 0, 2, 2, expected, expected, __LINE__); + 1, 1, 2, 2, 0, 0, 2, 2, expected, __LINE__); SelectObject(hdcDst, oldDst); DeleteObject(bmpDst); @@ -3220,7 +3161,7 @@ expected[0] = 0xFEDCBA98, expected[1] = 0x76543210; expected[2] = 0xCAFED00D, expected[3] = 0xFEEDFACE; check_StretchDIBits_stretch(hdcDst, dstBuffer, srcBuffer, - 0, 0, 2, 2, 0, 0, 2, 2, expected, expected, __LINE__); + 0, 0, 2, 2, 0, 0, 2, 2, expected, __LINE__); /* Tidy up */ SelectObject(hdcDst, oldDst); @@ -3232,19 +3173,16 @@ static void test_GdiAlphaBlend(void) { - /* test out-of-bound parameters for GdiAlphaBlend */ HDC hdcNull; - HDC hdcDst; HBITMAP bmpDst; HBITMAP oldDst; - - BITMAPINFO bmi; + BITMAPINFO *bmi; HDC hdcSrc; HBITMAP bmpSrc; HBITMAP oldSrc; LPVOID bits; - + BOOL ret; BLENDFUNCTION blend; if (!pGdiAlphaBlend) @@ -3258,14 +3196,14 @@ bmpDst = CreateCompatibleBitmap(hdcNull, 100, 100); hdcSrc = CreateCompatibleDC(hdcNull); - memset(&bmi, 0, sizeof(bmi)); /* as of Wine 0.9.44 we require the src to be a DIB section */ - bmi.bmiHeader.biSize = sizeof(bmi.bmiHeader); - bmi.bmiHeader.biHeight = 20; - bmi.bmiHeader.biWidth = 20; - bmi.bmiHeader.biBitCount = 32; - bmi.bmiHeader.biPlanes = 1; - bmi.bmiHeader.biCompression = BI_RGB; - bmpSrc = CreateDIBSection(hdcDst, &bmi, DIB_RGB_COLORS, &bits, NULL, 0); + bmi = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, FIELD_OFFSET( BITMAPINFO, bmiColors[3] )); + bmi->bmiHeader.biSize = sizeof(bmi->bmiHeader); + bmi->bmiHeader.biHeight = 20; + bmi->bmiHeader.biWidth = 20; + bmi->bmiHeader.biBitCount = 32; + bmi->bmiHeader.biPlanes = 1; + bmi->bmiHeader.biCompression = BI_RGB; + bmpSrc = CreateDIBSection(hdcDst, bmi, DIB_RGB_COLORS, &bits, NULL, 0); ok(bmpSrc != NULL, "Couldn't create source bitmap\n"); oldDst = SelectObject(hdcDst, bmpDst); @@ -3276,26 +3214,130 @@ blend.SourceConstantAlpha = 128; blend.AlphaFormat = 0; - expect_eq(pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, 0, 0, 20, 20, blend), TRUE, BOOL, "%d"); SetLastError(0xdeadbeef); - expect_eq(pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, -1, 0, 10, 10, blend), FALSE, BOOL, "%d"); - expect_eq(GetLastError(), ERROR_INVALID_PARAMETER, int, "%d"); - expect_eq(pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, 0, -1, 10, 10, blend), FALSE, BOOL, "%d"); - expect_eq(pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, 15, 0, 10, 10, blend), FALSE, BOOL, "%d"); - expect_eq(pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, 10, 10, -2, 3, blend), FALSE, BOOL, "%d"); - expect_eq(pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, 10, 10, -2, 3, blend), FALSE, BOOL, "%d"); + ret = pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, 0, 0, 20, 20, blend); + ok( ret, "GdiAlphaBlend failed err %u\n", GetLastError() ); + + SetLastError(0xdeadbeef); + ret = pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, -1, 0, 10, 10, blend); + ok( !ret, "GdiAlphaBlend succeeded\n" ); + ok( GetLastError() == ERROR_INVALID_PARAMETER, "wrong error %u\n", GetLastError() ); + + ret = pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, 0, -1, 10, 10, blend); + ok( !ret, "GdiAlphaBlend succeeded\n" ); + ret = pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, 15, 0, 10, 10, blend); + ok( !ret, "GdiAlphaBlend succeeded\n" ); + ret = pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, 10, 10, -2, 3, blend); + ok( !ret, "GdiAlphaBlend succeeded\n" ); + ret = pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, 10, 10, -2, 3, blend); + ok( !ret, "GdiAlphaBlend succeeded\n" ); SetWindowOrgEx(hdcSrc, -10, -10, NULL); - expect_eq(pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, -1, 0, 10, 10, blend), TRUE, BOOL, "%d"); - expect_eq(pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, 0, -1, 10, 10, blend), TRUE, BOOL, "%d"); + SetLastError(0xdeadbeef); + ret = pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, -1, 0, 10, 10, blend); + ok( ret, "GdiAlphaBlend failed err %u\n", GetLastError() ); + SetLastError(0xdeadbeef); + ret = pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, 0, -1, 10, 10, blend); + ok( ret, "GdiAlphaBlend failed err %u\n", GetLastError() ); SetMapMode(hdcSrc, MM_ANISOTROPIC); ScaleWindowExtEx(hdcSrc, 10, 1, 10, 1, NULL); - expect_eq(pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, -1, 0, 30, 30, blend), TRUE, BOOL, "%d"); - expect_eq(pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, 0, -1, 30, 30, blend), TRUE, BOOL, "%d"); + SetLastError(0xdeadbeef); + ret = pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, -1, 0, 30, 30, blend); + ok( ret, "GdiAlphaBlend failed err %u\n", GetLastError() ); + SetLastError(0xdeadbeef); + ret = pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, 0, -1, 30, 30, blend); + ok( ret, "GdiAlphaBlend failed err %u\n", GetLastError() ); + + SetLastError(0xdeadbeef); + ret = pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, NULL, 0, 0, 20, 20, blend); + ok( !ret, "GdiAlphaBlend succeeded\n" ); + ok( GetLastError() == 0xdeadbeef, "wrong error %u\n", GetLastError() ); + + /* overlapping source and dest not allowed */ + + SetLastError(0xdeadbeef); + ret = pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcDst, 19, 19, 20, 20, blend); + ok( !ret, "GdiAlphaBlend succeeded\n" ); + ok( GetLastError() == ERROR_INVALID_PARAMETER, "wrong error %u\n", GetLastError() ); + + SetLastError(0xdeadbeef); + ret = pGdiAlphaBlend(hdcDst, 20, 20, 20, 20, hdcDst, 1, 1, 20, 20, blend); + ok( !ret, "GdiAlphaBlend succeeded\n" ); + ok( GetLastError() == ERROR_INVALID_PARAMETER, "wrong error %u\n", GetLastError() ); + + SetLastError(0xdeadbeef); + ret = pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcDst, 20, 10, 20, 20, blend); + ok( ret, "GdiAlphaBlend succeeded\n" ); + SetLastError(0xdeadbeef); + ret = pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcDst, 10, 20, 20, 20, blend); + ok( ret, "GdiAlphaBlend succeeded\n" ); + + /* AC_SRC_ALPHA requires 32-bpp BI_RGB format */ + + blend.AlphaFormat = AC_SRC_ALPHA; + SetLastError(0xdeadbeef); + ret = pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, 0, 0, 20, 20, blend); + ok( ret, "GdiAlphaBlend failed err %u\n", GetLastError() ); + + bmi->bmiHeader.biCompression = BI_BITFIELDS; + ((DWORD *)bmi->bmiColors)[0] = 0xff0000; + ((DWORD *)bmi->bmiColors)[1] = 0x00ff00; + ((DWORD *)bmi->bmiColors)[2] = 0x0000ff; + bmpSrc = CreateDIBSection(hdcDst, bmi, DIB_RGB_COLORS, &bits, NULL, 0); + ok(bmpSrc != NULL, "Couldn't create source bitmap\n"); + oldSrc = SelectObject(hdcSrc, bmpSrc); + DeleteObject( oldSrc ); + + SetLastError(0xdeadbeef); + ret = pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, 0, 0, 20, 20, blend); + ok( ret, "GdiAlphaBlend failed err %u\n", GetLastError() ); + + bmi->bmiHeader.biCompression = BI_BITFIELDS; + ((DWORD *)bmi->bmiColors)[0] = 0x0000ff; + ((DWORD *)bmi->bmiColors)[1] = 0x00ff00; + ((DWORD *)bmi->bmiColors)[2] = 0xff0000; + bmpSrc = CreateDIBSection(hdcDst, bmi, DIB_RGB_COLORS, &bits, NULL, 0); + ok(bmpSrc != NULL, "Couldn't create source bitmap\n"); + oldSrc = SelectObject(hdcSrc, bmpSrc); + DeleteObject( oldSrc ); + + SetLastError(0xdeadbeef); + ret = pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, 0, 0, 20, 20, blend); + ok( !ret, "GdiAlphaBlend succeeded\n" ); + ok( GetLastError() == ERROR_INVALID_PARAMETER, "wrong error %u\n", GetLastError() ); + + bmi->bmiHeader.biBitCount = 24; + bmi->bmiHeader.biCompression = BI_RGB; + bmpSrc = CreateDIBSection(hdcDst, bmi, DIB_RGB_COLORS, &bits, NULL, 0); + ok(bmpSrc != NULL, "Couldn't create source bitmap\n"); + oldSrc = SelectObject(hdcSrc, bmpSrc); + DeleteObject( oldSrc ); + + SetLastError(0xdeadbeef); + ret = pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, 0, 0, 20, 20, blend); + ok( !ret, "GdiAlphaBlend succeeded\n" ); + ok( GetLastError() == ERROR_INVALID_PARAMETER, "wrong error %u\n", GetLastError() ); + + bmi->bmiHeader.biBitCount = 1; + bmpSrc = CreateDIBSection(hdcDst, bmi, DIB_RGB_COLORS, &bits, NULL, 0); + ok(bmpSrc != NULL, "Couldn't create source bitmap\n"); + oldSrc = SelectObject(hdcSrc, bmpSrc); + DeleteObject( oldSrc ); + + SetLastError(0xdeadbeef); + ret = pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, 0, 0, 20, 20, blend); + ok( !ret, "GdiAlphaBlend succeeded\n" ); + ok( GetLastError() == ERROR_INVALID_PARAMETER, "wrong error %u\n", GetLastError() ); + + bmpSrc = CreateBitmap( 100, 100, 1, 1, NULL ); + ok(bmpSrc != NULL, "Couldn't create source bitmap\n"); + oldSrc = SelectObject(hdcSrc, bmpSrc); + DeleteObject( oldSrc ); SetLastError(0xdeadbeef); - expect_eq(pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, NULL, 0, 0, 20, 20, blend), FALSE, BOOL, "%d"); - expect_eq(GetLastError(), 0xdeadbeef, int, "%d"); + ret = pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcSrc, 0, 0, 20, 20, blend); + ok( !ret, "GdiAlphaBlend succeeded\n" ); + ok( GetLastError() == ERROR_INVALID_PARAMETER, "wrong error %u\n", GetLastError() ); SelectObject(hdcDst, oldDst); SelectObject(hdcSrc, oldSrc); diff -Nru wine1.3-1.3.30/dlls/gdi32/tests/dib.c wine1.3-1.3.31/dlls/gdi32/tests/dib.c --- wine1.3-1.3.30/dlls/gdi32/tests/dib.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/tests/dib.c 2011-10-21 18:38:36.000000000 +0000 @@ -27,10 +27,12 @@ #include "wingdi.h" #include "winuser.h" #include "wincrypt.h" +#include "mmsystem.h" /* DIBINDEX */ #include "wine/test.h" static HCRYPTPROV crypt_prov; +static BOOL (WINAPI *pGdiAlphaBlend)(HDC,int,int,int,int,HDC,int,int,int,int,BLENDFUNCTION); static DWORD (WINAPI *pSetLayout)(HDC hdc, DWORD layout); static const DWORD rop3[256] = @@ -112,6 +114,24 @@ "94645300d6eb51020a7ef8261dee2941cd51b5df", "c56f5bdc9cac4f0bc81c33295d9aed8eaf4cb1f2", "21cdfde38ac7edbb241ec83d82f31286e90c4629", + "1fd2f4dcb62f8522171872e43fd4a35041d68100", + "68c18db6abfda626cab12d198298d4c39264bfbc", + "6b59ae6c20749020ad43175e05110dc33b6a59b5", + "39c31de73aafcfcadf0bf414da4495be9de54417", + "132949f59bfeb88dc2047e6eaecb8512aea3d9ab", + "f6a6d765bf23726329f96020ba8c5e3c0897aafa", + "a7aa311cdc6137f15b9ef9cb1a92ac54ec02f058", + "e71d6bb9bd38eea5719f8ba57177997910e2d841", + "3d2ccbe51408232a04769546b1bdd74f84558a41", + "a1fe9aa885584a0f713d7c6f76c89830fbf28563", + "d7085333becdec7759a5229e5fe9ba1e11db0c22", + "aaf62842bb98d8a2945c4f643baf50afaeea9307", + "287b2f2f2fb5a1d7ee4a29b43342103d78a7a8ab", + "d7dd4700f49808541bba99244b7eb5840e0a2439", + "af99228aa4cfbd1f61bd824db046144a3c6c2ed7", + "568f87f0194ca19b69a5b2bcdef795d89c5721ce", + "257d114354a93e681225072bcde756f155b70496", + "0cdf6fee6721d60d5d5ed26b1989eacddc16b14e", NULL }; @@ -153,6 +173,142 @@ "19b32a0daa91201725b5e13820c343d0a84ff698", "abca6a80a99b05722d2d87ce2a8b94ef1ae549e1", "2ba70994d0b4ce87fdf6fbc33ada11252178061e", + "7b4e1d47a03e2cec236d8fb6e2ae89d8ed078f79", + "075c4cb50e2cf96ab5d132c9f7bb1c1deb4735bd", + "8566c1110ab5cb8f754787b47923c8bff38f790c", + "89e90d6159d59886bbbf0c40a7cd01293c3cfda3", + "3a598f1eb35c1412b0c131e9d9e36a4aef9534d2", + "d01071c44259adc94b89978b7d51a058b6dad665", + "e6d33b106bcda374e662d338c57a457dbcaa108a", + "27ef47377e88f5ac5ad33b19eae27d56c456ac65", + "339908a568f384e1f384a3e1b0dd415779203b02", + "88fd743d00bd37d2ed722092146795b044d08a6e", + "c0537ec24147e74939219213d864ee113cad9967", + "118bf4c5bddc206ba737f7aa8b239940cd1aadc2", + "7cb51f6c5f1dae926601986c934533df5f8baa9f", + "86c84cc8306975edecc6d4a89a8aff29f59b55a7", + "af99228aa4cfbd1f61bd824db046144a3c6c2ed7", + "25675c30adfe24d6cae60793b156dfdaa36ac3ba", + "2c4f116451b571106beba8b85da8e4b923937246", + "9c8f3063504a81bbbfa8558e111c63d8bc36dbbf", + NULL +}; + +static const char *sha1_graphics_r10g10b10[] = +{ + "a3cadd34d95d3d5cc23344f69aab1c2e55935fcf", + "b340b5d4750dd3dcd95d73c41b2c3a17f799210b", + "b1db68f35022c5fd43519ec8e98047e16bc4fff8", + "6e1902eb24865e74066fa9f2a7a49e6f9154f62f", + "35df9f4b0965fedf7bca36aa4f17b0fa20e2cd03", + "5652e1feb7d4f22c8a2721fd141157e0b9ef965e", + "22d89d5933f8b9bd60e9b22e42e7f5659269b63d", + "0ad27de0c916c073d0d18484fff899bbdb258db7", + "7c05ee5a01dad1e187537701a95382f0a3ec28dc", + "b00f0b4448be722d1a19ffe33aaaac4df848d397", + "7e5ce5c05a54e83890f022ba4e9853e4b254bf0c", + "2986b431a0022153e5f875da77cc792e3825ebd5", + "ca4b25a5459885ce1e0a36844612087893d425b1", + "181bd4616796d89174cedc0332fb320b65aeb0e2", + "6c417b1798ee319eeb404efe4aa136ed7ed37966", + "9a9f83e2035aa591d18101c919d1fd5b3456b46c", + "74ce9f5658cd8aeae4601fe72fcef07d9f75ec26", + "536eaaa901d652805a8977ecb2dc73f651094c5b", + "b8b1ac11bcc7174c5b23c18cc7919d09a04255c2", + "92cddcabf5365eef1e037f488af52b31669d987f", + "2c9c4f27bade080a2cd6f9160422762e267c2f5f", + "c7ce29d189dc06ba57e64f0cc32202f5a25ba48d", + "7ac4cb547c8f4ce5079c95afad9d0e2b0cd76a0e", + "d578210815e27fe210eb678a71e6d22ba4b4c196", + "c7a027c7079dfcc831ca8bc134a509958273073c", + "19cf978596195b848df8709aaf637f83f92b8336", + "798a835fe50156eeb478c0a6085b088f53409d52", + "86ddf268d854f37e5b478c48792b551b57635db6", + "8259d388e02542207b6a08d65d553871ce1c4a09", + "faea73ff9436223f8c4ee76ac9861a6609ac4ae4", + "66f8d78d4971934794478afee28b3a50e97f1b82", + "b8f16334bdced439e1c6fc69704bc95f7b46b147", + "63798fb175afef78fa8fe8133d9de97a0cc80651", + "5f629ab51719dd0ca5a67d880eb2631f5b598a7b", + "1ceb85697f649a62b1753438daa14944af7f450c", + "98ce4dbc04eb48fa0f96ef813db5b4dfa1b2dd39", + "3addb9ccd8f56fc0825f61b1b5af67d3297f4ded", + "f00bac7e18827cfb264fae2e8a0da17b9db18d52", + "63c1c6c63e82f3b8bd977a1381b248e05321394d", + "ada202d2f526f6995f83412479891c1764b66e5a", + "68348e8f54883f4fe295354b024e291c85f1038f", + "07f55f85a5bb70de5841ea4f62a9af3d29d3d94b", + "e9167564031ead3459eee6a3ebb2f58f100d931f", + "d39315a1399639f6d4305a342c9ccf02a463b0dd", + "46196f50297260df2863e2fa76d2dfcf72006c23", + "0790585dfaef94f912b1ee81477d4ac448708708", + "589fb8a85d924ad19ed78409ae89475ba479c30a", + "43d67bc61ef54014b022891e5c024fc24b1fe797", + "e8783644428b637adbe80bcd084a33428cb69983", + "fc0c32afb719295f28bcfef22803bef94f798e20", + "36f6db4fbe2a1630a7597d3a446f2902755c96ef", + "d3f08946300e1700865042aed121870e292d1095", + "abb56db94becb64d663b51f0ea6b4bd535a88ba0", + "3a81fe558c69ca0aea7e7191771ed86cf4321a5a", + NULL +}; + +static const char *sha1_graphics_r6g6b6[] = +{ + "a3cadd34d95d3d5cc23344f69aab1c2e55935fcf", + "a1adb32e70188a00f82fe58156b4da74f3ef7a0a", + "5b9dab3d8411afb25fbbeba0313db526815ac189", + "6415f551e28e1b38b2d721f0a9e003b7d215f6b2", + "2028d1b0d1acef35dc07027135023f35fb9746b9", + "378713720dcb5aadb730435ad0989a68ab189114", + "084152773feb01a85df6006f2f4f288a1442d37a", + "97b824953f60fc9a91028045baacbe7b7dc82b14", + "f33b1931f392bd09b3494efc23cf7d0ed3071014", + "287d755448e72e29e4812193e2b6f8098a214d82", + "4059d295aa05ace77853d7ee3d74305cdcbec9f5", + "2557ebd4fdacc0e5bcce3dae88a46dd247654ea1", + "e51bcf80211cd06e7d10225534b7a79b5454be27", + "9bf91a547f47b29bf370e9b60eae7cd6ce987617", + "0b94e0a5b739ab0020130646522e53da35a149ad", + "eab6e532845dfd5dc2701ef90669a5f7b63e9539", + "90deb2e2502186b3c62a58ec9b1c9d2b7b4089c1", + "a4e451f76a77bbc3e224a41e9b4fa78cb841a8af", + "084607a5c99a84140d93db57d1b0f3a0f51afdac", + "2128157e601ef0d6b3636b7387d3b28e876de728", + "8bdcdcd463f0052279d070ac763757f4db975483", + "9ea0ad22d7b61598fe36e9c942242e8e07e32edb", + "c39a25a61c4eade48dea62a97c9fb8714c06a8af", + "66b130f83381957cfc4763558c5f5cddf2e3b564", + "d548135ce2320499277ce12b80bc35004f8a9787", + "85a4f3f1b4b0a170198f1bb5d225fcf77887665e", + "1906ddfd829e735af49245171f8eb7673295d399", + "971a0b786d5bccb1bfb9cbb054740e4eb36f9b7a", + "e2896035f178b3d20e4f4d1accb1b3d1b4028865", + "defd95a10d44cad6e736542920b74efd53e9e7eb", + "eaccd012c0fc46e79cae1997ef101979e5654d8d", + "3f11a735e52030aa3d0f024d83803698293d10e5", + "82f45c5a34fbb9e36d947a876834d33a1f69719c", + "3d27002f4fe3c943468b7e3ef6985962c41ac8dc", + "3231c4d87faefb7ec5bd377613969c05b70343fc", + "00394e438e9edde978e88602c9ad2a572e965bf6", + "e760be69cb37c7be35d5968d7a294e1fd49d4f66", + "996fb708ddc4b94eb8d1585bd83a5c8a1e2633ba", + "caa39eb482e8fc2e00f1c6737735c023ac9363ef", + "c1250ff2b67e6d2a8baccc5c93f8f5ad933c5c4f", + "3d6cf3753390a05504b1f50302f767df443f0f40", + "b7cf1bafe002673ae58ff50feea61ee32a1ae10a", + "da9e896a3a98b330980152b2e4a43cb6e686c730", + "0a613357e1e8ec8ff1ad956e46e527a05cab8500", + "bdd8ed3ca3ad107b43731ec253ecaa34750a10de", + "47499ad13b719de18c59c2bc9b38ed578db50b95", + "643e82ac67ab2b0c034a3fcfa498b072a5f2be5c", + "cd01f2c0a63b2229d4467d2f874d58edca32b3d4", + "94b54f1da5212b3f3a1195eda5ea927e160bc89d", + "49341c297a887186bd47d7465d827ab3147f05e3", + "325279e76367200d3fd7194d81c09fd139988ece", + "c3def160a1e847605ff0fc7edd30397fa90635a0", + "50acb1597c4d53ad63225376d2aa36f64e8a229d", + "796fd861474aa7861bd0384127df755458757ec3", NULL }; @@ -194,6 +350,24 @@ "b0a959745b2db1d9f449e68e4479a4f36301879c", "63f764b9bd2f4876ab1ee0f3c0eb55b5a7de5212", "e171f6ec77bca91d6b8559911bce296c0bac469e", + "9725669042ef68acb408404d196496d10340bb5a", + "26e7e1c300ba0c5aaaef03eeb71d529f6def9289", + "b1f602d2a74095cc0115ae2ae07b642498e6c0fc", + "03d5eb8e3a6662e6dc183f88ee2f285065fc9c51", + "f4c312f9a37ddc54a27f6b1421dab1ce0cec0c27", + "0f79500eda467cd3cbc220abdd37b5dba695d654", + "8d4e3e9d81cc30aaad555ed9e27aed7c615de630", + "84c43a3cbd7d8c1ac9a0e9b6f07620158079b278", + "7d479beeb6758c164566638b5c873c188d6a91e7", + "80086808fca03e757d812e31d1ae576bf90dac9d", + "9560096f1b85ae6d939d736165c44df00a47c424", + "1015e0217ea13eaa62c7666b8b81aafd75f8f610", + "93e1aec608e037af3bfb7bd32dde446abe4eea11", + "b25ba91487ec945410deb2b51bc1156890c032a8", + "d347ca5c6c4b6a61389247c3b6f61564033e8c25", + "ee315634ed92da3a32c2675ecd1b369471c60936", + "3491e2bd81e70dd203c8551cc2d39b19401caafe", + "826de85271b67a11e7bd1a6596b58a045a96b69e", NULL }; @@ -234,6 +408,29 @@ "a8d6a5285a927ba3a3be34b06a06c70a20d4c1b3", "e428d213ad02651287894f093413949dcb369208", "7df915bedcc5951a1b6f828490f7dbb93212e835", + "645dc251d205139282b17eb7bece1055fff3bcd0", + "76215275593631f5900aad3616d725733dc39493", + "81655a550703849a616d4a16504bb9c6f999285f", + "573d65665d20f00d36d9782ae2b89772140524ab", + "619414c1b33ac60cb0c0de61df86245d472259b0", + "c3d4a1425e17de9e05e3f6dfc6a24c26bfd5ee12", + "2a66dae03890ff791eabb982949435adb19af02b", + "24ac219478ba406f30794550690486b14cbac5e8", + "2b28d20690dc92374ebecb5508f8fdc6c7581790", + "db8c34882ddd46716d14bbf569d530f80db65ed4", + "6c652ecce55e71fee16bc1c9b2c5ae4161bdd2ea", + "9b02173f424c098ea0f4cc5db9eb65f69263d127", + "a92942269911a88793b3460b6f2a2cd56e48eec1", + "059db9f0426b371e464ef3d30f1a4f4aa599e101", + "a52d6ceee5c2a04b4e059c0d49337a997cc17e40", + "aa4a0a4b7f2697aaf270c89874631974bd9d7183", + "585061e403d9cac1603a38af420efe87338f381a", + "8f447a3820c83662086dfa836da2205b0130fd5f", + "3772003c7fb420003512d0c437b3659d96d89ce4", + "dab47c9dc149e570045d699598b14a613bf319b3", + "2daca4d26a086ed34894693be0b0374402232809", + "bf0e0b74ce5686b73c527843e0d0df0cd10efefe", + "517e32a8c0312b5676d498583ea092b0f198f2bc", NULL }; @@ -274,6 +471,157 @@ "957a86fbe8a96dd068db65e4e624a52bcc84af46", "13b0f240054dc57ba0e2dfde74048496304a2c7f", "51ef267eb9c15487c9430f505e8a6c929eb2170c", + "1b593d8e031d3b37fecf6f1df5a8f96c8e8bfef8", + "9dd123938b0a02601d8d458ecbd6535ddefea724", + "815a1e4fc7f3a00c2990c150e87eba0b13f66811", + "75ae8c80af4356a1a5eebde6608fbc31e8a95372", + "b89ae8de2d975b8adb263ace66fd953d29165a8b", + "e901ab4b20bc87370609d7ba1f21aa08abd9eced", + "e9105c6ed8355519e0cf2d2217ed7af43cec8ba0", + "3cbf5fffdd73f9639f3eb34ec1ab3055bc8618fb", + "8e2e70ade90711c4ac01352aa0373fce36ff5dc0", + "8c40d6d8e0c696c31f04c896e492a2a38703d870", + "e13c821c236ea0b67cca64c9da7be15e88fc712f", + "9af4907a8144458a73dbb7471784f8c3d9aeffcf", + "e4731b63d41f6b51e30752ea52d85c4a2938731b", + "f0acb3cfcda62e95bee5f7bc8830ffeb3dd7e5a7", + "07b10c3f191d0a93e5e5694aae37dcad407e10f5", + "f7900e60347029876ba55e8f0c4c02e89deb36b6", + "734d4a7836891d729f4a9ec6916ead78eecb2596", + "d8ba2e556fd64c9c2f1746496e6e7dd7a487cd6d", + NULL +}; + +static const char *sha1_graphics_8_color[] = +{ + "41728d7ff2bb425b5fc06521adeabf6cc73136f3", + "e313bb57f699587b0bae2f17f5da5d977e6f2a61", + "49024d6cbdf1614327dfda9eda17675e76805f7e", + "63ba8ab7e7996857d52d4c2b995cfcd304daf25f", + "92295ae66712df050cfd6cc9fd2fd4101784c5fc", + "84d85009d35ae10abbc435f3913422544105cea2", + "eae349c2a481d6e8bfdf9a7f4f49384a14716a5f", + "6c51068ca1db36d948eaa34aed4a44d2cd1e8b32", + "f3aa8d89430748178952de56643069d80b40aad6", + "bd5fed74e2f1b097ef4c20bd30edfc6ee11eeccd", + "0546b87bf5fbe1b8168eed5d4a20649be92734a1", + "52b1363e821bf604d9df260bfa97e26d428c33fd", + "108732d9909ee5f3542a9b90b3ad96ec82446ab9", + "06c76c53dcf3ba5e213d483e27d841404c9aa90a", + "ae8fcdbdd44ba58e9bd46a4c56eb54f37483913c", + "89711289be6d5c55734878410e4923d5cca9aca9", + "8355caf57d51ad4e14275943088392e37dc75d33", + "5992b2e331a0e0f752598cc8d083cbecb5f4dde6", + "6f0570da9dea7f043f678088f8362ee458cd79fa", + "940db409d4c3e5640275724f9e5f7c1a0d2e21b2", + "242ce86967ea62fa69c1e6f597ccbcf2f0b1602c", + "5092b22af85a08f10a2899888bb9d552f25f828e", + "e91973be2651eeef568700463652838d8cbba976", + "1df851515ecf46df5c2d3279535c1763f72353dd", + "b68922915ebc2797d58deecf983f7d0cf9a5efbd", + "359bd76088a965bb0cee7c44800bc46b2638807e", + "e14e5734b33057b890368f3e9d482d9e5a0358c5", + "64205ccaa277e64eeea0c20e99900ac79858ca2c", + "2cdee35d43d62da09b4ddfddbd0948ddbb9fc48e", + "91f988f575338505ba8a40727865a8d3f2298624", + "d2b4557492ebb2e0f640a0a2f6fc3bdc8d8f36f9", + "421e8b608378e4f17774dd32ea6446fa0fa16f91", + "3b7488731da48635d86be551ab7c8c0f91c78219", + "4fd49cb49853ef950fd0b7e2e35718a71c8374c7", + "e15a355fc09bfd22267917898e2266168ff410e3", + "b9688566bddf18586787c00e68724e51e97dfb72", + "5e38e03310f1c66f2052af2a745d8c60515707c5", + "f994fb5019bf4c1a96eccf89af599eae0aa6b412", + "3a71ad6fef147067641e49a5f69b2454e3a5010d", + "ea10eac72830dcae19bcb16a076c2b21d844b5b6", + "6376234f542467e5887adfece62f753e998dc19d", + "add949d009217ef2b847e34772ba363e4be7b1b8", + "28fcf9f7d098c05de632ae38b2fe33b9635ad445", + "0b58666deb3615e912896a764e5c6475989e95e4", + "bf460cc44c0edee851d72587c8425c3f06a62c55", + "ea74c00c45569007383b632d7f1d2adc82645717", + "5ac22e1a33b0204fdc7a68d54ee94648e96079a0", + "284abed096637c80bb50844e393da9dd4b3f19ac", + "9dc776c5ab8256b1301c7d1da60544a9410e6715", + "a433c41c05b6db008a4cb2c52a321d027c6be1fe", + "46f772c2832b3aad584674db666bd63e48b4f338", + "a9f9ca0049235db51ab7359a5fc3d21be42d2aac", + "f3dc739da41fb299637c8660e8c46917ddcf87a8", + "eae47bf865d932f22a6e59b6fe8d041f220e1fbc", + "9ae38bb94c7b4c0c6dfebbee23d1de4db9b77488", + "678979a45126a76eb629992cd64734862f53a555", + "2f7ba8803604c032cb1a1228bc021f0f1c03e245", + "0204f06422a01787f7379d0edb51104bb023758a", + "1f9a21eba2f2ce87768a5618d9cfefa7e48fb386", + NULL +}; + +static const char *sha1_graphics_8_grayscale[] = +{ + "41728d7ff2bb425b5fc06521adeabf6cc73136f3", + "df35491dd5038187c05bac06921402ba6d7773a8", + "c8cd6d34e011d5f9ca4b1190eec3b416e5e68e53", + "66a686ac22cd0ec326f2c97ef473781cabe9690b", + "9bddef7b97b8b03569f07011e66ddd67fe82d787", + "2a4cea20974bcfb92cf40b05746fc7eb465c4b0f", + "0a87689ca33f888f05dbfa21ddec11c069990d8b", + "8d0a92e6333e1b99591962e2def9bc9121111cf5", + "409c9f29f6fa2e312c8e0b4b3c59acb4d84d8717", + "1fbc234c28a8140965ad0fe30b4b799f6681e864", + "1fc709d5d3e55d5f96c451c209cd73c59dbfe733", + "96b6a32e057d5faeae57086cbb62a8e7b3e6e86f", + "aa66ea7c9b7214339858b9fc9bd4720d05e8c843", + "114bb377b4e78a1978e1ac09388c48861b5223a3", + "8d0a92e6333e1b99591962e2def9bc9121111cf5", + "9dc511d6947fe816185cdff93bf0cfe0349b72b4", + "eb4c14ee66b012187f5fe6a2ec28b6be956567c8", + "216388ddf6b563dd2058a9df65b40b6f72df1715", + "ad11e4b6979cf055e3bf1868112a7bef207385a4", + "47f72be971bd2d3399dabd018201f4f5075e96fe", + "de09d41c9ae4338fbfcfe9f8ed71d343537a6f3d", + "f39ab890a2b99d0c31e6e047f2315244972f5ffd", + "6e7baf7d328bc2c55366e32967a0db4d2f43ab82", + "15b991814d84d6aa252696dd0c6150ef88a8db3f", + "1cb52f2a4d17b9b0d8375d016aa8cf0677fcd29a", + "9a6cfd68523e40ea1d52847d7747da912cfe2ca9", + "82e641ebe47d9f8cc229b82b8315e69e52f812b1", + "15db343049e3a9b31addc5d2ffebc3fe91b39c51", + "a895daf1f20371d4d1c3f93c070124cc13e341c3", + "3ddc872384ed8f9eaef472aa14a1d79a2c3f3b04", + "0000000000000000000000000000000000000000", + "bd7d8c1cb4b2adc31cf8c7d39a4fa1e3ac7f2545", + "33fc8618ce62f5cdd9e06ad61e296f718a99899e", + "dcaa7fe030ae4d3029e38ca584047eeb2d17fe10", + "6d41e6168662e75baacf74d911d7419d54c8d73c", + "2404952157ba1519094a2da6bfbf2b0f1356432d", + "24caede65b40815a60b83c4edfa06bdc542388cd", + "650a51bedd1af92469d2950eb95220db35f95c6e", + "3f43aa11e6fccb747cc13224583fb2f951fee08c", + "04cea9753b575ecce8e55357eddfcec10ddfbbea", + "6b6f4b97f05e015eb37a5f6aff637235feacd030", + "1bd06e4e11929e5e91c3c9f20def639b20e731e8", + "d63a6086547e90d2ba84aaebfeae24f3ba0c04f1", + "85425940daf119125deb52421b2057acebe6d1cf", + "a3db92382cf0a4c7cafe52c27b1f41520aaa677d", + "9869b6f088822fb423996f9968e5a931301fc2c3", + "cdf63ab4ab32c2e8e27527a9588d0fb525f1c945", + "a7f81cf3326fa3608acc13cfce2f573912e9d745", + "f2ea92f523f8918b1d514a2d9555dcb4750273b4", + "e9c16e43a8f589ae85289c5c3ffea6b22fba1806", + "84a4bc0c2c5d36d016da4df95a5d8d6c8ce3ba6f", + "f543efc84e638afbaa456e629100f0274de1a35b", + "1bd2587399006eed0d46beff397d32081f6bc58e", + "f8a571de89ed82ffb9cbc041ce1eacb064be2853", + "640a49455acabca6954a7fbb6af4e872af342d11", + "589e7911e09332ee090371deae17b0120ff990b5", + "a1a941fa270cda48c648553ed4b427e16e96f8e0", + "f30a8d9f73ca043c5bfc18d9595e299fc0a39eec", + "fb63bbb2f944fb63ed2d7399f07b168740c1034b", + "3685c9ae95118a83db3569832c29753276fa1264", + "09640bad951c33e7d70a1fced83b1869f65b3fc5", + "cb9ea8137eca1450e049879772f5c11a0e11ff0a", + "a05e05b2e6e515baa59ea032d063ca11e70a72b5", + "d908c86b7301666a8d7999b831841115a4938181", NULL }; @@ -314,6 +662,28 @@ "ea39ac62ca2f815a1d029340c6465994b6f03cb0", "9a603513cd81acf70cf8b27b0d544e7f672e9d40", "f4a334e69535de74ee5ed54be93a75120a66e54a", + "559fd1d15447745527c61fe43a94c6708bff3e39", + "995f77f2f53398399f09d1365cb4dfd105764e5c", + "61907a6685bba93077da40cfb28cf2ab74552fd2", + "122015e5e17c1c317c6e51c0e207826b606a4077", + "c21851589a5f8a45ea5f9bb3e72f4f88d0a6697d", + "8c609921d4a3ed89a994a75482b27496bf103cf5", + "eb2ce16a6ae251f4965135ee776776b5fc02c42c", + "66493ee117719e172f327a426af601996025f28c", + "acead2745fec0b6c817fa601353bdf2d197b64f7", + "a6b858b2d125c159529d3f3ec45b31925a79acff", + "1f1379089d7c6e8d733aaa4eaffbe02db6255b61", + "d83adc669c0dea0dc4812b93f998514b6f02d805", + "9e8ceb7c3cd68e043b6d875c8c84a1e394962412", + "9e996fc74eeef53f0a6c31aabb2edce6e103f189", + "6b8abd1785304d6531c1e4cc65c1ffcdcb2196a5", + "7d1bfff706b0713e53209407889f83a0da26a81d", + "31e667c2dbb81dcf81d01cb88f794e88ddb90ff2", + "31e667c2dbb81dcf81d01cb88f794e88ddb90ff2", + "465d9cd0a77ab4fcf035aa67544b2a26269e0b09", + "600d6b2713d5e4c0d90c02660245ed26c7ae3033", + "963d1fa8608c8b743e972eb9a4e9f3fc53c6c7e8", + "ba49de83c4668fb08956221f465b93e7dd6a3383", NULL }; @@ -354,6 +724,82 @@ "b672afbeeafb44194a821f0def81a8892872937e", "db0124045882b598feea192186cf7eb7a0387866", "602d91471378fe24a2d0248bd8a92b624f099fea", + "e772873b87a0f55ea51a3da323f64bf8814c6703", + "21aa1ff238a2d78efed1aa658ac8fe21b1e64daa", + "1a579cd280422131c35e907a023ee0e80749b5a4", + "bbf027f506cbb80d359bf4892fcb75f816f2e446", + "ed44bded6b17df7fe92b191fd810d1aafbd55f52", + "a49bcb1ace42d548254d9e96d22088b1fe2e75b4", + "e2a21a965dfd0bd09f9270917f681610efc18ce7", + "3e411b004a5be84451860c6da6a4a1a482b77862", + "3b3d2f18fdc75e938ca43cc2d0b41fa67c1c5d36", + "7811c536a6527112b438a6413f3927f2c79086a7", + "525ef3615040225752a2fe646ab99ee64e360630", + "46760975993f9881b7bbe94123173e6a683d3f25", + "df5feb905a31c288008cf5e82d73ac818a160d82", + "df5feb905a31c288008cf5e82d73ac818a160d82", + "d8af3868c66c7d6dac35ec8ee0317b38a6910bb1", + "ec8e2aebfb4a1c28ebcd0e053b9e4d8638b50951", + "da401c745421f6bdfaefd590ab99dee948dce412", + "38a3b6edcba2a1fba6064f0b4d771aedae7f4673", + NULL +}; + +static const char *sha1_graphics_4_grayscale[] = +{ + "fa867e2976a549ecd3b1fa67df54963232fcef8c", + "6611ea6cb24bcf34c5f3688d57e2874aecb39c24", + "5ab1d3f8f5938c5d20a2fa3237e319077b21e716", + "1c201d149c0bd886ff8a427ad513f15a70991174", + "44646e67842a4d055bea1fad0434e6e4a0eb5465", + "315189097a02024d2eae61d524c4de07a396aee7", + "73ac786015dea36ac466a6524dba757d5d238ece", + "6e328cc4d53627f034b23706d8bf26afe18512ae", + "3c5b90cfeafdc1c99c8c62317d07276fdf66803e", + "95e6f509bb1cf9981efc47a0878ab0bd983eb349", + "2e1bc3b00e4ecc62b03785533dc0faeeda38d53f", + "6448226859cab61a61c95d3ed5ed5f216b1bb120", + "7f1cb06597b14edbea03b860aec3cebc4ebc3d62", + "ec3879342b5a44f6de6efe946243ae5ade00980d", + "6e328cc4d53627f034b23706d8bf26afe18512ae", + "51b50968a3a0570d5ed690fe44ba1a78a4d62ce2", + "d5bab61f78ac3355aa2e0776b2d5d9d71d61e77b", + "fa47c5195405f6a0eefba3e3a60ad463c7ee94c7", + "b2bda683edef912957845a33edc055902a801fed", + "b067f0421cb2c83b218b8ab6edbede2ff5723b57", + "c8de76f9c0900e5f86c7584fe94d5749376b7b49", + "43ee3e187dda14b86aef12371041ae70313b5a65", + "d4930552a7845111ffd9db57260be1ab97967c06", + "afdf41fca7951c6dd6193320de1295f2c68fe52a", + "f2f1f331fe6b1b31d7c9ddd37793b375fc01d3d4", + "f0af0f1edcb837bdf1535c1f5e9988c21ae9bfd1", + "0000000000000000000000000000000000000000", + "71c4577baaf35f12f6707b1e2f78a1e8c0d41d0b", + "9b7d6b12385bb9e1cd881758aff342bd5427432b", + "6fdd5aa022da2a8af6f1d02b6072ebc068b4b600", + "643fab30f1a59dc37f1e0f1a6006076fbf90a5fe", + "6edbc0b95e9ae3348ce7d12c44f9c8082b5f2aa9", + "9c0da52c4ceaa8fdfcff7351328dd520bb57e985", + "f8224430462f6a93f85ef33b8aa7299525990708", + "1cf93cecc942b41ab8fae21ea18418a6d64873e5", + "d58b8760ef01c12e691651c932d683c66fde3654", + "94438c82b8812fe81a69d5d1429c5967cdbfed7a", + "764ea26f10fe11f7bdb538a26fc33d44b3a95d6d", + "94ad53c578f6034dfc5c666e363203cdfb00f2cc", + "8cd7b0ba8426db344b4cb8820890603020ed65e9", + "ad96132f25ca14e1aeb17c86f8d187febf6401c9", + "027b05bc82ce4f897c4bf812610a641547368939", + "3f131e855ba1611d8fb0f16a6979f8f56aacc7f3", + "ae64d1dc52dcfa8c644f953c4601fa2fbefec37b", + "2f3fb1bd8f416198d70e06f6d519571cd5eb4ef4", + "cc96ccaf6b99f60a49b03017515f83cba22b4c40", + "5eeb56afea8040a8fb18c11f29931b836474126d", + "a3405c085fc2f2184bcd0d1edcdcc66927e33659", + "f8681c09f1abfc38d31e47622cb8798cd896a00e", + "b5ee51cfc73acb59a2f6124509ea236f8fc7f9f7", + "d374d4d92c940ae42a9b42c14d744341b68a8c14", + "25ec9fd2eeb1514ba4e0458a444149a5456cf63a", + "2e4dc1e859350289575ffc2a47cd0033efca6c32", NULL }; @@ -409,9 +855,29 @@ "be36cda370650e6d5fb0570aeb8ced491d0c2b1c", "4c34cb8e47f9ff4b4348aa2d40cce7cb54d65cb0", "18f4497e43903e8df5b27da4ceebf62b15550a87", + "3fa3570a2ebd38042b90f24bd3496233bca5a23d", + "2fcd25c2d19a01fa631fd19135d9f28b26b86259", + "655cfadeb157233c804d42b58195569c8846e3c1", + "65c8811c609203fd424f5ed5f92ca2268a1dca54", + "a45b297d709e297584eb0f2985294ec0ab53d8ad", + "0d180c37bc26d83a1a11f66168757f3de2493243", + "b362ba4790def178c236c0ae7b0093dbba47cf24", + "d1d2ecf71a37d9eda58fa09454aa871971428ace", + "6672da4e016b6e9de0ca218f8307cce7d48d62c4", + "ee22f43ea867228c6ff937d39e1826e285a107e8", + "832c3c3afd056e5d1cdfb2f466f27225c4adcc6c", + "a2a928de9007d765da496abec8c21b23601f8c45", + "28ded40e72d4327b9413571476b167fb28a1f420", + "23366004515f3bc46796ea505d748f8d0f97fbe1", + "88763f8e8fcf4f78fa864325791a9dd35a0bd279", + "013cee26bac8f815eadad4bfc012d9b5d01c3b7f", + "6b2cb2346b5820bdd0251cd6a4aeb5c22ee82e85", + "6c4640b17e072efc682044c499e5a4f3481b7c87", NULL }; +static const char *dst_format; + static inline DWORD get_stride(BITMAPINFO *bmi) { return ((bmi->bmiHeader.biBitCount * bmi->bmiHeader.biWidth + 31) >> 3) & ~3; @@ -483,11 +949,11 @@ ok_cond = ok_cond || broken( !strcmp(hash, (*sha1)[i]) ); if(todo) - todo_wine ok( ok_cond, "%d: %s: expected hash %s got %s\n", - bmi->bmiHeader.biBitCount, info, **sha1, hash ); + todo_wine ok( ok_cond, "%s: %s: expected hash %s got %s\n", + dst_format, info, **sha1, hash ); else - ok( ok_cond, "%d: %s: expected hash %s got %s\n", - bmi->bmiHeader.biBitCount, info, **sha1, hash ); + ok( ok_cond, "%s: %s: expected hash %s got %s\n", + dst_format, info, **sha1, hash ); *sha1 += num_broken + 1; @@ -606,21 +1072,50 @@ static const BITMAPINFOHEADER dib_brush_header_4 = {sizeof(BITMAPINFOHEADER), 16, -16, 1, 4, BI_RGB, 0, 0, 0, 0, 0}; static const BITMAPINFOHEADER dib_brush_header_1 = {sizeof(BITMAPINFOHEADER), 16, -16, 1, 1, BI_RGB, 0, 0, 0, 0, 0}; +static const BYTE rle8_data[20] = { 0x03, 0x02, 0x04, 0xf0, 0x00, 0x00, /* 2, 2, 2, f0, f0, f0, f0, */ + 0x00, 0x03, 0x04, 0x05, 0x06, 0x00, /* 4, 5, 6, */ + 0x00, 0x02, 0x01, 0x02, 0x05, 0x80, /* dx=1, dy=2, 80, 80, 80, 80, (80) */ + 0x00, 0x01 }; /* */ + +static const DWORD four_by_four_data[16] = { 0x000000, 0xff0000, 0x00ff00, 0x0000ff, + 0xffffff, 0x00ffff, 0xff00ff, 0xffff00, + 0x000000, 0xff0000, 0x00ff00, 0x0000ff, + 0xffffff, 0x00ffff, 0xff00ff, 0xffff00 }; + +static inline void solid_patblt( HDC hdc, int x, int y, int width, int height, COLORREF color ) +{ + HBRUSH brush = CreateSolidBrush( color ); + brush = SelectObject( hdc, brush ); + PatBlt( hdc, x, y, width, height, PATCOPY ); + DeleteObject( SelectObject( hdc, brush ) ); +} + static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sha1) { DWORD dib_size = get_dib_size(bmi); HPEN solid_pen, dashed_pen, orig_pen; HBRUSH solid_brush, dib_brush, hatch_brush, orig_brush; - INT i, y, hatch_style; + HBITMAP bmp; + INT i, x, y, hatch_style; + HDC src_dc; HRGN hrgn, hrgn2; + BYTE dib_src_buf[sizeof(BITMAPINFO) + 256 * sizeof(RGBQUAD)]; BYTE dib_brush_buf[sizeof(BITMAPINFO) + 256 * sizeof(RGBQUAD) + 16 * 16 * sizeof(DWORD)]; /* Enough for 16 x 16 at 32 bpp */ + BITMAPINFO *src_bi = (BITMAPINFO*)dib_src_buf; BITMAPINFO *brush_bi = (BITMAPINFO*)dib_brush_buf; - BYTE *brush_bits; - BOOL dib_is_1bpp = (bmi->bmiHeader.biBitCount == 1); + RGBQUAD *brush_colors = brush_bi->bmiColors; + BYTE *brush_bits, *src_bits; + BOOL ret, dib_is_1bpp = (bmi->bmiHeader.biBitCount == 1); + BOOL dib_is_8bpp_gray = (bmi->bmiHeader.biBitCount == 8 && bmi->bmiColors[1].rgbRed == 1); + BLENDFUNCTION blend; + + blend.BlendOp = AC_SRC_OVER; + blend.BlendFlags = 0; memset(bits, 0xcc, dib_size); compare_hash(bmi, bits, sha1, "empty"); + src_dc = CreateCompatibleDC( 0 ); solid_pen = CreatePen(PS_SOLID, 1, RGB(0, 0, 0xff)); orig_pen = SelectObject(hdc, solid_pen); SetBrushOrgEx(hdc, 0, 0, NULL); @@ -668,8 +1163,6 @@ for(i = 0, y = 10; i < 256; i++) { - BOOL ret; - ret = PatBlt(hdc, 10, y, 100, 10, rop3[i]); if(rop_uses_src(rop3[i])) @@ -804,8 +1297,6 @@ for(i = 0, y = 10; i < 256; i++) { - BOOL ret; - if(!rop_uses_src(rop3[i])) { ret = PatBlt(hdc, 10 + i, y, 100, 20, rop3[i]); @@ -813,7 +1304,10 @@ y += 25; } } - compare_hash_broken_todo(bmi, bits, sha1, "top-down 8888 dib brush patblt", dib_is_1bpp ? 2 : 0, dib_is_1bpp); + if (bmi->bmiHeader.biBitCount == 8 && bmi->bmiHeader.biClrUsed == 256) /* 8-bpp grayscale broken on NT4 */ + compare_hash_broken_todo(bmi, bits, sha1, "top-down 8888 dib brush patblt", 1, FALSE); + else + compare_hash_broken_todo(bmi, bits, sha1, "top-down 8888 dib brush patblt", dib_is_1bpp ? 2 : 0, dib_is_1bpp); memset(bits, 0xcc, dib_size); SelectObject(hdc, orig_brush); @@ -834,8 +1328,6 @@ for(i = 0, y = 10; i < 256; i++) { - BOOL ret; - if(!rop_uses_src(rop3[i])) { ret = PatBlt(hdc, 10 + i, y, 100, 20, rop3[i]); @@ -843,7 +1335,10 @@ y += 25; } } - compare_hash_broken_todo(bmi, bits, sha1, "bottom-up 8888 dib brush patblt", dib_is_1bpp ? 2 : 0, dib_is_1bpp); + if (bmi->bmiHeader.biBitCount == 8 && bmi->bmiHeader.biClrUsed == 256) /* 8-bpp grayscale broken on NT4 */ + compare_hash_broken_todo(bmi, bits, sha1, "bottom-up 8888 dib brush patblt", 1, FALSE); + else + compare_hash_broken_todo(bmi, bits, sha1, "bottom-up 8888 dib brush patblt", dib_is_1bpp ? 2 : 0, dib_is_1bpp); memset(bits, 0xcc, dib_size); SelectObject(hdc, orig_brush); @@ -864,8 +1359,6 @@ for(i = 0, y = 10; i < 256; i++) { - BOOL ret; - if(!rop_uses_src(rop3[i])) { ret = PatBlt(hdc, 10 + i, y, 100, 20, rop3[i]); @@ -873,7 +1366,10 @@ y += 25; } } - compare_hash_broken_todo(bmi, bits, sha1, "top-down 24 bpp brush patblt", dib_is_1bpp ? 2 : 0, dib_is_1bpp); + if (bmi->bmiHeader.biBitCount == 8 && bmi->bmiHeader.biClrUsed == 256) /* 8-bpp grayscale broken on NT4 */ + compare_hash_broken_todo(bmi, bits, sha1, "top-down 24 bpp brush patblt", 1, FALSE); + else + compare_hash_broken_todo(bmi, bits, sha1, "top-down 24 bpp brush patblt", dib_is_1bpp ? 2 : 0, dib_is_1bpp); memset(bits, 0xcc, dib_size); SelectObject(hdc, orig_brush); @@ -894,8 +1390,6 @@ for(i = 0, y = 10; i < 256; i++) { - BOOL ret; - if(!rop_uses_src(rop3[i])) { ret = PatBlt(hdc, 10 + i, y, 100, 20, rop3[i]); @@ -903,7 +1397,10 @@ y += 25; } } - compare_hash_broken_todo(bmi, bits, sha1, "top-down 555 dib brush patblt", dib_is_1bpp ? 1 : 0, dib_is_1bpp); + if (bmi->bmiHeader.biBitCount == 8 && bmi->bmiHeader.biClrUsed == 256) /* 8-bpp grayscale broken on NT4 */ + compare_hash_broken_todo(bmi, bits, sha1, "top-down 555 dib brush patblt", 1, FALSE); + else + compare_hash_broken_todo(bmi, bits, sha1, "top-down 555 dib brush patblt", dib_is_1bpp ? 1 : 0, dib_is_1bpp); memset(bits, 0xcc, dib_size); SelectObject(hdc, orig_brush); @@ -915,11 +1412,11 @@ brush_bi->bmiHeader = dib_brush_header_8; brush_bi->bmiHeader.biClrUsed = 3; - memset(brush_bi->bmiColors, 0, brush_bi->bmiHeader.biClrUsed * sizeof(RGBQUAD)); - brush_bi->bmiColors[0].rgbRed = 0xff; - brush_bi->bmiColors[1].rgbRed = 0xff; - brush_bi->bmiColors[1].rgbGreen = 0xff; - brush_bi->bmiColors[1].rgbBlue = 0xff; + memset(brush_colors, 0, brush_bi->bmiHeader.biClrUsed * sizeof(RGBQUAD)); + brush_colors[0].rgbRed = 0xff; + brush_colors[1].rgbRed = 0xff; + brush_colors[1].rgbGreen = 0xff; + brush_colors[1].rgbBlue = 0xff; brush_bits = (BYTE*)brush_bi + sizeof(BITMAPINFOHEADER) + brush_bi->bmiHeader.biClrUsed * sizeof(RGBQUAD); memset(brush_bits, 0, 16 * 16 * sizeof(BYTE)); @@ -934,8 +1431,6 @@ for(i = 0, y = 10; i < 256; i++) { - BOOL ret; - if(!rop_uses_src(rop3[i])) { ret = PatBlt(hdc, 10 + i, y, 100, 20, rop3[i]); @@ -959,8 +1454,6 @@ for(i = 0, y = 10; i < 256; i++) { - BOOL ret; - if(!rop_uses_src(rop3[i])) { ret = PatBlt(hdc, 10 + i, y, 100, 20, rop3[i]); @@ -987,8 +1480,6 @@ SelectObject(hdc, dib_brush); for(i = 0, y = 10; i < 256; i++) { - BOOL ret; - if(!rop_uses_src(rop3[i])) { ret = PatBlt(hdc, 10 + i, y, 100, 20, rop3[i]); @@ -1050,8 +1541,6 @@ for(i = 0, y = 10; i < 256; i++) { - BOOL ret; - if(!rop_uses_src(rop3[i])) { for(hatch_style = HS_HORIZONTAL; hatch_style <= HS_DIAGCROSS; hatch_style++) @@ -1147,6 +1636,382 @@ compare_hash(bmi, bits, sha1, "overlapping BitBlt PATPAINT -x, +y" ); memset(bits, 0xcc, dib_size); + /* blitting with 32-bpp BI_RGB source */ + + memset( dib_src_buf, 0, sizeof(dib_src_buf) ); + src_bi->bmiHeader.biSize = sizeof(bmi->bmiHeader); + src_bi->bmiHeader.biHeight = 256; + src_bi->bmiHeader.biWidth = 256; + src_bi->bmiHeader.biBitCount = 32; + src_bi->bmiHeader.biPlanes = 1; + src_bi->bmiHeader.biCompression = BI_RGB; + bmp = CreateDIBSection(0, src_bi, DIB_RGB_COLORS, (void**)&src_bits, NULL, 0); + SelectObject( src_dc, bmp ); + for (y = 0; y < 256; y++) + for (x = 0; x < 256; x++) + { + BYTE a = (x + y) * 2; + BYTE r = (BYTE)(y + 2 * x) * a / 255; + BYTE g = (BYTE)(x + y / 3) * a / 255; + BYTE b = (BYTE)(x / 3 + 2 * y) * a / 255; + ((DWORD *)src_bits)[y * 256 + x] = (a << 24) | RGB( r, g, b ); + } + + BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY ); + if (bmi->bmiHeader.biBitCount == 8) /* broken on NT4 */ + compare_hash_broken_todo(bmi, bits, sha1, "BitBlt src 32-bpp SRCCOPY", 1, FALSE ); + else + compare_hash(bmi, bits, sha1, "BitBlt src 32-bpp SRCCOPY" ); + memset(bits, 0xcc, dib_size); + + blend.SourceConstantAlpha = 0xd0; + blend.AlphaFormat = 0; + if (pGdiAlphaBlend) pGdiAlphaBlend( hdc, 100, 100, 256, 256, src_dc, 0, 0, 256, 256, blend ); + if (bmi->bmiHeader.biBitCount == 16 && bmi->bmiHeader.biCompression == BI_RGB) /* 555 broken on w2k */ + { + if (!pGdiAlphaBlend) (*sha1) += 2; + else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 32-bpp no alpha", 1, FALSE ); + } + else + { + if (!pGdiAlphaBlend) (*sha1)++; + else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 32-bpp no alpha", 0, dib_is_1bpp ); + } + memset(bits, 0xcc, dib_size); + + blend.SourceConstantAlpha = 0xb0; + blend.AlphaFormat = AC_SRC_ALPHA; + if (pGdiAlphaBlend) pGdiAlphaBlend( hdc, 50, 50, 256, 256, src_dc, 0, 0, 256, 256, blend ); + if (bmi->bmiHeader.biBitCount == 16 && bmi->bmiHeader.biCompression == BI_RGB) /* 555 broken on w2k */ + { + if (!pGdiAlphaBlend) (*sha1) += 2; + else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 32-bpp alpha", 1, FALSE ); + } + else + { + if (!pGdiAlphaBlend) (*sha1)++; + else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 32-bpp alpha", 0, dib_is_1bpp ); + } + memset(bits, 0xcc, dib_size); + + /* blitting with 32-bpp r10g10b10 source */ + + src_bi->bmiHeader.biBitCount = 32; + src_bi->bmiHeader.biCompression = BI_BITFIELDS; + ((DWORD *)src_bi->bmiColors)[0] = 0x3ff00000; + ((DWORD *)src_bi->bmiColors)[1] = 0x000ffc00; + ((DWORD *)src_bi->bmiColors)[2] = 0x000003ff; + bmp = CreateDIBSection(0, src_bi, DIB_RGB_COLORS, (void**)&src_bits, NULL, 0); + SelectObject( src_dc, bmp ); + for (y = 0; y < 256; y++) + for (x = 0; x < 256; x++) + { + WORD r = (7 * x + 3 * y) % 1024; + WORD g = (11 * x + y / 3) % 1024; + WORD b = (x / 3 + 9 * y) % 1024; + ((DWORD *)src_bits)[y * 256 + x] = r << 20 | g << 10 | b; + } + + BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY ); + if (bmi->bmiHeader.biBitCount == 8) /* broken on NT4 */ + compare_hash_broken_todo(bmi, bits, sha1, "BitBlt src 32-bpp r10g10b10 SRCCOPY", 1, FALSE ); + else + compare_hash(bmi, bits, sha1, "BitBlt src 32-bpp r10g10b10 SRCCOPY" ); + memset(bits, 0xcc, dib_size); + + /* blitting with 32-bpp b6g6r6 source */ + + src_bi->bmiHeader.biBitCount = 32; + src_bi->bmiHeader.biCompression = BI_BITFIELDS; + ((DWORD *)src_bi->bmiColors)[0] = 0x00003f; + ((DWORD *)src_bi->bmiColors)[1] = 0x000fc0; + ((DWORD *)src_bi->bmiColors)[2] = 0x03f000; + bmp = CreateDIBSection(0, src_bi, DIB_RGB_COLORS, (void**)&src_bits, NULL, 0); + SelectObject( src_dc, bmp ); + for (y = 0; y < 256; y++) + for (x = 0; x < 256; x++) + { + BYTE r = (y + 2 * x) % 64; + BYTE g = (x + y / 3) % 64; + BYTE b = (x / 3 + 2 * y) % 64; + ((DWORD *)src_bits)[y * 256 + x] = r | g << 6 | b << 12; + } + + BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY ); + if (bmi->bmiHeader.biBitCount == 8) /* broken on NT4 */ + compare_hash_broken_todo(bmi, bits, sha1, "BitBlt src 32-bpp b6g6r6 SRCCOPY", 1, FALSE ); + else + compare_hash(bmi, bits, sha1, "BitBlt src 32-bpp b6g6r6 SRCCOPY" ); + memset(bits, 0xcc, dib_size); + + /* blitting with 24-bpp source */ + + src_bi->bmiHeader.biBitCount = 24; + src_bi->bmiHeader.biCompression = BI_RGB; + bmp = CreateDIBSection(0, src_bi, DIB_RGB_COLORS, (void**)&src_bits, NULL, 0); + DeleteObject( SelectObject( src_dc, bmp ) ); + for (y = 0; y < 256; y++) + for (x = 0; x < 256; x++) + { + src_bits[(y * 256 + x) * 3 + 0] = x + 3 * y; + src_bits[(y * 256 + x) * 3 + 1] = 2 * x + 7 * y; + src_bits[(y * 256 + x) * 3 + 2] = 5 * x + 12 * y; + } + + BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY ); + if (bmi->bmiHeader.biBitCount == 8) /* broken on NT4 */ + compare_hash_broken_todo(bmi, bits, sha1, "BitBlt src 24-bpp SRCCOPY", 1, FALSE ); + else + compare_hash(bmi, bits, sha1, "BitBlt src 24-bpp SRCCOPY" ); + memset(bits, 0xcc, dib_size); + + blend.SourceConstantAlpha = 0xe0; + blend.AlphaFormat = 0; + if (pGdiAlphaBlend) pGdiAlphaBlend( hdc, 100, 100, 256, 256, src_dc, 0, 0, 256, 256, blend ); + if (bmi->bmiHeader.biBitCount == 16 && bmi->bmiHeader.biCompression == BI_RGB) /* 555 broken on w2k */ + { + if (!pGdiAlphaBlend) (*sha1) += 2; + else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 24-bpp", 1, FALSE ); + } + else + { + if (!pGdiAlphaBlend) (*sha1)++; + else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 24-bpp", 0, dib_is_1bpp ); + } + memset(bits, 0xcc, dib_size); + + /* blitting with 16-bpp BI_RGB source */ + + src_bi->bmiHeader.biBitCount = 16; + src_bi->bmiHeader.biCompression = BI_RGB; + bmp = CreateDIBSection(0, src_bi, DIB_RGB_COLORS, (void**)&src_bits, NULL, 0); + DeleteObject( SelectObject( src_dc, bmp ) ); + for (y = 0; y < 256; y++) + for (x = 0; x < 256; x++) + ((WORD *)src_bits)[y * 256 + x] = x | x << 4 | x << 8 | y << 3 | y << 7; + + BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY ); + if (bmi->bmiHeader.biBitCount == 8 && bmi->bmiHeader.biClrUsed > 5) /* broken on NT4 */ + compare_hash_broken_todo(bmi, bits, sha1, "BitBlt src 16-bpp SRCCOPY", 1, FALSE ); + else + compare_hash(bmi, bits, sha1, "BitBlt src 16-bpp SRCCOPY" ); + memset(bits, 0xcc, dib_size); + + /* blitting with 16-bpp b4g4r4 source */ + + src_bi->bmiHeader.biBitCount = 16; + src_bi->bmiHeader.biCompression = BI_BITFIELDS; + ((DWORD *)src_bi->bmiColors)[0] = 0x00000f; + ((DWORD *)src_bi->bmiColors)[1] = 0x0000f0; + ((DWORD *)src_bi->bmiColors)[2] = 0x000f00; + bmp = CreateDIBSection(0, src_bi, DIB_RGB_COLORS, (void**)&src_bits, NULL, 0); + DeleteObject( SelectObject( src_dc, bmp ) ); + for (y = 0; y < 256; y++) + for (x = 0; x < 256; x++) + ((WORD *)src_bits)[y * 256 + x] = x | x << 4 | x << 8 | y << 3 | y << 7; + + BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY ); + if (bmi->bmiHeader.biBitCount == 8 && bmi->bmiHeader.biClrUsed > 5) /* broken on NT4 */ + compare_hash_broken_todo(bmi, bits, sha1, "BitBlt src 16-bpp b4g4r4 SRCCOPY", 1, FALSE ); + else + compare_hash(bmi, bits, sha1, "BitBlt src 16-bpp b4g4r4 SRCCOPY" ); + memset(bits, 0xcc, dib_size); + + /* blitting with 8-bpp source */ + + src_bi->bmiHeader.biBitCount = 8; + src_bi->bmiHeader.biCompression = BI_RGB; + src_bi->bmiHeader.biClrUsed = 160; + for (i = 0; i < 256; i++) ((DWORD *)src_bi->bmiColors)[i] = i | (i * 3) << 8 | (i / 2) << 16; + bmp = CreateDIBSection(0, src_bi, DIB_RGB_COLORS, (void**)&src_bits, NULL, 0); + DeleteObject( SelectObject( src_dc, bmp ) ); + for (y = 0; y < 256; y++) + for (x = 0; x < 256; x++) + src_bits[y * 256 + x] = 3 * x + 5 * y; + + BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY ); + compare_hash(bmi, bits, sha1, "BitBlt src 8-bpp SRCCOPY" ); + memset(bits, 0xcc, dib_size); + + blend.SourceConstantAlpha = 0xd0; + blend.AlphaFormat = 0; + if (pGdiAlphaBlend) pGdiAlphaBlend( hdc, 100, 100, 256, 256, src_dc, 0, 0, 256, 256, blend ); + if (bmi->bmiHeader.biBitCount == 16 && bmi->bmiHeader.biCompression == BI_RGB) /* 555 broken on w2k */ + { + if (!pGdiAlphaBlend) (*sha1) += 2; + else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 8-bpp", 1, FALSE ); + } + else + { + if (!pGdiAlphaBlend) (*sha1)++; + else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 8-bpp", 0, dib_is_1bpp ); + } + memset(bits, 0xcc, dib_size); + + /* blitting with 4-bpp source */ + + src_bi->bmiHeader.biBitCount = 4; + src_bi->bmiHeader.biClrUsed = 12; + for (i = 0; i < 16; i++) ((DWORD *)src_bi->bmiColors)[i] = i | (i * 5) << 8 | (i * 19) << 16; + bmp = CreateDIBSection(0, src_bi, DIB_RGB_COLORS, (void**)&src_bits, NULL, 0); + DeleteObject( SelectObject( src_dc, bmp ) ); + for (y = 0; y < 256; y++) + for (x = 0; x < 256; x += 2) + src_bits[(y * 256 + x) / 2] = 7 * x + 3 * y; + + BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY ); + compare_hash(bmi, bits, sha1, "BitBlt src 4-bpp SRCCOPY" ); + memset(bits, 0xcc, dib_size); + + /* blitting with 1-bpp source */ + + src_bi->bmiHeader.biBitCount = 1; + src_bi->bmiHeader.biClrUsed = 0; + for (i = 0; i < 2; i++) ((DWORD *)src_bi->bmiColors)[i] = (i + 37) | (i * 91) << 8 | (i * 53) << 16; + bmp = CreateDIBSection(0, src_bi, DIB_RGB_COLORS, (void**)&src_bits, NULL, 0); + DeleteObject( SelectObject( src_dc, bmp ) ); + for (y = 0; y < 256; y++) + for (x = 0; x < 256; x += 8) + src_bits[(y * 256 + x) / 8] = 7 * x + 3 * y; + + BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY ); + compare_hash(bmi, bits, sha1, "BitBlt src 1-bpp SRCCOPY" ); + memset(bits, 0xcc, dib_size); + + blend.SourceConstantAlpha = 0x90; + blend.AlphaFormat = 0; + if (pGdiAlphaBlend) pGdiAlphaBlend( hdc, 100, 100, 256, 256, src_dc, 0, 0, 256, 256, blend ); + if (bmi->bmiHeader.biBitCount == 16 && bmi->bmiHeader.biCompression == BI_RGB) /* 555 broken on w2k */ + { + if (!pGdiAlphaBlend) (*sha1) += 2; + else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 1-bpp", 1, FALSE ); + } + else + { + if (!pGdiAlphaBlend) (*sha1)++; + else compare_hash(bmi, bits, sha1, "AlphaBlend src 1-bpp" ); + } + memset(bits, 0xcc, dib_size); + + DeleteDC( src_dc ); + DeleteObject( bmp ); + + /* RLE StretchDIBits */ + src_bi->bmiHeader.biSize = sizeof(src_bi->bmiHeader); + src_bi->bmiHeader.biWidth = 8; + src_bi->bmiHeader.biHeight = 8; + src_bi->bmiHeader.biPlanes = 1; + src_bi->bmiHeader.biBitCount = 8; + src_bi->bmiHeader.biCompression = BI_RLE8; + src_bi->bmiHeader.biClrUsed = 0; + src_bi->bmiHeader.biSizeImage = sizeof(rle8_data); + + for (i = 0; i < 256; i++) + { + src_bi->bmiColors[i].rgbRed = i; + src_bi->bmiColors[i].rgbGreen = i; + src_bi->bmiColors[i].rgbBlue = i; + src_bi->bmiColors[i].rgbReserved = 0; + } + + StretchDIBits( hdc, 10, 10, 7, 7, 0, 0, 7, 7, rle8_data, src_bi, DIB_RGB_COLORS, SRCCOPY ); + StretchDIBits( hdc, 100, 10, 7, 7, 0, 0, 7, 7, rle8_data, src_bi, DIB_RGB_COLORS, SRCAND ); + StretchDIBits( hdc, 200, 10, 7, 7, 0, 1, 7, 7, rle8_data, src_bi, DIB_RGB_COLORS, SRCCOPY ); + StretchDIBits( hdc, 300, 10, 7, 7, 1, 0, 7, 7, rle8_data, src_bi, DIB_RGB_COLORS, SRCCOPY ); + StretchDIBits( hdc, 400, 10, 16, 16, 0, 0, 8, 8, rle8_data, src_bi, DIB_RGB_COLORS, SRCCOPY ); + compare_hash_broken_todo( bmi, bits, sha1, "rle stretchdibits", 0, dib_is_1bpp ); + memset(bits, 0xcc, dib_size); + + /* 32 bpp StretchDIBits */ + + src_bi->bmiHeader.biWidth = 4; + src_bi->bmiHeader.biHeight = 4; + src_bi->bmiHeader.biPlanes = 1; + src_bi->bmiHeader.biBitCount = 32; + src_bi->bmiHeader.biCompression = BI_RGB; + src_bi->bmiHeader.biClrUsed = 0; + src_bi->bmiHeader.biSizeImage = 0; + + ret = StretchDIBits( hdc, 10, 10, 4, 4, 0, 0, 4, 4, four_by_four_data, src_bi, DIB_RGB_COLORS, SRCCOPY ); + ok(ret == 4, "got %d\n", ret); + ret = StretchDIBits( hdc, 20, 10, 4, 4, 0, 0, 4, 4, four_by_four_data, src_bi, DIB_RGB_COLORS, SRCAND ); + ok(ret == 4, "got %d\n", ret); + ret = StretchDIBits( hdc, 30, 10, 3, 3, 1, 1, 3, 3, four_by_four_data, src_bi, DIB_RGB_COLORS, SRCCOPY ); + ok(ret == 4, "got %d\n", ret); + ret = StretchDIBits( hdc, 40, 10, 3, 3, 1, 1, 3, 3, four_by_four_data, src_bi, DIB_RGB_COLORS, SRCAND ); + ok(ret == 4, "got %d\n", ret); + ret = StretchDIBits( hdc, 50, 10, -2, -2, 2, 3, -2, -2, four_by_four_data, src_bi, DIB_RGB_COLORS, SRCCOPY ); + ok(ret == 4, "got %d\n", ret); + ret = StretchDIBits( hdc, 60, 10, -2, -2, 2, 3, -2, -2, four_by_four_data, src_bi, DIB_RGB_COLORS, SRCAND ); + ok(ret == 4, "got %d\n", ret); + + src_bi->bmiHeader.biHeight = -4; + + ret = StretchDIBits( hdc, 10, 100, 4, 4, 0, 0, 4, 4, four_by_four_data, src_bi, DIB_RGB_COLORS, SRCCOPY ); + ok(ret == 4, "got %d\n", ret); + ret = StretchDIBits( hdc, 20, 100, 4, 4, 0, 0, 4, 4, four_by_four_data, src_bi, DIB_RGB_COLORS, SRCAND ); + ok(ret == -4, "got %d\n", ret); + ret = StretchDIBits( hdc, 30, 100, 3, 3, 1, 1, 3, 3, four_by_four_data, src_bi, DIB_RGB_COLORS, SRCCOPY ); + ok(ret == 4, "got %d\n", ret); + ret = StretchDIBits( hdc, 40, 100, 3, 3, 1, 1, 3, 3, four_by_four_data, src_bi, DIB_RGB_COLORS, SRCAND ); + ok(ret == -4, "got %d\n", ret); + ret = StretchDIBits( hdc, 50, 100, -2, -2, 2, 3, -2, -2, four_by_four_data, src_bi, DIB_RGB_COLORS, SRCCOPY ); + ok(ret == 4, "got %d\n", ret); + ret = StretchDIBits( hdc, 60, 100, -2, -2, 2, 3, -2, -2, four_by_four_data, src_bi, DIB_RGB_COLORS, SRCAND ); + ok(ret == -4, "got %d\n", ret); + + compare_hash_broken_todo( bmi, bits, sha1, "stretchdibits", dib_is_8bpp_gray ? 1 : 0, dib_is_8bpp_gray ); + memset(bits, 0xcc, dib_size); + + /* Solid colors */ + for (i = 0; i < 256; i++) + { + solid_patblt( hdc, i * 2, 10, 1, 1, DIBINDEX(i) ); + solid_patblt( hdc, i * 2, 20, 1, 1, PALETTEINDEX(i) ); + solid_patblt( hdc, i * 2, 30, 1, 1, RGB( (i & 0x07) << 5, (i & 0x38) << 2, i & 0xc0 ) ); + solid_patblt( hdc, i * 2, 40, 1, 1, PALETTERGB( (i & 0x07) << 5, (i & 0x38) << 2, i & 0xc0 ) ); + } + + /* A few extra colors that are interesting in the 1bpp case */ + + /* bk color */ + solid_patblt( hdc, 0, 50, 1, 1, RGB( 0, 0xff, 0 ) ); + solid_patblt( hdc, 2, 50, 1, 1, PALETTERGB( 0, 0xff, 0 ) ); + + /* color 0 */ + solid_patblt( hdc, 4, 50, 1, 1, RGB( 0, 0x1, 0xff ) ); + solid_patblt( hdc, 6, 50, 1, 1, PALETTERGB( 0, 0x1, 0xff ) ); + + /* color 1 */ + solid_patblt( hdc, 8, 50, 1, 1, RGB( 0xff, 0, 0 ) ); + solid_patblt( hdc, 10, 50, 1, 1, PALETTERGB( 0xff, 0, 0 ) ); + + compare_hash(bmi, bits, sha1, "Colors"); + memset(bits, 0xcc, dib_size); + + for (i = 0; i < 256; i++) + { + COLORREF s, g; + s = SetPixel( hdc, i * 2, 10, DIBINDEX(i) ); + g = GetPixel( hdc, i * 2, 10 ); + ok( s == g, "got %08x and %08x\n", s, g ); + + s = SetPixel( hdc, i * 2, 20, PALETTEINDEX(i) ); + g = GetPixel( hdc, i * 2, 20 ); + ok( s == g, "got %08x and %08x\n", s, g ); + + s = SetPixel( hdc, i * 2, 30, RGB( (i & 0x07) << 5, (i & 0x38) << 2, i & 0xc0 ) ); + g = GetPixel( hdc, i * 2, 30 ); + ok( s == g, "got %08x and %08x\n", s, g ); + + s = SetPixel( hdc, i * 2, 40, PALETTERGB( (i & 0x07) << 5, (i & 0x38) << 2, i & 0xc0 ) ); + g = GetPixel( hdc, i * 2, 40 ); + ok( s == g, "got %08x and %08x\n", s, g ); + } + + compare_hash(bmi, bits, sha1, "SetPixel"); + memset(bits, 0xcc, dib_size); + SelectObject(hdc, orig_brush); SelectObject(hdc, orig_pen); DeleteObject(hrgn); @@ -1160,12 +2025,14 @@ { char bmibuf[sizeof(BITMAPINFO) + 256 * sizeof(RGBQUAD)]; BITMAPINFO *bmi = (BITMAPINFO *)bmibuf; + RGBQUAD *colors = bmi->bmiColors; DWORD *bit_fields = (DWORD*)(bmibuf + sizeof(BITMAPINFOHEADER)); HDC mem_dc; BYTE *bits; HBITMAP dib, orig_bm; const char **sha1; DIBSECTION ds; + int i; mem_dc = CreateCompatibleDC(NULL); @@ -1191,6 +2058,7 @@ orig_bm = SelectObject(mem_dc, dib); + dst_format = "8888"; sha1 = sha1_graphics_a8r8g8b8; draw_graphics(mem_dc, bmi, bits, &sha1); @@ -1215,14 +2083,15 @@ orig_bm = SelectObject(mem_dc, dib); + dst_format = "8888 - bitfields"; sha1 = sha1_graphics_a8r8g8b8; draw_graphics(mem_dc, bmi, bits, &sha1); SelectObject(mem_dc, orig_bm); DeleteObject(dib); - /* a8b8g8r8 - bitfields. */ - trace("a8b8g8r8 - bitfields\n"); + /* a8b8g8r8. */ + trace("a8b8g8r8\n"); bmi->bmiHeader.biBitCount = 32; bmi->bmiHeader.biCompression = BI_BITFIELDS; bit_fields[0] = 0x0000ff; @@ -1239,12 +2108,63 @@ orig_bm = SelectObject(mem_dc, dib); + dst_format = "a8b8g8r8"; sha1 = sha1_graphics_a8b8g8r8; draw_graphics(mem_dc, bmi, bits, &sha1); SelectObject(mem_dc, orig_bm); DeleteObject(dib); + /* r10g10b10. */ + trace("r10g10b10\n"); + bmi->bmiHeader.biBitCount = 32; + bmi->bmiHeader.biCompression = BI_BITFIELDS; + bit_fields[0] = 0x3ff00000; + bit_fields[1] = 0x000ffc00; + bit_fields[2] = 0x000003ff; + + dib = CreateDIBSection(mem_dc, bmi, DIB_RGB_COLORS, (void**)&bits, NULL, 0); + ok(dib != NULL, "ret NULL\n"); + ok(GetObjectW( dib, sizeof(ds), &ds ), "GetObject failed\n"); + ok(ds.dsBitfields[0] == 0x3ff00000, "got %08x\n", ds.dsBitfields[0]); + ok(ds.dsBitfields[1] == 0x000ffc00, "got %08x\n", ds.dsBitfields[1]); + ok(ds.dsBitfields[2] == 0x000003ff, "got %08x\n", ds.dsBitfields[2]); + ok(ds.dsBmih.biCompression == BI_BITFIELDS, "got %x\n", ds.dsBmih.biCompression); + + orig_bm = SelectObject(mem_dc, dib); + + dst_format = "r10g10b10"; + sha1 = sha1_graphics_r10g10b10; + draw_graphics(mem_dc, bmi, bits, &sha1); + + SelectObject(mem_dc, orig_bm); + DeleteObject(dib); + + /* r6g6b6. */ + trace("r6g6b6\n"); + bmi->bmiHeader.biBitCount = 32; + bmi->bmiHeader.biCompression = BI_BITFIELDS; + bit_fields[0] = 0x0003f000; + bit_fields[1] = 0x00000fc0; + bit_fields[2] = 0x0000003f; + + dib = CreateDIBSection(mem_dc, bmi, DIB_RGB_COLORS, (void**)&bits, NULL, 0); + ok(dib != NULL, "ret NULL\n"); + ok(GetObjectW( dib, sizeof(ds), &ds ), "GetObject failed\n"); + ok(ds.dsBitfields[0] == 0x0003f000, "got %08x\n", ds.dsBitfields[0]); + ok(ds.dsBitfields[1] == 0x00000fc0, "got %08x\n", ds.dsBitfields[1]); + ok(ds.dsBitfields[2] == 0x0000003f, "got %08x\n", ds.dsBitfields[2]); + ok(ds.dsBmih.biCompression == BI_BITFIELDS, "got %x\n", ds.dsBmih.biCompression); + + orig_bm = SelectObject(mem_dc, dib); + + dst_format = "r6g6b6"; + sha1 = sha1_graphics_r6g6b6; + draw_graphics(mem_dc, bmi, bits, &sha1); + + SelectObject(mem_dc, orig_bm); + DeleteObject(dib); + /* 24 */ trace("24\n"); bmi->bmiHeader.biBitCount = 24; @@ -1254,6 +2174,7 @@ ok(dib != NULL, "ret NULL\n"); orig_bm = SelectObject(mem_dc, dib); + dst_format = "24"; sha1 = sha1_graphics_24; draw_graphics(mem_dc, bmi, bits, &sha1); @@ -1275,6 +2196,7 @@ orig_bm = SelectObject(mem_dc, dib); + dst_format = "r5g5b5"; sha1 = sha1_graphics_r5g5b5; draw_graphics(mem_dc, bmi, bits, &sha1); @@ -1298,38 +2220,82 @@ orig_bm = SelectObject(mem_dc, dib); + dst_format = "r4g4b4"; sha1 = sha1_graphics_r4g4b4; draw_graphics(mem_dc, bmi, bits, &sha1); SelectObject(mem_dc, orig_bm); DeleteObject(dib); + /* 8 color */ + trace("8 color\n"); + bmi->bmiHeader.biBitCount = 8; + bmi->bmiHeader.biCompression = BI_RGB; + bmi->bmiHeader.biClrUsed = 236; + for (i = 0; i < 236; i++) + { + colors[i].rgbRed = (i & 0x07) << 5; + colors[i].rgbGreen = (i & 0x38) << 2; + colors[i].rgbBlue = i & 0xc0; + } + dib = CreateDIBSection(0, bmi, DIB_RGB_COLORS, (void**)&bits, NULL, 0); + ok(dib != NULL, "ret NULL\n"); + + orig_bm = SelectObject(mem_dc, dib); + + dst_format = "8 color"; + sha1 = sha1_graphics_8_color; + draw_graphics(mem_dc, bmi, bits, &sha1); + + SelectObject(mem_dc, orig_bm); + DeleteObject(dib); + + /* 8 grayscale */ + trace("8 grayscale\n"); + bmi->bmiHeader.biBitCount = 8; + bmi->bmiHeader.biCompression = BI_RGB; + bmi->bmiHeader.biClrUsed = 256; + for (i = 0; i < 256; i++) colors[i].rgbRed = colors[i].rgbGreen = colors[i].rgbBlue = i; + + dib = CreateDIBSection(0, bmi, DIB_RGB_COLORS, (void**)&bits, NULL, 0); + ok(dib != NULL, "ret NULL\n"); + + orig_bm = SelectObject(mem_dc, dib); + + dst_format = "8 grayscale"; + sha1 = sha1_graphics_8_grayscale; + draw_graphics(mem_dc, bmi, bits, &sha1); + + SelectObject(mem_dc, orig_bm); + DeleteObject(dib); + /* 8 */ trace("8\n"); bmi->bmiHeader.biBitCount = 8; bmi->bmiHeader.biCompression = BI_RGB; bmi->bmiHeader.biClrUsed = 5; - bmi->bmiColors[0].rgbRed = 0xff; - bmi->bmiColors[0].rgbGreen = 0xff; - bmi->bmiColors[0].rgbBlue = 0xff; - bmi->bmiColors[1].rgbRed = 0; - bmi->bmiColors[1].rgbGreen = 0; - bmi->bmiColors[1].rgbBlue = 0; - bmi->bmiColors[2].rgbRed = 0xff; - bmi->bmiColors[2].rgbGreen = 0; - bmi->bmiColors[2].rgbBlue = 0; - bmi->bmiColors[3].rgbRed = 0; - bmi->bmiColors[3].rgbGreen = 0xff; - bmi->bmiColors[3].rgbBlue = 0; - bmi->bmiColors[4].rgbRed = 0; - bmi->bmiColors[4].rgbGreen = 0; - bmi->bmiColors[4].rgbBlue = 0xff; + colors[0].rgbRed = 0xff; + colors[0].rgbGreen = 0xff; + colors[0].rgbBlue = 0xff; + colors[1].rgbRed = 0; + colors[1].rgbGreen = 0; + colors[1].rgbBlue = 0; + colors[2].rgbRed = 0xff; + colors[2].rgbGreen = 0; + colors[2].rgbBlue = 0; + colors[3].rgbRed = 0; + colors[3].rgbGreen = 0xff; + colors[3].rgbBlue = 0; + colors[4].rgbRed = 0; + colors[4].rgbGreen = 0; + colors[4].rgbBlue = 0xff; dib = CreateDIBSection(0, bmi, DIB_RGB_COLORS, (void**)&bits, NULL, 0); ok(dib != NULL, "ret NULL\n"); orig_bm = SelectObject(mem_dc, dib); + dst_format = "8"; sha1 = sha1_graphics_8; draw_graphics(mem_dc, bmi, bits, &sha1); @@ -1345,29 +2311,48 @@ orig_bm = SelectObject(mem_dc, dib); + dst_format = "4"; sha1 = sha1_graphics_4; draw_graphics(mem_dc, bmi, bits, &sha1); SelectObject(mem_dc, orig_bm); DeleteObject(dib); + /* 4 grayscale */ + trace("4 grayscale\n"); + bmi->bmiHeader.biClrUsed = 16; + for (i = 0; i < 16; i++) colors[i].rgbRed = colors[i].rgbGreen = colors[i].rgbBlue = i * 17; + + dib = CreateDIBSection(0, bmi, DIB_RGB_COLORS, (void**)&bits, NULL, 0); + ok(dib != NULL, "ret NULL\n"); + + orig_bm = SelectObject(mem_dc, dib); + + dst_format = "4 grayscale"; + sha1 = sha1_graphics_4_grayscale; + draw_graphics(mem_dc, bmi, bits, &sha1); + + SelectObject(mem_dc, orig_bm); + DeleteObject(dib); + /* 1 */ trace("1\n"); bmi->bmiHeader.biBitCount = 1; bmi->bmiHeader.biClrUsed = 2; - bmi->bmiColors[0].rgbRed = 0x00; - bmi->bmiColors[0].rgbGreen = 0x01; - bmi->bmiColors[0].rgbBlue = 0xff; - bmi->bmiColors[1].rgbRed = 0xff; - bmi->bmiColors[1].rgbGreen = 0x00; - bmi->bmiColors[1].rgbBlue = 0x00; + colors[0].rgbRed = 0x00; + colors[0].rgbGreen = 0x01; + colors[0].rgbBlue = 0xff; + colors[1].rgbRed = 0xff; + colors[1].rgbGreen = 0x00; + colors[1].rgbBlue = 0x00; dib = CreateDIBSection(0, bmi, DIB_RGB_COLORS, (void**)&bits, NULL, 0); ok(dib != NULL, "ret NULL\n"); orig_bm = SelectObject(mem_dc, dib); + dst_format = "1"; sha1 = sha1_graphics_1; draw_graphics(mem_dc, bmi, bits, &sha1); @@ -1381,6 +2366,7 @@ { HMODULE mod = GetModuleHandleA("gdi32.dll"); pSetLayout = (void *)GetProcAddress( mod, "SetLayout" ); + pGdiAlphaBlend = (void *)GetProcAddress( mod, "GdiAlphaBlend" ); CryptAcquireContextW(&crypt_prov, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT); diff -Nru wine1.3-1.3.30/dlls/gdi32/tests/font.c wine1.3-1.3.31/dlls/gdi32/tests/font.c --- wine1.3-1.3.30/dlls/gdi32/tests/font.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/tests/font.c 2011-10-21 18:38:36.000000000 +0000 @@ -673,117 +673,127 @@ const char face_name[LF_FACESIZE]; int weight, height, ascent, descent, int_leading, ext_leading; int ave_char_width, max_char_width, dpi; + BYTE first_char, last_char, def_char, break_char; DWORD ansi_bitfield; WORD skip_lang_id; } fd[] = { - { "MS Sans Serif", FW_NORMAL, 13, 11, 2, 2, 0, 5, 11, 96, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC }, - { "MS Sans Serif", FW_NORMAL, 16, 13, 3, 3, 0, 7, 14, 96, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC }, - { "MS Sans Serif", FW_NORMAL, 20, 16, 4, 4, 0, 8, 16, 96, FS_LATIN1 | FS_CYRILLIC }, - { "MS Sans Serif", FW_NORMAL, 20, 16, 4, 4, 0, 8, 18, 96, FS_LATIN2 }, - { "MS Sans Serif", FW_NORMAL, 24, 19, 5, 6, 0, 9, 19, 96, FS_LATIN1 }, - { "MS Sans Serif", FW_NORMAL, 24, 19, 5, 6, 0, 9, 24, 96, FS_LATIN2 }, - { "MS Sans Serif", FW_NORMAL, 24, 19, 5, 6, 0, 9, 20, 96, FS_CYRILLIC }, - { "MS Sans Serif", FW_NORMAL, 29, 23, 6, 5, 0, 12, 24, 96, FS_LATIN1 }, - { "MS Sans Serif", FW_NORMAL, 29, 23, 6, 6, 0, 12, 24, 96, FS_LATIN2 }, - { "MS Sans Serif", FW_NORMAL, 29, 23, 6, 5, 0, 12, 25, 96, FS_CYRILLIC }, - { "MS Sans Serif", FW_NORMAL, 37, 29, 8, 5, 0, 16, 32, 96, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC }, - - { "MS Sans Serif", FW_NORMAL, 16, 13, 3, 3, 0, 7, 14, 120, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC }, - { "MS Sans Serif", FW_NORMAL, 20, 16, 4, 4, 0, 8, 18, 120, FS_LATIN1 | FS_LATIN2 }, - { "MS Sans Serif", FW_NORMAL, 20, 16, 4, 4, 0, 8, 17, 120, FS_CYRILLIC }, - { "MS Sans Serif", FW_NORMAL, 25, 20, 5, 5, 0, 10, 21, 120, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC }, - { "MS Sans Serif", FW_NORMAL, 29, 23, 6, 6, 0, 12, 24, 120, FS_LATIN1 | FS_LATIN2 }, - { "MS Sans Serif", FW_NORMAL, 29, 23, 6, 5, 0, 12, 24, 120, FS_CYRILLIC }, - { "MS Sans Serif", FW_NORMAL, 36, 29, 7, 6, 0, 15, 30, 120, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC }, - { "MS Sans Serif", FW_NORMAL, 46, 37, 9, 6, 0, 20, 40, 120, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC }, - - { "MS Serif", FW_NORMAL, 10, 8, 2, 2, 0, 4, 8, 96, FS_LATIN1 | FS_LATIN2 }, - { "MS Serif", FW_NORMAL, 10, 8, 2, 2, 0, 5, 8, 96, FS_CYRILLIC }, - { "MS Serif", FW_NORMAL, 11, 9, 2, 2, 0, 5, 9, 96, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC }, - { "MS Serif", FW_NORMAL, 13, 11, 2, 2, 0, 5, 11, 96, FS_LATIN1 }, - { "MS Serif", FW_NORMAL, 13, 11, 2, 2, 0, 5, 12, 96, FS_LATIN2 | FS_CYRILLIC }, - { "MS Serif", FW_NORMAL, 16, 13, 3, 3, 0, 6, 14, 96, FS_LATIN1 | FS_LATIN2 }, - { "MS Serif", FW_NORMAL, 16, 13, 3, 3, 0, 6, 16, 96, FS_CYRILLIC }, - { "MS Serif", FW_NORMAL, 19, 15, 4, 3, 0, 8, 18, 96, FS_LATIN1 | FS_LATIN2 }, - { "MS Serif", FW_NORMAL, 19, 15, 4, 3, 0, 8, 19, 96, FS_CYRILLIC }, - { "MS Serif", FW_NORMAL, 21, 16, 5, 3, 0, 9, 17, 96, FS_LATIN1 }, - { "MS Serif", FW_NORMAL, 21, 16, 5, 3, 0, 9, 22, 96, FS_LATIN2 }, - { "MS Serif", FW_NORMAL, 21, 16, 5, 3, 0, 9, 23, 96, FS_CYRILLIC }, - { "MS Serif", FW_NORMAL, 27, 21, 6, 3, 0, 12, 23, 96, FS_LATIN1 }, - { "MS Serif", FW_NORMAL, 27, 21, 6, 3, 0, 12, 26, 96, FS_LATIN2 }, - { "MS Serif", FW_NORMAL, 27, 21, 6, 3, 0, 12, 27, 96, FS_CYRILLIC }, - { "MS Serif", FW_NORMAL, 35, 27, 8, 3, 0, 16, 33, 96, FS_LATIN1 | FS_LATIN2 }, - { "MS Serif", FW_NORMAL, 35, 27, 8, 3, 0, 16, 34, 96, FS_CYRILLIC }, - - { "MS Serif", FW_NORMAL, 16, 13, 3, 3, 0, 6, 14, 120, FS_LATIN1 | FS_CYRILLIC }, - { "MS Serif", FW_NORMAL, 16, 13, 3, 3, 0, 6, 13, 120, FS_LATIN2 }, - { "MS Serif", FW_NORMAL, 20, 16, 4, 4, 0, 8, 18, 120, FS_LATIN1 | FS_CYRILLIC }, - { "MS Serif", FW_NORMAL, 20, 16, 4, 4, 0, 8, 15, 120, FS_LATIN2 }, - { "MS Serif", FW_NORMAL, 23, 18, 5, 3, 0, 10, 21, 120, FS_LATIN1 | FS_CYRILLIC }, - { "MS Serif", FW_NORMAL, 23, 18, 5, 3, 0, 10, 19, 120, FS_LATIN2 }, - { "MS Serif", FW_NORMAL, 27, 21, 6, 4, 0, 12, 23, 120, FS_LATIN1 | FS_LATIN2 }, - { "MS Serif", FW_MEDIUM, 27, 22, 5, 2, 0, 12, 30, 120, FS_CYRILLIC }, - { "MS Serif", FW_NORMAL, 33, 26, 7, 3, 0, 14, 30, 120, FS_LATIN1 | FS_LATIN2 }, - { "MS Serif", FW_MEDIUM, 32, 25, 7, 2, 0, 14, 32, 120, FS_CYRILLIC }, - { "MS Serif", FW_NORMAL, 43, 34, 9, 3, 0, 19, 39, 120, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC }, - - { "Courier", FW_NORMAL, 13, 11, 2, 0, 0, 8, 8, 96, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC }, - { "Courier", FW_NORMAL, 16, 13, 3, 0, 0, 9, 9, 96, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC }, - { "Courier", FW_NORMAL, 20, 16, 4, 0, 0, 12, 12, 96, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC }, - - { "Courier", FW_NORMAL, 16, 13, 3, 0, 0, 9, 9, 120, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC }, - { "Courier", FW_NORMAL, 20, 16, 4, 0, 0, 12, 12, 120, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC }, - { "Courier", FW_NORMAL, 25, 20, 5, 0, 0, 15, 15, 120, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC }, - - { "System", FW_BOLD, 16, 13, 3, 3, 0, 7, 14, 96, FS_LATIN1 }, - { "System", FW_BOLD, 16, 13, 3, 3, 0, 7, 15, 96, FS_LATIN2 | FS_CYRILLIC }, - { "System", FW_NORMAL, 18, 16, 2, 0, 2, 8, 16, 96, FS_JISJAPAN }, - - { "System", FW_BOLD, 20, 16, 4, 4, 0, 9, 14, 120, FS_LATIN1 }, - { "System", FW_BOLD, 20, 16, 4, 4, 0, 9, 17, 120, FS_LATIN2 | FS_CYRILLIC }, - - { "Small Fonts", FW_NORMAL, 3, 2, 1, 0, 0, 1, 2, 96, FS_LATIN1 }, - { "Small Fonts", FW_NORMAL, 3, 2, 1, 0, 0, 1, 8, 96, FS_LATIN2 | FS_CYRILLIC }, - { "Small Fonts", FW_NORMAL, 3, 2, 1, 0, 0, 2, 4, 96, FS_JISJAPAN }, - { "Small Fonts", FW_NORMAL, 5, 4, 1, 1, 0, 3, 4, 96, FS_LATIN1, LANG_ARABIC }, - { "Small Fonts", FW_NORMAL, 5, 4, 1, 1, 0, 2, 8, 96, FS_LATIN2 | FS_CYRILLIC }, - { "Small Fonts", FW_NORMAL, 5, 4, 1, 0, 0, 3, 6, 96, FS_JISJAPAN }, - { "Small Fonts", FW_NORMAL, 6, 5, 1, 1, 0, 3, 13, 96, FS_LATIN1, LANG_ARABIC }, - { "Small Fonts", FW_NORMAL, 6, 5, 1, 1, 0, 3, 8, 96, FS_LATIN2 | FS_CYRILLIC }, - { "Small Fonts", FW_NORMAL, 6, 5, 1, 1, 0, 3, 8, 96, FS_ARABIC }, - { "Small Fonts", FW_NORMAL, 6, 5, 1, 0, 0, 4, 8, 96, FS_JISJAPAN }, - { "Small Fonts", FW_NORMAL, 8, 7, 1, 1, 0, 4, 7, 96, FS_LATIN1, LANG_ARABIC }, - { "Small Fonts", FW_NORMAL, 8, 7, 1, 1, 0, 4, 8, 96, FS_LATIN2 | FS_CYRILLIC }, - { "Small Fonts", FW_NORMAL, 8, 7, 1, 1, 0, 4, 8, 96, FS_ARABIC }, - { "Small Fonts", FW_NORMAL, 8, 7, 1, 0, 0, 5, 10, 96, FS_JISJAPAN }, - { "Small Fonts", FW_NORMAL, 10, 8, 2, 2, 0, 4, 8, 96, FS_LATIN1 | FS_LATIN2, LANG_ARABIC }, - { "Small Fonts", FW_NORMAL, 10, 8, 2, 2, 0, 5, 8, 96, FS_CYRILLIC }, - { "Small Fonts", FW_NORMAL, 10, 8, 2, 2, 0, 4, 9, 96, FS_ARABIC }, - { "Small Fonts", FW_NORMAL, 10, 8, 2, 0, 0, 6, 12, 96, FS_JISJAPAN }, - { "Small Fonts", FW_NORMAL, 11, 9, 2, 2, 0, 5, 9, 96, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC, LANG_ARABIC }, - { "Small Fonts", FW_NORMAL, 11, 9, 2, 2, 0, 4, 10, 96, FS_ARABIC }, - { "Small Fonts", FW_NORMAL, 11, 9, 2, 0, 0, 7, 14, 96, FS_JISJAPAN }, - - { "Small Fonts", FW_NORMAL, 3, 2, 1, 0, 0, 1, 2, 120, FS_LATIN1 | FS_JISJAPAN }, - { "Small Fonts", FW_NORMAL, 3, 2, 1, 0, 0, 1, 8, 120, FS_LATIN2 | FS_CYRILLIC }, - { "Small Fonts", FW_NORMAL, 6, 5, 1, 1, 0, 3, 5, 120, FS_LATIN1 | FS_JISJAPAN }, - { "Small Fonts", FW_NORMAL, 6, 5, 1, 1, 0, 3, 8, 120, FS_LATIN2 | FS_CYRILLIC }, - { "Small Fonts", FW_NORMAL, 8, 7, 1, 1, 0, 4, 7, 120, FS_LATIN1 | FS_JISJAPAN }, - { "Small Fonts", FW_NORMAL, 8, 7, 1, 1, 0, 4, 8, 120, FS_LATIN2 | FS_CYRILLIC }, - { "Small Fonts", FW_NORMAL, 10, 8, 2, 2, 0, 5, 9, 120, FS_LATIN1 | FS_LATIN2 | FS_JISJAPAN }, - { "Small Fonts", FW_NORMAL, 10, 8, 2, 2, 0, 5, 8, 120, FS_CYRILLIC }, - { "Small Fonts", FW_NORMAL, 12, 10, 2, 2, 0, 5, 10, 120, FS_LATIN1 | FS_LATIN2 | FS_JISJAPAN }, - { "Small Fonts", FW_NORMAL, 12, 10, 2, 2, 0, 6, 10, 120, FS_CYRILLIC }, - { "Small Fonts", FW_NORMAL, 13, 11, 2, 2, 0, 6, 12, 120, FS_LATIN1 | FS_LATIN2 | FS_JISJAPAN }, - { "Small Fonts", FW_NORMAL, 13, 11, 2, 2, 0, 6, 11, 120, FS_CYRILLIC }, - - { "Fixedsys", FW_NORMAL, 15, 12, 3, 3, 0, 8, 8, 96, FS_LATIN1 | FS_LATIN2 }, - { "Fixedsys", FW_NORMAL, 16, 12, 4, 3, 0, 8, 8, 96, FS_CYRILLIC }, - { "FixedSys", FW_NORMAL, 18, 16, 2, 0, 0, 8, 16, 96, FS_JISJAPAN }, + { "MS Sans Serif", FW_NORMAL, 13, 11, 2, 2, 0, 5, 11, 96, 0x20, 0xff, 0x81, 0x20, FS_LATIN1 | FS_LATIN2 }, + { "MS Sans Serif", FW_NORMAL, 13, 11, 2, 2, 0, 5, 11, 96, 0x20, 0xff, 0x7f, 0x20, FS_CYRILLIC }, + { "MS Sans Serif", FW_NORMAL, 16, 13, 3, 3, 0, 7, 14, 96, 0x20, 0xff, 0x81, 0x20, FS_LATIN1 | FS_LATIN2 }, + { "MS Sans Serif", FW_NORMAL, 16, 13, 3, 3, 0, 7, 14, 96, 0x20, 0xff, 0x7f, 0x20, FS_CYRILLIC }, + { "MS Sans Serif", FW_NORMAL, 20, 16, 4, 4, 0, 8, 16, 96, 0x20, 0xff, 0x81, 0x20, FS_LATIN1 }, + { "MS Sans Serif", FW_NORMAL, 20, 16, 4, 4, 0, 8, 18, 96, 0x20, 0xff, 0x81, 0x20, FS_LATIN2 }, + { "MS Sans Serif", FW_NORMAL, 20, 16, 4, 4, 0, 8, 16, 96, 0x20, 0xff, 0x7f, 0x20, FS_CYRILLIC }, + { "MS Sans Serif", FW_NORMAL, 24, 19, 5, 6, 0, 9, 19, 96, 0x20, 0xff, 0x81, 0x20, FS_LATIN1 }, + { "MS Sans Serif", FW_NORMAL, 24, 19, 5, 6, 0, 9, 24, 96, 0x20, 0xff, 0x81, 0x40, FS_LATIN2 }, + { "MS Sans Serif", FW_NORMAL, 24, 19, 5, 6, 0, 9, 20, 96, 0x20, 0xff, 0x7f, 0x20, FS_CYRILLIC }, + { "MS Sans Serif", FW_NORMAL, 29, 23, 6, 5, 0, 12, 24, 96, 0x20, 0xff, 0x81, 0x20, FS_LATIN1 }, + { "MS Sans Serif", FW_NORMAL, 29, 23, 6, 6, 0, 12, 24, 96, 0x20, 0xff, 0x81, 0x20, FS_LATIN2 }, + { "MS Sans Serif", FW_NORMAL, 29, 23, 6, 5, 0, 12, 25, 96, 0x20, 0xff, 0x7f, 0x20, FS_CYRILLIC }, + { "MS Sans Serif", FW_NORMAL, 37, 29, 8, 5, 0, 16, 32, 96, 0x20, 0xff, 0x81, 0x20, FS_LATIN1 }, + { "MS Sans Serif", FW_NORMAL, 37, 29, 8, 5, 0, 16, 32, 96, 0x20, 0xff, 0x81, 0x40, FS_LATIN2 }, + { "MS Sans Serif", FW_NORMAL, 37, 29, 8, 5, 0, 16, 32, 96, 0x20, 0xff, 0x7f, 0x20, FS_CYRILLIC }, + + { "MS Sans Serif", FW_NORMAL, 16, 13, 3, 3, 0, 7, 14, 120, 0x20, 0xff, 0x81, 0x20, FS_LATIN1 | FS_LATIN2 }, + { "MS Sans Serif", FW_NORMAL, 16, 13, 3, 3, 0, 7, 14, 120, 0x20, 0xff, 0x7f, 0x20, FS_CYRILLIC }, + { "MS Sans Serif", FW_NORMAL, 20, 16, 4, 4, 0, 8, 18, 120, 0x20, 0xff, 0x81, 0x20, FS_LATIN1 | FS_LATIN2 }, + { "MS Sans Serif", FW_NORMAL, 20, 16, 4, 4, 0, 8, 17, 120, 0x20, 0xff, 0x7f, 0x20, FS_CYRILLIC }, + { "MS Sans Serif", FW_NORMAL, 25, 20, 5, 5, 0, 10, 21, 120, 0x20, 0xff, 0x81, 0x20, FS_LATIN1 | FS_LATIN2 }, + { "MS Sans Serif", FW_NORMAL, 25, 20, 5, 5, 0, 10, 21, 120, 0x20, 0xff, 0x7f, 0x20, FS_CYRILLIC }, + { "MS Sans Serif", FW_NORMAL, 29, 23, 6, 6, 0, 12, 24, 120, 0x20, 0xff, 0x81, 0x20, FS_LATIN1 | FS_LATIN2 }, + { "MS Sans Serif", FW_NORMAL, 29, 23, 6, 5, 0, 12, 24, 120, 0x20, 0xff, 0x7f, 0x20, FS_CYRILLIC }, + { "MS Sans Serif", FW_NORMAL, 36, 29, 7, 6, 0, 15, 30, 120, 0x20, 0xff, 0x81, 0x20, FS_LATIN1 | FS_LATIN2 }, + { "MS Sans Serif", FW_NORMAL, 36, 29, 7, 6, 0, 15, 30, 120, 0x20, 0xff, 0x7f, 0x20, FS_CYRILLIC }, + { "MS Sans Serif", FW_NORMAL, 46, 37, 9, 6, 0, 20, 40, 120, 0x20, 0xff, 0x81, 0x20, FS_LATIN1 | FS_LATIN2 }, + { "MS Sans Serif", FW_NORMAL, 46, 37, 9, 6, 0, 20, 40, 120, 0x20, 0xff, 0x7f, 0x20, FS_CYRILLIC }, + + { "MS Serif", FW_NORMAL, 10, 8, 2, 2, 0, 4, 8, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_LATIN2 }, + { "MS Serif", FW_NORMAL, 10, 8, 2, 2, 0, 5, 8, 96, 0x20, 0xff, 0x80, 0x20, FS_CYRILLIC }, + { "MS Serif", FW_NORMAL, 11, 9, 2, 2, 0, 5, 9, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC }, + { "MS Serif", FW_NORMAL, 13, 11, 2, 2, 0, 5, 11, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 }, + { "MS Serif", FW_NORMAL, 13, 11, 2, 2, 0, 5, 12, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN2 | FS_CYRILLIC }, + { "MS Serif", FW_NORMAL, 16, 13, 3, 3, 0, 6, 14, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_LATIN2 }, + { "MS Serif", FW_NORMAL, 16, 13, 3, 3, 0, 6, 16, 96, 0x20, 0xff, 0x80, 0x20, FS_CYRILLIC }, + { "MS Serif", FW_NORMAL, 19, 15, 4, 3, 0, 8, 18, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_LATIN2 }, + { "MS Serif", FW_NORMAL, 19, 15, 4, 3, 0, 8, 19, 96, 0x20, 0xff, 0x80, 0x20, FS_CYRILLIC }, + { "MS Serif", FW_NORMAL, 21, 16, 5, 3, 0, 9, 17, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 }, + { "MS Serif", FW_NORMAL, 21, 16, 5, 3, 0, 9, 22, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN2 }, + { "MS Serif", FW_NORMAL, 21, 16, 5, 3, 0, 9, 23, 96, 0x20, 0xff, 0x80, 0x20, FS_CYRILLIC }, + { "MS Serif", FW_NORMAL, 27, 21, 6, 3, 0, 12, 23, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 }, + { "MS Serif", FW_NORMAL, 27, 21, 6, 3, 0, 12, 26, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN2 }, + { "MS Serif", FW_NORMAL, 27, 21, 6, 3, 0, 12, 27, 96, 0x20, 0xff, 0x80, 0x20, FS_CYRILLIC }, + { "MS Serif", FW_NORMAL, 35, 27, 8, 3, 0, 16, 33, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_LATIN2 }, + { "MS Serif", FW_NORMAL, 35, 27, 8, 3, 0, 16, 34, 96, 0x20, 0xff, 0x80, 0x20, FS_CYRILLIC }, + + { "MS Serif", FW_NORMAL, 16, 13, 3, 3, 0, 6, 14, 120, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_CYRILLIC }, + { "MS Serif", FW_NORMAL, 16, 13, 3, 3, 0, 6, 13, 120, 0x20, 0xff, 0x80, 0x20, FS_LATIN2 }, + { "MS Serif", FW_NORMAL, 20, 16, 4, 4, 0, 8, 18, 120, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_CYRILLIC }, + { "MS Serif", FW_NORMAL, 20, 16, 4, 4, 0, 8, 15, 120, 0x20, 0xff, 0x80, 0x20, FS_LATIN2 }, + { "MS Serif", FW_NORMAL, 23, 18, 5, 3, 0, 10, 21, 120, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_CYRILLIC }, + { "MS Serif", FW_NORMAL, 23, 18, 5, 3, 0, 10, 19, 120, 0x20, 0xff, 0x80, 0x20, FS_LATIN2 }, + { "MS Serif", FW_NORMAL, 27, 21, 6, 4, 0, 12, 23, 120, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_LATIN2 }, + { "MS Serif", FW_MEDIUM, 27, 22, 5, 2, 0, 12, 30, 120, 0x20, 0xff, 0x80, 0x20, FS_CYRILLIC }, + { "MS Serif", FW_NORMAL, 33, 26, 7, 3, 0, 14, 30, 120, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_LATIN2 }, + { "MS Serif", FW_MEDIUM, 32, 25, 7, 2, 0, 14, 32, 120, 0x20, 0xff, 0x80, 0x20, FS_CYRILLIC }, + { "MS Serif", FW_NORMAL, 43, 34, 9, 3, 0, 19, 39, 120, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC }, + + { "Courier", FW_NORMAL, 13, 11, 2, 0, 0, 8, 8, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC }, + { "Courier", FW_NORMAL, 16, 13, 3, 0, 0, 9, 9, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC }, + { "Courier", FW_NORMAL, 20, 16, 4, 0, 0, 12, 12, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC }, + + { "Courier", FW_NORMAL, 16, 13, 3, 0, 0, 9, 9, 120, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC }, + { "Courier", FW_NORMAL, 20, 16, 4, 0, 0, 12, 12, 120, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC }, + { "Courier", FW_NORMAL, 25, 20, 5, 0, 0, 15, 15, 120, 0x20, 0xff, 0x40, 0x20, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC }, + + { "System", FW_BOLD, 16, 13, 3, 3, 0, 7, 14, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 }, + { "System", FW_BOLD, 16, 13, 3, 3, 0, 7, 15, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN2 | FS_CYRILLIC }, + { "System", FW_NORMAL, 18, 16, 2, 0, 2, 8, 16, 96, 0, 0, 0, 0, FS_JISJAPAN }, + + { "System", FW_BOLD, 20, 16, 4, 4, 0, 9, 14, 120, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 }, + { "System", FW_BOLD, 20, 16, 4, 4, 0, 9, 17, 120, 0x20, 0xff, 0x80, 0x20, FS_LATIN2 | FS_CYRILLIC }, + + { "Small Fonts", FW_NORMAL, 3, 2, 1, 0, 0, 1, 2, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 }, + { "Small Fonts", FW_NORMAL, 3, 2, 1, 0, 0, 1, 8, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN2 | FS_CYRILLIC }, + { "Small Fonts", FW_NORMAL, 3, 2, 1, 0, 0, 2, 4, 96, 0, 0, 0, 0, FS_JISJAPAN }, + { "Small Fonts", FW_NORMAL, 5, 4, 1, 1, 0, 3, 4, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN1, LANG_ARABIC }, + { "Small Fonts", FW_NORMAL, 5, 4, 1, 1, 0, 2, 8, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN2 | FS_CYRILLIC }, + { "Small Fonts", FW_NORMAL, 5, 4, 1, 0, 0, 3, 6, 96, 0, 0, 0, 0, FS_JISJAPAN }, + { "Small Fonts", FW_NORMAL, 6, 5, 1, 1, 0, 3, 13, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN1, LANG_ARABIC }, + { "Small Fonts", FW_NORMAL, 6, 5, 1, 1, 0, 3, 8, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN2 | FS_CYRILLIC }, + { "Small Fonts", FW_NORMAL, 6, 5, 1, 1, 0, 3, 8, 96, 0, 0, 0, 0, FS_ARABIC }, + { "Small Fonts", FW_NORMAL, 6, 5, 1, 0, 0, 4, 8, 96, 0, 0, 0, 0, FS_JISJAPAN }, + { "Small Fonts", FW_NORMAL, 8, 7, 1, 1, 0, 4, 7, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN1, LANG_ARABIC }, + { "Small Fonts", FW_NORMAL, 8, 7, 1, 1, 0, 4, 8, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN2 | FS_CYRILLIC }, + { "Small Fonts", FW_NORMAL, 8, 7, 1, 1, 0, 4, 8, 96, 0, 0, 0, 0, FS_ARABIC }, + { "Small Fonts", FW_NORMAL, 8, 7, 1, 0, 0, 5, 10, 96, 0, 0, 0, 0, FS_JISJAPAN }, + { "Small Fonts", FW_NORMAL, 10, 8, 2, 2, 0, 4, 8, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_LATIN2, LANG_ARABIC }, + { "Small Fonts", FW_NORMAL, 10, 8, 2, 2, 0, 5, 8, 96, 0x20, 0xff, 0x80, 0x20, FS_CYRILLIC }, + { "Small Fonts", FW_NORMAL, 10, 8, 2, 2, 0, 4, 9, 96, 0, 0, 0, 0, FS_ARABIC }, + { "Small Fonts", FW_NORMAL, 10, 8, 2, 0, 0, 6, 12, 96, 0, 0, 0, 0, FS_JISJAPAN }, + { "Small Fonts", FW_NORMAL, 11, 9, 2, 2, 0, 5, 9, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC, LANG_ARABIC }, + { "Small Fonts", FW_NORMAL, 11, 9, 2, 2, 0, 4, 10, 96, 0, 0, 0, 0, FS_ARABIC }, + { "Small Fonts", FW_NORMAL, 11, 9, 2, 0, 0, 7, 14, 96, 0, 0, 0, 0, FS_JISJAPAN }, + + { "Small Fonts", FW_NORMAL, 3, 2, 1, 0, 0, 1, 2, 120, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_JISJAPAN }, + { "Small Fonts", FW_NORMAL, 3, 2, 1, 0, 0, 1, 8, 120, 0x20, 0xff, 0x80, 0x20, FS_LATIN2 | FS_CYRILLIC }, + { "Small Fonts", FW_NORMAL, 6, 5, 1, 1, 0, 3, 5, 120, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_JISJAPAN }, + { "Small Fonts", FW_NORMAL, 6, 5, 1, 1, 0, 3, 8, 120, 0x20, 0xff, 0x80, 0x20, FS_LATIN2 | FS_CYRILLIC }, + { "Small Fonts", FW_NORMAL, 8, 7, 1, 1, 0, 4, 7, 120, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_JISJAPAN }, + { "Small Fonts", FW_NORMAL, 8, 7, 1, 1, 0, 4, 8, 120, 0x20, 0xff, 0x80, 0x20, FS_LATIN2 | FS_CYRILLIC }, + { "Small Fonts", FW_NORMAL, 10, 8, 2, 2, 0, 5, 9, 120, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_LATIN2 | FS_JISJAPAN }, + { "Small Fonts", FW_NORMAL, 10, 8, 2, 2, 0, 5, 8, 120, 0x20, 0xff, 0x80, 0x20, FS_CYRILLIC }, + { "Small Fonts", FW_NORMAL, 12, 10, 2, 2, 0, 5, 10, 120, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_LATIN2 | FS_JISJAPAN }, + { "Small Fonts", FW_NORMAL, 12, 10, 2, 2, 0, 6, 10, 120, 0x20, 0xff, 0x80, 0x20, FS_CYRILLIC }, + { "Small Fonts", FW_NORMAL, 13, 11, 2, 2, 0, 6, 12, 120, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_LATIN2 | FS_JISJAPAN }, + { "Small Fonts", FW_NORMAL, 13, 11, 2, 2, 0, 6, 11, 120, 0x20, 0xff, 0x80, 0x20, FS_CYRILLIC }, + + { "Fixedsys", FW_NORMAL, 15, 12, 3, 3, 0, 8, 8, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_LATIN2 }, + { "Fixedsys", FW_NORMAL, 16, 12, 4, 3, 0, 8, 8, 96, 0x20, 0xff, 0x80, 0x20, FS_CYRILLIC }, + { "FixedSys", FW_NORMAL, 18, 16, 2, 0, 0, 8, 16, 96, 0, 0, 0, 0, FS_JISJAPAN }, /* The 120dpi version still has its dpi marked as 96 */ - { "Fixedsys", FW_NORMAL, 20, 16, 4, 2, 0, 10, 10, 96, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC } + { "Fixedsys", FW_NORMAL, 20, 16, 4, 2, 0, 10, 10, 96, 0x20, 0xff, 0x80, 0x20, FS_LATIN1 | FS_LATIN2 | FS_CYRILLIC } /* FIXME: add "Terminal" */ }; @@ -839,6 +849,10 @@ ok(tm.tmInternalLeading == fd[i].int_leading, "%s(%d): tm.tmInternalLeading %d != %d\n", fd[i].face_name, fd[i].height, tm.tmInternalLeading, fd[i].int_leading); ok(tm.tmExternalLeading == fd[i].ext_leading, "%s(%d): tm.tmExternalLeading %d != %d\n", fd[i].face_name, fd[i].height, tm.tmExternalLeading, fd[i].ext_leading); ok(tm.tmAveCharWidth == fd[i].ave_char_width, "%s(%d): tm.tmAveCharWidth %d != %d\n", fd[i].face_name, fd[i].height, tm.tmAveCharWidth, fd[i].ave_char_width); + ok(tm.tmFirstChar == fd[i].first_char, "%s(%d): tm.tmFirstChar = %02x\n", fd[i].face_name, fd[i].height, tm.tmFirstChar); + ok(tm.tmLastChar == fd[i].last_char, "%s(%d): tm.tmLastChar = %02x\n", fd[i].face_name, fd[i].height, tm.tmLastChar); + ok(tm.tmDefaultChar == fd[i].def_char, "%s(%d): tm.tmDefaultChar = %02x\n", fd[i].face_name, fd[i].height, tm.tmDefaultChar); + ok(tm.tmBreakChar == fd[i].break_char, "%s(%d): tm.tmBreakChar = %02x\n", fd[i].face_name, fd[i].height, tm.tmBreakChar); /* Don't run the max char width test on System/ANSI_CHARSET. We have extra characters in our font that make the max width bigger */ @@ -1054,6 +1068,7 @@ HFONT hfont; SIZE sz; SIZE sz1, sz2; + BOOL ret; memset(&lf, 0, sizeof(lf)); strcpy(lf.lfFaceName, "Arial"); @@ -1110,6 +1125,14 @@ "GetTextExtentExPointW with lpnFit and alpDx both NULL returns incorrect results\n"); HeapFree(GetProcessHeap(), 0, extents); + /* extents functions fail with -ve counts (the interesting case being -1) */ + ret = GetTextExtentPointA(hdc, "o", -1, &sz); + ok(ret == FALSE, "got %d\n", ret); + ret = GetTextExtentExPointA(hdc, "o", -1, 0, NULL, NULL, &sz); + ok(ret == FALSE, "got %d\n", ret); + ret = GetTextExtentExPointW(hdc, wt, -1, 0, NULL, NULL, &sz1); + ok(ret == FALSE, "got %d\n", ret); + hfont = SelectObject(hdc, hfont); DeleteObject(hfont); ReleaseDC(NULL, hdc); @@ -2464,7 +2487,7 @@ + i - seg_count; /* some fonts have broken last segment */ - if ((char *)(glyph_ids + index + sizeof(*glyph_ids)) < (char *)ptr + limit) + if ((char *)(glyph_ids + index + 1) < (char *)ptr + limit) index = GET_BE_WORD(glyph_ids[index]); else { diff -Nru wine1.3-1.3.30/dlls/gdi32/tests/pen.c wine1.3-1.3.31/dlls/gdi32/tests/pen.c --- wine1.3-1.3.30/dlls/gdi32/tests/pen.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdi32/tests/pen.c 2011-10-21 18:38:36.000000000 +0000 @@ -311,12 +311,6 @@ break; } -if (pen[i].style == PS_USERSTYLE) -{ - todo_wine - ok(ext_pen.elp.elpPenStyle == pen[i].style, "expected %x, got %x\n", pen[i].style, ext_pen.elp.elpPenStyle); -} -else ok(ext_pen.elp.elpPenStyle == pen[i].style, "expected %x, got %x\n", pen[i].style, ext_pen.elp.elpPenStyle); ok(ext_pen.elp.elpWidth == 1, "expected 1, got %x\n", ext_pen.elp.elpWidth); ok(ext_pen.elp.elpColor == pen[i].ret_color, "expected %08x, got %08x\n", pen[i].ret_color, ext_pen.elp.elpColor); diff -Nru wine1.3-1.3.30/dlls/gdiplus/tests/image.c wine1.3-1.3.31/dlls/gdiplus/tests/image.c --- wine1.3-1.3.30/dlls/gdiplus/tests/image.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/gdiplus/tests/image.c 2011-10-21 18:38:36.000000000 +0000 @@ -886,6 +886,7 @@ bmi.bmiHeader.biBitCount = 24; bmi.bmiHeader.biPlanes = 1; bmi.bmiHeader.biCompression = BI_RGB; + bmi.bmiHeader.biClrUsed = 0; hbm = CreateDIBSection(hdc, &bmi, DIB_RGB_COLORS, (void**)&bits, NULL, 0); ok(hbm != NULL, "CreateDIBSection failed\n"); @@ -1775,6 +1776,7 @@ INT size; BYTE buffer[1040]; ColorPalette *palette=(ColorPalette*)buffer; + ARGB *entries = palette->Entries; ARGB color=0; /* test initial palette from non-indexed bitmap */ @@ -1818,8 +1820,8 @@ expect(PaletteFlagsGrayScale, palette->Flags); expect(2, palette->Count); - expect(0xff000000, palette->Entries[0]); - expect(0xffffffff, palette->Entries[1]); + expect(0xff000000, entries[0]); + expect(0xffffffff, entries[1]); /* test getting/setting pixels */ stat = GdipBitmapGetPixel(bitmap, 0, 0, &color); @@ -1904,12 +1906,12 @@ } /* test setting/getting a different palette */ - palette->Entries[1] = 0xffcccccc; + entries[1] = 0xffcccccc; stat = GdipSetImagePalette((GpImage*)bitmap, palette); expect(Ok, stat); - palette->Entries[1] = 0; + entries[1] = 0; stat = GdipGetImagePaletteSize((GpImage*)bitmap, &size); expect(Ok, stat); @@ -1919,7 +1921,7 @@ expect(Ok, stat); expect(PaletteFlagsHalftone, palette->Flags); expect(256, palette->Count); - expect(0xffcccccc, palette->Entries[1]); + expect(0xffcccccc, entries[1]); /* test count < 256 */ palette->Flags = 12345; @@ -1928,8 +1930,8 @@ stat = GdipSetImagePalette((GpImage*)bitmap, palette); expect(Ok, stat); - palette->Entries[1] = 0; - palette->Entries[3] = 0xdeadbeef; + entries[1] = 0; + entries[3] = 0xdeadbeef; stat = GdipGetImagePaletteSize((GpImage*)bitmap, &size); expect(Ok, stat); @@ -1939,8 +1941,8 @@ expect(Ok, stat); expect(12345, palette->Flags); expect(3, palette->Count); - expect(0xffcccccc, palette->Entries[1]); - expect(0xdeadbeef, palette->Entries[3]); + expect(0xffcccccc, entries[1]); + expect(0xdeadbeef, entries[3]); /* test count > 256 */ palette->Count = 257; diff -Nru wine1.3-1.3.30/dlls/hlink/browse_ctx.c wine1.3-1.3.31/dlls/hlink/browse_ctx.c --- wine1.3-1.3.30/dlls/hlink/browse_ctx.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/hlink/browse_ctx.c 2011-10-21 18:38:36.000000000 +0000 @@ -24,8 +24,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(hlink); -static const IHlinkBrowseContextVtbl hlvt; - typedef struct { IHlinkBrowseContext IHlinkBrowseContext_iface; @@ -39,29 +37,6 @@ return CONTAINING_RECORD(iface, HlinkBCImpl, IHlinkBrowseContext_iface); } - -HRESULT WINAPI HLinkBrowseContext_Constructor(IUnknown *pUnkOuter, REFIID riid, - LPVOID *ppv) -{ - HlinkBCImpl * hl; - - TRACE("unkOut=%p riid=%s\n", pUnkOuter, debugstr_guid(riid)); - *ppv = NULL; - - if (pUnkOuter) - return CLASS_E_NOAGGREGATION; - - hl = heap_alloc_zero(sizeof(HlinkBCImpl)); - if (!hl) - return E_OUTOFMEMORY; - - hl->ref = 1; - hl->IHlinkBrowseContext_iface.lpVtbl = &hlvt; - - *ppv = hl; - return S_OK; -} - static HRESULT WINAPI IHlinkBC_fnQueryInterface( IHlinkBrowseContext *iface, REFIID riid, LPVOID* ppvObj) { @@ -297,3 +272,24 @@ IHlinkBC_Clone, IHlinkBC_Close }; + +HRESULT HLinkBrowseContext_Constructor(IUnknown *pUnkOuter, REFIID riid, void **ppv) +{ + HlinkBCImpl * hl; + + TRACE("unkOut=%p riid=%s\n", pUnkOuter, debugstr_guid(riid)); + *ppv = NULL; + + if (pUnkOuter) + return CLASS_E_NOAGGREGATION; + + hl = heap_alloc_zero(sizeof(HlinkBCImpl)); + if (!hl) + return E_OUTOFMEMORY; + + hl->ref = 1; + hl->IHlinkBrowseContext_iface.lpVtbl = &hlvt; + + *ppv = hl; + return S_OK; +} diff -Nru wine1.3-1.3.30/dlls/hlink/hlink_main.c wine1.3-1.3.31/dlls/hlink/hlink_main.c --- wine1.3-1.3.30/dlls/hlink/hlink_main.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/hlink/hlink_main.c 2011-10-21 18:38:36.000000000 +0000 @@ -30,7 +30,7 @@ static HINSTANCE instance; -typedef HRESULT (CALLBACK *LPFNCREATEINSTANCE)(IUnknown*, REFIID, LPVOID*); +typedef HRESULT (*LPFNCREATEINSTANCE)(IUnknown*, REFIID, LPVOID*); typedef struct { diff -Nru wine1.3-1.3.30/dlls/hlink/hlink_private.h wine1.3-1.3.31/dlls/hlink/hlink_private.h --- wine1.3-1.3.30/dlls/hlink/hlink_private.h 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/hlink/hlink_private.h 2011-10-21 18:38:36.000000000 +0000 @@ -29,8 +29,8 @@ #include "wine/unicode.h" -extern HRESULT WINAPI HLink_Constructor(IUnknown*,REFIID,void**) DECLSPEC_HIDDEN; -extern HRESULT WINAPI HLinkBrowseContext_Constructor(IUnknown*,REFIID,void**) DECLSPEC_HIDDEN; +extern HRESULT HLink_Constructor(IUnknown*,REFIID,void**) DECLSPEC_HIDDEN; +extern HRESULT HLinkBrowseContext_Constructor(IUnknown*,REFIID,void**) DECLSPEC_HIDDEN; static inline void *heap_alloc(size_t len) { diff -Nru wine1.3-1.3.30/dlls/hlink/link.c wine1.3-1.3.31/dlls/hlink/link.c --- wine1.3-1.3.30/dlls/hlink/link.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/hlink/link.c 2011-10-21 18:38:36.000000000 +0000 @@ -37,10 +37,6 @@ /* known flags */ #define HLINK_SAVE_ALL (HLINK_SAVE_TARGET_FRAME_PRESENT|HLINK_SAVE_FRIENDLY_PRESENT|HLINK_SAVE_LOCATION_PRESENT|0x04|HLINK_SAVE_MONIKER_IS_ABSOLUTE|HLINK_SAVE_MONIKER_PRESENT) -static const IHlinkVtbl hlvt; -static const IPersistStreamVtbl psvt; -static const IDataObjectVtbl dovt; - typedef struct { IHlink IHlink_iface; @@ -110,30 +106,6 @@ return S_OK; } -HRESULT WINAPI HLink_Constructor(IUnknown *pUnkOuter, REFIID riid, - LPVOID *ppv) -{ - HlinkImpl * hl; - - TRACE("unkOut=%p riid=%s\n", pUnkOuter, debugstr_guid(riid)); - *ppv = NULL; - - if (pUnkOuter) - return CLASS_E_NOAGGREGATION; - - hl = heap_alloc_zero(sizeof(HlinkImpl)); - if (!hl) - return E_OUTOFMEMORY; - - hl->ref = 1; - hl->IHlink_iface.lpVtbl = &hlvt; - hl->IPersistStream_iface.lpVtbl = &psvt; - hl->IDataObject_iface.lpVtbl = &dovt; - - *ppv = hl; - return S_OK; -} - static HRESULT WINAPI IHlink_fnQueryInterface(IHlink* iface, REFIID riid, LPVOID *ppvObj) { @@ -465,7 +437,15 @@ HlinkImpl *This = impl_from_IHlink(iface); TRACE("(%p)->(%p)\n", This, ppwzTargetFrameName); + + if(!This->TargetFrameName) { + *ppwzTargetFrameName = NULL; + return S_FALSE; + } + *ppwzTargetFrameName = hlink_co_strdupW( This->TargetFrameName ); + if(!*ppwzTargetFrameName) + return E_OUTOFMEMORY; return S_OK; } @@ -942,3 +922,26 @@ IPersistStream_fnSave, IPersistStream_fnGetSizeMax, }; + +HRESULT HLink_Constructor(IUnknown *pUnkOuter, REFIID riid, void **ppv) +{ + HlinkImpl * hl; + + TRACE("unkOut=%p riid=%s\n", pUnkOuter, debugstr_guid(riid)); + *ppv = NULL; + + if (pUnkOuter) + return CLASS_E_NOAGGREGATION; + + hl = heap_alloc_zero(sizeof(HlinkImpl)); + if (!hl) + return E_OUTOFMEMORY; + + hl->ref = 1; + hl->IHlink_iface.lpVtbl = &hlvt; + hl->IPersistStream_iface.lpVtbl = &psvt; + hl->IDataObject_iface.lpVtbl = &dovt; + + *ppv = hl; + return S_OK; +} diff -Nru wine1.3-1.3.30/dlls/hlink/tests/hlink.c wine1.3-1.3.31/dlls/hlink/tests/hlink.c --- wine1.3-1.3.30/dlls/hlink/tests/hlink.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/hlink/tests/hlink.c 2011-10-21 18:38:36.000000000 +0000 @@ -1821,6 +1821,43 @@ IMoniker_Release(dummy); } +static void test_StdHlink(void) +{ + IHlink *hlink; + WCHAR *str; + HRESULT hres; + + static const WCHAR testW[] = {'t','e','s','t',0}; + + hres = CoCreateInstance(&CLSID_StdHlink, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER, + &IID_IHlink, (void**)&hlink); + ok(hres == S_OK, "CoCreateInstance failed: %08x\n", hres); + + str = (void*)0xdeadbeef; + hres = IHlink_GetTargetFrameName(hlink, &str); + ok(hres == S_FALSE, "GetTargetFrameName failed: %08x\n", hres); + ok(!str, "str = %s\n", wine_dbgstr_w(str)); + + hres = IHlink_SetTargetFrameName(hlink, testW); + ok(hres == S_OK, "SetTargetFrameName failed: %08x\n", hres); + + str = (void*)0xdeadbeef; + hres = IHlink_GetTargetFrameName(hlink, &str); + ok(hres == S_OK, "GetTargetFrameName failed: %08x\n", hres); + ok(!lstrcmpW(str, testW), "str = %s\n", wine_dbgstr_w(str)); + CoTaskMemFree(str); + + hres = IHlink_SetTargetFrameName(hlink, NULL); + ok(hres == S_OK, "SetTargetFrameName failed: %08x\n", hres); + + str = (void*)0xdeadbeef; + hres = IHlink_GetTargetFrameName(hlink, &str); + ok(hres == S_FALSE, "GetTargetFrameName failed: %08x\n", hres); + ok(!str, "str = %s\n", wine_dbgstr_w(str)); + + IHlink_Release(hlink); +} + START_TEST(hlink) { CoInitialize(NULL); @@ -1838,6 +1875,7 @@ test_HashLink(); test_HlinkSite(); test_HlinkClone(); + test_StdHlink(); CoUninitialize(); } diff -Nru wine1.3-1.3.30/dlls/ieframe/iexplore.c wine1.3-1.3.31/dlls/ieframe/iexplore.c --- wine1.3-1.3.30/dlls/ieframe/iexplore.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ieframe/iexplore.c 2011-10-21 18:38:36.000000000 +0000 @@ -826,7 +826,7 @@ PostQuitMessage(0); } -static BOOL create_ie_window(LPCSTR cmdline) +static BOOL create_ie_window(const WCHAR *cmdline) { InternetExplorer *ie; HRESULT hres; @@ -842,25 +842,24 @@ IWebBrowser2_GoHome(&ie->IWebBrowser2_iface); }else { VARIANT var_url; - DWORD len; int cmdlen; + static const WCHAR nohomeW[] = {'-','n','o','h','o','m','e'}; + while(*cmdline == ' ' || *cmdline == '\t') cmdline++; - cmdlen = lstrlenA(cmdline); + cmdlen = strlenW(cmdline); if(cmdlen > 2 && cmdline[0] == '"' && cmdline[cmdlen-1] == '"') { cmdline++; cmdlen -= 2; } - if(cmdlen == 7 && !memcmp(cmdline, "-nohome", 7)) { + if(cmdlen == sizeof(nohomeW)/sizeof(*nohomeW) && !memcmp(cmdline, nohomeW, sizeof(nohomeW))) { ie->nohome = TRUE; }else { V_VT(&var_url) = VT_BSTR; - len = MultiByteToWideChar(CP_ACP, 0, cmdline, cmdlen, NULL, 0); - V_BSTR(&var_url) = SysAllocStringLen(NULL, len); - MultiByteToWideChar(CP_ACP, 0, cmdline, cmdlen, V_BSTR(&var_url), len); + V_BSTR(&var_url) = SysAllocStringLen(cmdline, cmdlen); /* navigate to the first page */ IWebBrowser2_Navigate2(&ie->IWebBrowser2_iface, &var_url, NULL, NULL, NULL, NULL); @@ -1020,12 +1019,14 @@ * * Only returns on error. */ -DWORD WINAPI IEWinMain(const char *szCommandLine, int nShowWindow) +DWORD WINAPI IEWinMain(const WCHAR *cmdline, int nShowWindow) { MSG msg; HRESULT hres; - TRACE("%s %d\n", debugstr_a(szCommandLine), nShowWindow); + static const WCHAR embeddingW[] = {'-','e','m','b','e','d','d','i','n','g',0}; + + TRACE("%s %d\n", debugstr_w(cmdline), nShowWindow); CoInitialize(NULL); @@ -1037,8 +1038,8 @@ init_dde(); - if(strcasecmp(szCommandLine, "-embedding")) { - if(!create_ie_window(szCommandLine)) { + if(strcmpiW(cmdline, embeddingW)) { + if(!create_ie_window(cmdline)) { CoUninitialize(); ExitProcess(1); } diff -Nru wine1.3-1.3.30/dlls/inetcpl.cpl/cpl_It.rc wine1.3-1.3.31/dlls/inetcpl.cpl/cpl_It.rc --- wine1.3-1.3.30/dlls/inetcpl.cpl/cpl_It.rc 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/inetcpl.cpl/cpl_It.rc 2011-10-21 18:38:36.000000000 +0000 @@ -1,7 +1,7 @@ /* * Italian resources for the Internet control panel applet * - * Copyright 2010 Luca Bennati 0) + if (cmp > 0) indexLow = i + 1; else indexHigh = i - 1; } - return impl; + return NULL; } /***************************************************************************** diff -Nru wine1.3-1.3.30/dlls/kernel32/kernel32.spec wine1.3-1.3.31/dlls/kernel32/kernel32.spec --- wine1.3-1.3.30/dlls/kernel32/kernel32.spec 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/kernel32/kernel32.spec 2011-10-21 18:38:36.000000000 +0000 @@ -133,6 +133,8 @@ # functions exported by name, ordinal doesn't matter +@ stdcall AcquireSRWLockExclusive(ptr) +@ stdcall AcquireSRWLockShared(ptr) @ stdcall ActivateActCtx(ptr ptr) @ stdcall AddAtomA(str) @ stdcall AddAtomW(wstr) @@ -593,6 +595,7 @@ @ stdcall GetPrivateProfileStructW(wstr wstr ptr long wstr) @ stdcall GetProcAddress(long str) @ stdcall GetProcessAffinityMask(long ptr ptr) +@ stdcall GetProcessDEPPolicy(long ptr ptr) @ stdcall GetProcessFlags(long) @ stdcall GetProcessHandleCount(long ptr) @ stdcall GetProcessHeap() @@ -653,6 +656,7 @@ @ stdcall GetThreadId(ptr) @ stdcall GetThreadIOPendingFlag(long ptr) @ stdcall GetThreadLocale() +@ stdcall GetThreadPreferredUILanguages(long ptr ptr ptr) @ stdcall GetThreadPriority(long) @ stdcall GetThreadPriorityBoost(long ptr) @ stdcall GetThreadSelectorEntry(long long ptr) @@ -732,6 +736,7 @@ @ stdcall IdnToNameprepUnicode(long wstr long ptr long) @ stdcall IdnToUnicode(long wstr long ptr long) @ stdcall InitAtomTable(long) +@ stdcall InitializeSRWLock(ptr) @ stdcall InitializeCriticalSection(ptr) @ stdcall InitializeCriticalSectionAndSpinCount(ptr long) @ stdcall InitializeCriticalSectionEx(ptr long long) @@ -994,6 +999,8 @@ @ stdcall ReleaseActCtx(ptr) @ stdcall ReleaseMutex(long) @ stdcall ReleaseSemaphore(long long ptr) +@ stdcall ReleaseSRWLockExclusive(ptr) +@ stdcall ReleaseSRWLockShared(ptr) @ stdcall RemoveDirectoryA(str) @ stdcall RemoveDirectoryW(wstr) # @ stub RemoveLocalAlternateComputerNameA diff -Nru wine1.3-1.3.30/dlls/kernel32/process.c wine1.3-1.3.31/dlls/kernel32/process.c --- wine1.3-1.3.30/dlls/kernel32/process.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/kernel32/process.c 2011-10-21 18:38:36.000000000 +0000 @@ -3842,3 +3842,14 @@ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); return FALSE; } + +/********************************************************************** + * GetProcessDEPPolicy (KERNEL32.@) + */ +BOOL WINAPI GetProcessDEPPolicy(HANDLE process, LPDWORD flags, PBOOL permanent) +{ + FIXME("(%p %p %p): stub\n", process, flags, permanent); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; + +} diff -Nru wine1.3-1.3.30/dlls/kernel32/tests/file.c wine1.3-1.3.31/dlls/kernel32/tests/file.c --- wine1.3-1.3.30/dlls/kernel32/tests/file.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/kernel32/tests/file.c 2011-10-21 18:38:36.000000000 +0000 @@ -1591,7 +1591,7 @@ static void test_LockFile(void) { - HANDLE handle; + HANDLE handle, handle2; DWORD written; OVERLAPPED overlapped; int limited_LockFile; @@ -1606,6 +1606,14 @@ ok(0,"couldn't create file \"%s\" (err=%d)\n",filename,GetLastError()); return; } + handle2 = CreateFileA( filename, GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, + OPEN_EXISTING, 0, 0 ); + if (handle2 == INVALID_HANDLE_VALUE) + { + ok( 0, "couldn't open file \"%s\" (err=%d)\n", filename, GetLastError() ); + goto cleanup; + } ok( WriteFile( handle, sillytext, strlen(sillytext), &written, NULL ), "write failed\n" ); ok( LockFile( handle, 0, 0, 0, 0 ), "LockFile failed\n" ); @@ -1656,6 +1664,22 @@ "UnlockFileEx 150,100 again succeeded\n" ); } + /* shared lock can overlap exclusive if handles are equal */ + S(U(overlapped)).Offset = 300; + ok( LockFileEx( handle, LOCKFILE_EXCLUSIVE_LOCK, 0, 100, 0, &overlapped ), + "LockFileEx exclusive 300,100 failed\n" ); + ok( !LockFileEx( handle2, LOCKFILE_FAIL_IMMEDIATELY, 0, 100, 0, &overlapped ), + "LockFileEx handle2 300,100 succeeded\n" ); + ret = LockFileEx( handle, LOCKFILE_FAIL_IMMEDIATELY, 0, 100, 0, &overlapped ); + ok( ret, "LockFileEx 300,100 failed\n" ); + ok( UnlockFileEx( handle, 0, 100, 0, &overlapped ), "UnlockFileEx 300,100 failed\n" ); + /* exclusive lock is removed first */ + ok( LockFileEx( handle2, LOCKFILE_FAIL_IMMEDIATELY, 0, 100, 0, &overlapped ), + "LockFileEx handle2 300,100 failed\n" ); + ok( UnlockFileEx( handle2, 0, 100, 0, &overlapped ), "UnlockFileEx 300,100 failed\n" ); + if (ret) + ok( UnlockFileEx( handle, 0, 100, 0, &overlapped ), "UnlockFileEx 300,100 failed\n" ); + ret = LockFile( handle, 0, 0x10000000, 0, 0xf0000000 ); if (ret) { @@ -1689,6 +1713,8 @@ ok( UnlockFile( handle, 100, 0, 0, 0 ), "UnlockFile 100,0 failed\n" ); + CloseHandle( handle2 ); +cleanup: CloseHandle( handle ); DeleteFileA( filename ); } diff -Nru wine1.3-1.3.30/dlls/kernel32/tests/pipe.c wine1.3-1.3.31/dlls/kernel32/tests/pipe.c --- wine1.3-1.3.30/dlls/kernel32/tests/pipe.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/kernel32/tests/pipe.c 2011-10-21 18:38:36.000000000 +0000 @@ -71,6 +71,19 @@ ok(hnp == INVALID_HANDLE_VALUE && GetLastError() == ERROR_INVALID_NAME, "CreateNamedPipe should fail if name doesn't start with \\\\.\\pipe\n"); + if (pipemode == PIPE_TYPE_BYTE) + { + /* Bad parameter checks */ + hnp = CreateNamedPipe(PIPENAME, PIPE_ACCESS_DUPLEX, PIPE_TYPE_BYTE | PIPE_READMODE_MESSAGE, + /* nMaxInstances */ 1, + /* nOutBufSize */ 1024, + /* nInBufSize */ 1024, + /* nDefaultWait */ NMPWAIT_USE_DEFAULT_WAIT, + /* lpSecurityAttrib */ NULL); + ok(hnp == INVALID_HANDLE_VALUE && GetLastError() == ERROR_INVALID_PARAMETER, + "CreateNamedPipe should fail with PIPE_TYPE_BYTE | PIPE_READMODE_MESSAGE\n"); + } + hnp = CreateNamedPipe(NULL, PIPE_ACCESS_DUPLEX, pipemode | PIPE_WAIT, 1, 1024, 1024, NMPWAIT_USE_DEFAULT_WAIT, NULL); diff -Nru wine1.3-1.3.30/dlls/kernel32/thread.c wine1.3-1.3.31/dlls/kernel32/thread.c --- wine1.3-1.3.30/dlls/kernel32/thread.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/kernel32/thread.c 2011-10-21 18:38:36.000000000 +0000 @@ -814,3 +814,54 @@ FIXME( "%u, %p, %p\n", flags, buffer, count ); return TRUE; } + +/*********************************************************************** + * GetThreadPreferredUILanguages (KERNEL32.@) + */ +BOOL WINAPI GetThreadPreferredUILanguages( DWORD flags, PULONG count, PCZZWSTR buffer, PULONG buffersize ) +{ + FIXME( "%u, %p, %p %p\n", flags, count, buffer, buffersize ); + *count = 0; + *buffersize = 0; + return TRUE; +} + +/*********************************************************************** + * InitializeSRWLock (KERNEL32.@) + */ +VOID WINAPI InitializeSRWLock( PSRWLOCK srwlock ) +{ + FIXME( "(%p): stub\n", srwlock ); +} + +/*********************************************************************** + * AcquireSRWLockExclusive (KERNEL32.@) + */ +VOID WINAPI AcquireSRWLockExclusive( PSRWLOCK srwlock ) +{ + FIXME( "(%p): stub\n", srwlock ); +} + +/*********************************************************************** + * ReleaseSRWLockExclusive (KERNEL32.@) + */ +VOID WINAPI ReleaseSRWLockExclusive( PSRWLOCK srwlock ) +{ + FIXME( "(%p): stub\n", srwlock ); +} + +/*********************************************************************** + * AcquireSRWLockShared (KERNEL32.@) + */ +VOID WINAPI AcquireSRWLockShared( PSRWLOCK srwlock ) +{ + FIXME( "(%p): stub\n", srwlock ); +} + +/*********************************************************************** + * ReleaseSRWLockShared (KERNEL32.@) + */ +VOID WINAPI ReleaseSRWLockShared( PSRWLOCK srwlock ) +{ + FIXME( "(%p): stub\n", srwlock ); +} diff -Nru wine1.3-1.3.30/dlls/mlang/tests/mlang.c wine1.3-1.3.31/dlls/mlang/tests/mlang.c --- wine1.3-1.3.30/dlls/mlang/tests/mlang.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/mlang/tests/mlang.c 2011-10-21 18:38:36.000000000 +0000 @@ -1202,22 +1202,26 @@ ok(!lstrcmpA(rfc1766A, info_table[i].rfc1766), "#%02d: got '%s' (expected '%s')\n", i, rfc1766A, info_table[i].rfc1766); - /* Some IE versions truncate an oversized name one character to short */ - lstrcpyW(short_broken_name, info_table[i].broken_name); - short_broken_name[MAX_LOCALE_NAME - 2] = '\0'; + /* Some IE versions truncate an oversized name one character too short */ + if (info_table[i].broken_name) { + lstrcpyW(short_broken_name, info_table[i].broken_name); + short_broken_name[MAX_LOCALE_NAME - 2] = 0; + } if (info_table[i].todo & TODO_NAME) { todo_wine ok( (!lstrcmpW(prfc->wszLocaleName, info_table[i].localename)) || + (info_table[i].broken_name && ( broken(!lstrcmpW(prfc->wszLocaleName, info_table[i].broken_name)) || /* IE < 6.0 */ - broken(!lstrcmpW(prfc->wszLocaleName, short_broken_name)), + broken(!lstrcmpW(prfc->wszLocaleName, short_broken_name)))), "#%02d: got %s (expected %s)\n", i, wine_dbgstr_w(prfc->wszLocaleName), wine_dbgstr_w(info_table[i].localename)); } else ok( (!lstrcmpW(prfc->wszLocaleName, info_table[i].localename)) || + (info_table[i].broken_name && ( broken(!lstrcmpW(prfc->wszLocaleName, info_table[i].broken_name)) || /* IE < 6.0 */ - broken(!lstrcmpW(prfc->wszLocaleName, short_broken_name)), + broken(!lstrcmpW(prfc->wszLocaleName, short_broken_name)))), "#%02d: got %s (expected %s)\n", i, wine_dbgstr_w(prfc->wszLocaleName), wine_dbgstr_w(info_table[i].localename)); diff -Nru wine1.3-1.3.30/dlls/mmcndmgr/Makefile.in wine1.3-1.3.31/dlls/mmcndmgr/Makefile.in --- wine1.3-1.3.30/dlls/mmcndmgr/Makefile.in 1970-01-01 00:00:00.000000000 +0000 +++ wine1.3-1.3.31/dlls/mmcndmgr/Makefile.in 2011-10-21 18:38:36.000000000 +0000 @@ -0,0 +1,9 @@ +MODULE = mmcndmgr.dll +IMPORTS = uuid oleaut32 ole32 user32 + +C_SRCS = \ + mmcndmgr.c + +IDL_TLB_SRCS = mmcndmgr.idl + +@MAKE_DLL_RULES@ diff -Nru wine1.3-1.3.30/dlls/mmcndmgr/mmcndmgr.c wine1.3-1.3.31/dlls/mmcndmgr/mmcndmgr.c --- wine1.3-1.3.30/dlls/mmcndmgr/mmcndmgr.c 1970-01-01 00:00:00.000000000 +0000 +++ wine1.3-1.3.31/dlls/mmcndmgr/mmcndmgr.c 2011-10-21 18:38:36.000000000 +0000 @@ -0,0 +1,78 @@ +/* + * + * Copyright 2011 Alistair Leslie-Hughes + * + * 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 + +#define COBJMACROS +#include "windef.h" +#include "winbase.h" +#include "winuser.h" +#include "ole2.h" +#include "rpcproxy.h" + +#include "wine/unicode.h" +#include "wine/debug.h" +#include "wine/library.h" + +#include "mmc.h" + +WINE_DEFAULT_DEBUG_CHANNEL(mmc); + +static HINSTANCE MMC_hInstance; + +HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) +{ + FIXME("(%s, %s, %p): stub\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv); + if(!ppv) + return E_INVALIDARG; + + return E_NOTIMPL; +} + +HRESULT WINAPI DllRegisterServer(void) +{ + return __wine_register_resources( MMC_hInstance ); +} + +HRESULT WINAPI DllUnregisterServer(void) +{ + return __wine_unregister_resources( MMC_hInstance ); +} + +HRESULT WINAPI DllCanUnloadNow(void) +{ + return S_FALSE; +} + +BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) +{ + TRACE("(%p, %d, %p)\n", hinstDLL, fdwReason, lpvReserved); + + switch (fdwReason) + { + case DLL_WINE_PREATTACH: + return FALSE; /* prefer native version */ + case DLL_PROCESS_ATTACH: + MMC_hInstance = hinstDLL; + break; + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +} diff -Nru wine1.3-1.3.30/dlls/mmcndmgr/mmcndmgr.idl wine1.3-1.3.31/dlls/mmcndmgr/mmcndmgr.idl --- wine1.3-1.3.30/dlls/mmcndmgr/mmcndmgr.idl 1970-01-01 00:00:00.000000000 +0000 +++ wine1.3-1.3.31/dlls/mmcndmgr/mmcndmgr.idl 2011-10-21 18:38:36.000000000 +0000 @@ -0,0 +1,20 @@ +/* + * + * Copyright 2011 Alistair Leslie-Hughes + * + * 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 "mmc.idl" diff -Nru wine1.3-1.3.30/dlls/mmcndmgr/mmcndmgr.spec wine1.3-1.3.31/dlls/mmcndmgr/mmcndmgr.spec --- wine1.3-1.3.30/dlls/mmcndmgr/mmcndmgr.spec 1970-01-01 00:00:00.000000000 +0000 +++ wine1.3-1.3.31/dlls/mmcndmgr/mmcndmgr.spec 2011-10-21 18:38:36.000000000 +0000 @@ -0,0 +1,7 @@ +@ stub CreateExecutivePlatform +@ stdcall -private DllCanUnloadNow() +@ stdcall -private DllGetClassObject(ptr ptr ptr) +@ stdcall -private DllRegisterServer() +@ stdcall -private DllUnregisterServer() +@ stub -arch=win32 _GetAllocCounters@0 +@ stub -arch=win64 GetAllocCounters diff -Nru wine1.3-1.3.30/dlls/mscoree/cordebug.c wine1.3-1.3.31/dlls/mscoree/cordebug.c --- wine1.3-1.3.30/dlls/mscoree/cordebug.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/mscoree/cordebug.c 2011-10-21 18:38:36.000000000 +0000 @@ -142,6 +142,10 @@ ICorDebugManagedCallback_AddRef(This->pCallback); } + else + { + WARN("Debugging without interface ICorDebugManagedCallback2 is currently not supported.\n"); + } return hr; } diff -Nru wine1.3-1.3.30/dlls/mscoree/Makefile.in wine1.3-1.3.31/dlls/mscoree/Makefile.in --- wine1.3-1.3.30/dlls/mscoree/Makefile.in 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/mscoree/Makefile.in 2011-10-21 18:38:36.000000000 +0000 @@ -10,4 +10,6 @@ metahost.c \ mscoree_main.c +IDL_R_SRCS = mscoree_classes.idl + @MAKE_DLL_RULES@ diff -Nru wine1.3-1.3.30/dlls/mscoree/mscoree_classes.idl wine1.3-1.3.31/dlls/mscoree/mscoree_classes.idl --- wine1.3-1.3.30/dlls/mscoree/mscoree_classes.idl 1970-01-01 00:00:00.000000000 +0000 +++ wine1.3-1.3.31/dlls/mscoree/mscoree_classes.idl 2011-10-21 18:38:36.000000000 +0000 @@ -0,0 +1,72 @@ +/* + * Copyright 2011 Alistair Leslie-Hughes + * + * 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 + */ + +[ + helpstring("Microsoft Common Language Runtime Host V2"), + threading(both), + progid("CLRMetaData.CLRRuntimeHost.1"), + vi_progid("CLRMetaData.CLRRuntimeHost"), + uuid(90F1A06E-7712-4762-86B5-7A5EBA6BDB01), +] +coclass ICLRRuntimeHost +{ +} + +[ + helpstring("Microsoft Common Language Runtime Host V2"), + threading(both), + progid("CLRMetaData.CLRRuntimeHost.2"), + vi_progid("CLRMetaData.CLRRuntimeHost"), + uuid(90F1A06E-7712-4762-86B5-7A5EBA6BDB02), +] +coclass CLRRuntimeHost +{ +} + +[ + helpstring("Microsoft Common Language Runtime Meta Data"), + threading(both), + progid("CLRMetaData.CorMetaDataDispenser.2"), + vi_progid("CLRMetaData.CorMetaDataDispenser"), + uuid(E5CB7A31-7512-11D2-89CE-0080C792E5D8), +] +coclass CorMetaDataDispenser +{ +} + +[ + helpstring("Microsoft Common Language Runtime Meta Data"), + threading(both), + progid("CLRMetaData.CorMetaDataDispenserRuntime.2"), + vi_progid("CLRMetaData.CorMetaDataDispenserRuntime"), + uuid(1EC2DE53-75CC-11d2-9775-00A0C9B4D50C), +] +coclass CorMetaDataDispenserRuntime +{ +} + +[ + helpstring("Microsoft Common Language Runtime Host"), + threading(both), + progid("CLRMetaData.CorRuntimeHost.2"), + vi_progid("CLRMetaData.CorRuntimeHost"), + uuid(CB2F6723-AB3A-11d2-9C40-00C04FA30A3E), +] +coclass CorRuntimeHost +{ +} diff -Nru wine1.3-1.3.30/dlls/mscoree/mscoree_main.c wine1.3-1.3.31/dlls/mscoree/mscoree_main.c --- wine1.3-1.3.30/dlls/mscoree/mscoree_main.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/mscoree/mscoree_main.c 2011-10-21 18:38:36.000000000 +0000 @@ -44,11 +44,14 @@ #include "fusion.h" #include "wine/list.h" #include "mscoree_private.h" +#include "rpcproxy.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL( mscoree ); +static HINSTANCE MSCOREE_hInstance; + char *WtoA(LPCWSTR wstr) { int length; @@ -116,6 +119,8 @@ { TRACE("(%p, %d, %p)\n", hinstDLL, fdwReason, lpvReserved); + MSCOREE_hInstance = hinstDLL; + switch (fdwReason) { case DLL_WINE_PREATTACH: @@ -508,14 +513,12 @@ HRESULT WINAPI DllRegisterServer(void) { - FIXME("\n"); - return S_OK; + return __wine_register_resources( MSCOREE_hInstance ); } HRESULT WINAPI DllUnregisterServer(void) { - FIXME("\n"); - return S_OK; + return __wine_unregister_resources( MSCOREE_hInstance ); } HRESULT WINAPI DllCanUnloadNow(VOID) diff -Nru wine1.3-1.3.30/dlls/mshtml/htmldoc.c wine1.3-1.3.31/dlls/mshtml/htmldoc.c --- wine1.3-1.3.30/dlls/mshtml/htmldoc.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/mshtml/htmldoc.c 2011-10-21 18:38:36.000000000 +0000 @@ -1297,8 +1297,38 @@ IHTMLElement **elementHit) { HTMLDocument *This = impl_from_IHTMLDocument2(iface); - FIXME("(%p)->(%d %d %p)\n", This, x, y, elementHit); - return E_NOTIMPL; + nsIDOMNSDocument *nsdoc; + nsIDOMElement *nselem; + HTMLDOMNode *node; + nsresult nsres; + HRESULT hres; + + TRACE("(%p)->(%d %d %p)\n", This, x, y, elementHit); + + nsres = nsIDOMHTMLDocument_QueryInterface(This->doc_node->nsdoc, &IID_nsIDOMNSDocument, (void**)&nsdoc); + if(NS_FAILED(nsres)) { + ERR("Could not get nsIDOMNSDocument iface: %08x\n", nsres); + return E_FAIL; + } + + nsres = nsIDOMNSDocument_ElementFromPoint(nsdoc, x, y, &nselem); + nsIDOMNSDocument_Release(nsdoc); + if(NS_FAILED(nsres)) { + ERR("ElementFromPoint failed: %08x\n", nsres); + return E_FAIL; + } + + if(!nselem) { + *elementHit = NULL; + return S_OK; + } + + hres = get_node(This->doc_node, (nsIDOMNode*)nselem, TRUE, &node); + nsIDOMElement_Release(nselem); + if(FAILED(hres)) + return hres; + + return IHTMLDOMNode_QueryInterface(&node->IHTMLDOMNode_iface, &IID_IHTMLElement, (void**)elementHit); } static HRESULT WINAPI HTMLDocument_get_parentWindow(IHTMLDocument2 *iface, IHTMLWindow2 **p) @@ -2377,11 +2407,11 @@ doc->usermode = UNKNOWN_USERMODE; - doc->nscontainer = NSContainer_Create(doc, NULL); - if(!doc->nscontainer) { + hres = create_nscontainer(doc, NULL, &doc->nscontainer); + if(FAILED(hres)) { ERR("Failed to init Gecko, returning CLASS_E_CLASSNOTAVAILABLE\n"); htmldoc_release(&doc->basedoc); - return CLASS_E_CLASSNOTAVAILABLE; + return hres; } hres = htmldoc_query_interface(&doc->basedoc, riid, ppvObject); diff -Nru wine1.3-1.3.30/dlls/mshtml/htmlelemcol.c wine1.3-1.3.31/dlls/mshtml/htmlelemcol.c --- wine1.3-1.3.30/dlls/mshtml/htmlelemcol.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/mshtml/htmlelemcol.c 2011-10-21 18:38:36.000000000 +0000 @@ -61,7 +61,7 @@ { if(buf->len == buf->size) { buf->size <<= 1; - buf->buf = heap_realloc(buf->buf, buf->size*sizeof(HTMLElement**)); + buf->buf = heap_realloc(buf->buf, buf->size*sizeof(HTMLElement*)); } buf->buf[buf->len++] = elem; @@ -73,7 +73,7 @@ heap_free(buf->buf); buf->buf = NULL; }else if(buf->size > buf->len) { - buf->buf = heap_realloc(buf->buf, buf->len*sizeof(HTMLElement**)); + buf->buf = heap_realloc(buf->buf, buf->len*sizeof(HTMLElement*)); } buf->size = buf->len; @@ -530,7 +530,7 @@ { elem_vector_t buf = {NULL, 0, 8}; - buf.buf = heap_alloc(buf.size*sizeof(HTMLElement**)); + buf.buf = heap_alloc(buf.size*sizeof(HTMLElement*)); if(include_root) elem_vector_add(&buf, elem_from_HTMLDOMNode(node)); diff -Nru wine1.3-1.3.30/dlls/mshtml/htmlnode.c wine1.3-1.3.31/dlls/mshtml/htmlnode.c --- wine1.3-1.3.30/dlls/mshtml/htmlnode.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/mshtml/htmlnode.c 2011-10-21 18:38:36.000000000 +0000 @@ -580,8 +580,37 @@ IHTMLDOMNode *oldChild, IHTMLDOMNode **node) { HTMLDOMNode *This = impl_from_IHTMLDOMNode(iface); - FIXME("(%p)->(%p %p %p)\n", This, newChild, oldChild, node); - return E_NOTIMPL; + HTMLDOMNode *node_new; + HTMLDOMNode *node_old; + nsIDOMNode *nsnode; + nsresult nsres; + HRESULT hres; + + TRACE("(%p)->(%p %p %p)\n", This, newChild, oldChild, node); + + node_new = get_node_obj(This->doc, (IUnknown*)newChild); + if(!node_new) + return E_FAIL; + + node_old = get_node_obj(This->doc, (IUnknown*)oldChild); + if(!node_old) + return E_FAIL; + + nsres = nsIDOMNode_ReplaceChild(This->nsnode, node_new->nsnode, node_old->nsnode, &nsnode); + if(NS_FAILED(nsres)) { + return E_FAIL; + } + + nsnode = node_new->nsnode; + + hres = get_node(This->doc, nsnode, TRUE, &node_new); + nsIDOMNode_Release(nsnode); + if(FAILED(hres)) + return hres; + + *node = &node_new->IHTMLDOMNode_iface; + IHTMLDOMNode_AddRef(*node); + return S_OK; } static HRESULT WINAPI HTMLDOMNode_cloneNode(IHTMLDOMNode *iface, VARIANT_BOOL fDeep, diff -Nru wine1.3-1.3.30/dlls/mshtml/htmlwindow.c wine1.3-1.3.31/dlls/mshtml/htmlwindow.c --- wine1.3-1.3.30/dlls/mshtml/htmlwindow.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/mshtml/htmlwindow.c 2011-10-21 18:38:36.000000000 +0000 @@ -164,6 +164,9 @@ }else if(IsEqualGUID(&IID_IHTMLWindow4, riid)) { TRACE("(%p)->(IID_IHTMLWindow4 %p)\n", This, ppv); *ppv = &This->IHTMLWindow4_iface; + }else if(IsEqualGUID(&IID_IHTMLWindow6, riid)) { + TRACE("(%p)->(IID_IHTMLWindow6 %p)\n", This, ppv); + *ppv = &This->IHTMLWindow6_iface; }else if(IsEqualGUID(&IID_IHTMLPrivateWindow, riid)) { TRACE("(%p)->(IID_IHTMLPrivateWindow %p)\n", This, ppv); *ppv = &This->IHTMLPrivateWindow_iface; @@ -1622,6 +1625,173 @@ HTMLWindow4_get_frameElement }; +static inline HTMLWindow *impl_from_IHTMLWindow6(IHTMLWindow6 *iface) +{ + return CONTAINING_RECORD(iface, HTMLWindow, IHTMLWindow6_iface); +} + +static HRESULT WINAPI HTMLWindow6_QueryInterface(IHTMLWindow6 *iface, REFIID riid, void **ppv) +{ + HTMLWindow *This = impl_from_IHTMLWindow6(iface); + + return IHTMLWindow2_QueryInterface(&This->IHTMLWindow2_iface, riid, ppv); +} + +static ULONG WINAPI HTMLWindow6_AddRef(IHTMLWindow6 *iface) +{ + HTMLWindow *This = impl_from_IHTMLWindow6(iface); + + return IHTMLWindow2_AddRef(&This->IHTMLWindow2_iface); +} + +static ULONG WINAPI HTMLWindow6_Release(IHTMLWindow6 *iface) +{ + HTMLWindow *This = impl_from_IHTMLWindow6(iface); + + return IHTMLWindow2_Release(&This->IHTMLWindow2_iface); +} + +static HRESULT WINAPI HTMLWindow6_GetTypeInfoCount(IHTMLWindow6 *iface, UINT *pctinfo) +{ + HTMLWindow *This = impl_from_IHTMLWindow6(iface); + + return IDispatchEx_GetTypeInfoCount(&This->IDispatchEx_iface, pctinfo); +} + +static HRESULT WINAPI HTMLWindow6_GetTypeInfo(IHTMLWindow6 *iface, UINT iTInfo, + LCID lcid, ITypeInfo **ppTInfo) +{ + HTMLWindow *This = impl_from_IHTMLWindow6(iface); + + return IDispatchEx_GetTypeInfo(&This->IDispatchEx_iface, iTInfo, lcid, ppTInfo); +} + +static HRESULT WINAPI HTMLWindow6_GetIDsOfNames(IHTMLWindow6 *iface, REFIID riid, + LPOLESTR *rgszNames, UINT cNames, + LCID lcid, DISPID *rgDispId) +{ + HTMLWindow *This = impl_from_IHTMLWindow6(iface); + + return IDispatchEx_GetIDsOfNames(&This->IDispatchEx_iface, riid, rgszNames, cNames, lcid, + rgDispId); +} + +static HRESULT WINAPI HTMLWindow6_Invoke(IHTMLWindow6 *iface, DISPID dispIdMember, + REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, + VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) +{ + HTMLWindow *This = impl_from_IHTMLWindow6(iface); + + return IDispatchEx_Invoke(&This->IDispatchEx_iface, dispIdMember, riid, lcid, wFlags, + pDispParams, pVarResult, pExcepInfo, puArgErr); +} + +static HRESULT WINAPI HTMLWindow6_put_XDomainRequest(IHTMLWindow6 *iface, VARIANT v) +{ + HTMLWindow *This = impl_from_IHTMLWindow6(iface); + FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLWindow6_get_XDomainRequest(IHTMLWindow6 *iface, VARIANT *p) +{ + HTMLWindow *This = impl_from_IHTMLWindow6(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLWindow6_get_sessionStorage(IHTMLWindow6 *iface, IHTMLStorage **p) +{ + HTMLWindow *This = impl_from_IHTMLWindow6(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLWindow6_get_localStorage(IHTMLWindow6 *iface, IHTMLStorage **p) +{ + HTMLWindow *This = impl_from_IHTMLWindow6(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLWindow6_put_onhashchange(IHTMLWindow6 *iface, VARIANT v) +{ + HTMLWindow *This = impl_from_IHTMLWindow6(iface); + FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLWindow6_get_onhashchange(IHTMLWindow6 *iface, VARIANT *p) +{ + HTMLWindow *This = impl_from_IHTMLWindow6(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLWindow6_get_maxConnectionsPerServer(IHTMLWindow6 *iface, LONG *p) +{ + HTMLWindow *This = impl_from_IHTMLWindow6(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLWindow6_postMessage(IHTMLWindow6 *iface, BSTR msg, VARIANT targetOrigin) +{ + HTMLWindow *This = impl_from_IHTMLWindow6(iface); + FIXME("(%p)->(%s %s)\n", This, debugstr_w(msg), debugstr_variant(&targetOrigin)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLWindow6_toStaticHTML(IHTMLWindow6 *iface, BSTR bstrHTML, BSTR *pbstrStaticHTML) +{ + HTMLWindow *This = impl_from_IHTMLWindow6(iface); + FIXME("(%p)->(%s %p)\n", This, debugstr_w(bstrHTML), pbstrStaticHTML); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLWindow6_put_onmessage(IHTMLWindow6 *iface, VARIANT v) +{ + HTMLWindow *This = impl_from_IHTMLWindow6(iface); + FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLWindow6_get_onmessage(IHTMLWindow6 *iface, VARIANT *p) +{ + HTMLWindow *This = impl_from_IHTMLWindow6(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLWindow6_msWriteProfilerMark(IHTMLWindow6 *iface, BSTR bstrProfilerMark) +{ + HTMLWindow *This = impl_from_IHTMLWindow6(iface); + FIXME("(%p)->(%s)\n", This, debugstr_w(bstrProfilerMark)); + return E_NOTIMPL; +} + +static const IHTMLWindow6Vtbl HTMLWindow6Vtbl = { + HTMLWindow6_QueryInterface, + HTMLWindow6_AddRef, + HTMLWindow6_Release, + HTMLWindow6_GetTypeInfoCount, + HTMLWindow6_GetTypeInfo, + HTMLWindow6_GetIDsOfNames, + HTMLWindow6_Invoke, + HTMLWindow6_put_XDomainRequest, + HTMLWindow6_get_XDomainRequest, + HTMLWindow6_get_sessionStorage, + HTMLWindow6_get_localStorage, + HTMLWindow6_put_onhashchange, + HTMLWindow6_get_onhashchange, + HTMLWindow6_get_maxConnectionsPerServer, + HTMLWindow6_postMessage, + HTMLWindow6_toStaticHTML, + HTMLWindow6_put_onmessage, + HTMLWindow6_get_onmessage, + HTMLWindow6_msWriteProfilerMark +}; + static inline HTMLWindow *impl_from_IHTMLPrivateWindow(IHTMLPrivateWindow *iface) { return CONTAINING_RECORD(iface, HTMLWindow, IHTMLPrivateWindow_iface); @@ -2307,6 +2477,7 @@ IHTMLWindow2_tid, IHTMLWindow3_tid, IHTMLWindow4_tid, + IHTMLWindow6_tid, 0 }; @@ -2335,6 +2506,7 @@ window->IHTMLWindow2_iface.lpVtbl = &HTMLWindow2Vtbl; window->IHTMLWindow3_iface.lpVtbl = &HTMLWindow3Vtbl; window->IHTMLWindow4_iface.lpVtbl = &HTMLWindow4Vtbl; + window->IHTMLWindow6_iface.lpVtbl = &HTMLWindow6Vtbl; window->IHTMLPrivateWindow_iface.lpVtbl = &HTMLPrivateWindowVtbl; window->IDispatchEx_iface.lpVtbl = &WindowDispExVtbl; window->IServiceProvider_iface.lpVtbl = &ServiceProviderVtbl; diff -Nru wine1.3-1.3.30/dlls/mshtml/mshtml_private.h wine1.3-1.3.31/dlls/mshtml/mshtml_private.h --- wine1.3-1.3.30/dlls/mshtml/mshtml_private.h 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/mshtml/mshtml_private.h 2011-10-21 18:38:36.000000000 +0000 @@ -172,6 +172,7 @@ XIID(IHTMLWindow2) \ XIID(IHTMLWindow3) \ XIID(IHTMLWindow4) \ + XIID(IHTMLWindow6) \ XIID(IOmNavigator) typedef enum { @@ -288,6 +289,7 @@ IHTMLWindow2 IHTMLWindow2_iface; IHTMLWindow3 IHTMLWindow3_iface; IHTMLWindow4 IHTMLWindow4_iface; + IHTMLWindow6 IHTMLWindow6_iface; IHTMLPrivateWindow IHTMLPrivateWindow_iface; IDispatchEx IDispatchEx_iface; IServiceProvider IServiceProvider_iface; @@ -641,7 +643,7 @@ void ConnectionPointContainer_Init(ConnectionPointContainer*,IUnknown*) DECLSPEC_HIDDEN; void ConnectionPointContainer_Destroy(ConnectionPointContainer*) DECLSPEC_HIDDEN; -NSContainer *NSContainer_Create(HTMLDocumentObj*,NSContainer*) DECLSPEC_HIDDEN; +HRESULT create_nscontainer(HTMLDocumentObj*,NSContainer*,NSContainer**) DECLSPEC_HIDDEN; void NSContainer_Release(NSContainer*) DECLSPEC_HIDDEN; nsresult create_chrome_window(nsIWebBrowserChrome*,nsIWebBrowserChrome**) DECLSPEC_HIDDEN; diff -Nru wine1.3-1.3.30/dlls/mshtml/nsembed.c wine1.3-1.3.31/dlls/mshtml/nsembed.c --- wine1.3-1.3.30/dlls/mshtml/nsembed.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/mshtml/nsembed.c 2011-10-21 18:38:36.000000000 +0000 @@ -1717,105 +1717,108 @@ nsresult create_chrome_window(nsIWebBrowserChrome *parent, nsIWebBrowserChrome **ret) { NSContainer *new_container; + HRESULT hres; if(parent->lpVtbl != &nsWebBrowserChromeVtbl) return NS_ERROR_UNEXPECTED; - new_container = NSContainer_Create(NULL, impl_from_nsIWebBrowserChrome(parent)); + hres = create_nscontainer(NULL, impl_from_nsIWebBrowserChrome(parent), &new_container); + if(FAILED(hres)) + return NS_ERROR_FAILURE; + *ret = &new_container->nsIWebBrowserChrome_iface; return NS_OK; } -NSContainer *NSContainer_Create(HTMLDocumentObj *doc, NSContainer *parent) +static HRESULT init_nscontainer(NSContainer *nscontainer) { nsIWebBrowserSetup *wbsetup; nsIScrollable *scrollable; - NSContainer *ret; nsresult nsres; - if(!load_gecko(TRUE)) - return NULL; - - ret = heap_alloc_zero(sizeof(NSContainer)); - - ret->nsIWebBrowserChrome_iface.lpVtbl = &nsWebBrowserChromeVtbl; - ret->nsIContextMenuListener_iface.lpVtbl = &nsContextMenuListenerVtbl; - ret->nsIURIContentListener_iface.lpVtbl = &nsURIContentListenerVtbl; - ret->nsIEmbeddingSiteWindow_iface.lpVtbl = &nsEmbeddingSiteWindowVtbl; - ret->nsITooltipListener_iface.lpVtbl = &nsTooltipListenerVtbl; - ret->nsIInterfaceRequestor_iface.lpVtbl = &nsInterfaceRequestorVtbl; - ret->nsISupportsWeakReference_iface.lpVtbl = &nsSupportsWeakReferenceVtbl; - - ret->doc = doc; - ret->ref = 1; - nsres = nsIComponentManager_CreateInstanceByContractID(pCompMgr, NS_WEBBROWSER_CONTRACTID, - NULL, &IID_nsIWebBrowser, (void**)&ret->webbrowser); + NULL, &IID_nsIWebBrowser, (void**)&nscontainer->webbrowser); if(NS_FAILED(nsres)) { ERR("Creating WebBrowser failed: %08x\n", nsres); - heap_free(ret); - return NULL; + return E_FAIL; } - if(parent) - nsIWebBrowserChrome_AddRef(&parent->nsIWebBrowserChrome_iface); - ret->parent = parent; - - nsres = nsIWebBrowser_SetContainerWindow(ret->webbrowser, &ret->nsIWebBrowserChrome_iface); - if(NS_FAILED(nsres)) + nsres = nsIWebBrowser_SetContainerWindow(nscontainer->webbrowser, &nscontainer->nsIWebBrowserChrome_iface); + if(NS_FAILED(nsres)) { ERR("SetContainerWindow failed: %08x\n", nsres); + return E_FAIL; + } - nsres = nsIWebBrowser_QueryInterface(ret->webbrowser, &IID_nsIBaseWindow, - (void**)&ret->window); - if(NS_FAILED(nsres)) + nsres = nsIWebBrowser_QueryInterface(nscontainer->webbrowser, &IID_nsIBaseWindow, + (void**)&nscontainer->window); + if(NS_FAILED(nsres)) { ERR("Could not get nsIBaseWindow interface: %08x\n", nsres); + return E_FAIL; + } - nsres = nsIWebBrowser_QueryInterface(ret->webbrowser, &IID_nsIWebBrowserSetup, + nsres = nsIWebBrowser_QueryInterface(nscontainer->webbrowser, &IID_nsIWebBrowserSetup, (void**)&wbsetup); if(NS_SUCCEEDED(nsres)) { nsres = nsIWebBrowserSetup_SetProperty(wbsetup, SETUP_IS_CHROME_WRAPPER, FALSE); nsIWebBrowserSetup_Release(wbsetup); - if(NS_FAILED(nsres)) + if(NS_FAILED(nsres)) { ERR("SetProperty(SETUP_IS_CHROME_WRAPPER) failed: %08x\n", nsres); + return E_FAIL; + } }else { ERR("Could not get nsIWebBrowserSetup interface\n"); + return E_FAIL; } - nsres = nsIWebBrowser_QueryInterface(ret->webbrowser, &IID_nsIWebNavigation, - (void**)&ret->navigation); - if(NS_FAILED(nsres)) + nsres = nsIWebBrowser_QueryInterface(nscontainer->webbrowser, &IID_nsIWebNavigation, + (void**)&nscontainer->navigation); + if(NS_FAILED(nsres)) { ERR("Could not get nsIWebNavigation interface: %08x\n", nsres); + return E_FAIL; + } - nsres = nsIWebBrowserFocus_QueryInterface(ret->webbrowser, &IID_nsIWebBrowserFocus, - (void**)&ret->focus); - if(NS_FAILED(nsres)) + nsres = nsIWebBrowserFocus_QueryInterface(nscontainer->webbrowser, &IID_nsIWebBrowserFocus, + (void**)&nscontainer->focus); + if(NS_FAILED(nsres)) { ERR("Could not get nsIWebBrowserFocus interface: %08x\n", nsres); + return E_FAIL; + } - if(!nscontainer_class) + if(!nscontainer_class) { register_nscontainer_class(); + if(!nscontainer_class) + return E_FAIL; + } - ret->hwnd = CreateWindowExW(0, wszNsContainer, NULL, + nscontainer->hwnd = CreateWindowExW(0, wszNsContainer, NULL, WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, 0, 0, 100, 100, - GetDesktopWindow(), NULL, hInst, ret); + GetDesktopWindow(), NULL, hInst, nscontainer); + if(!nscontainer->hwnd) { + WARN("Could not create window\n"); + return E_FAIL; + } - nsres = nsIBaseWindow_InitWindow(ret->window, ret->hwnd, NULL, 0, 0, 100, 100); + nsres = nsIBaseWindow_InitWindow(nscontainer->window, nscontainer->hwnd, NULL, 0, 0, 100, 100); if(NS_SUCCEEDED(nsres)) { - nsres = nsIBaseWindow_Create(ret->window); - if(NS_FAILED(nsres)) + nsres = nsIBaseWindow_Create(nscontainer->window); + if(NS_FAILED(nsres)) { WARN("Creating window failed: %08x\n", nsres); + return E_FAIL; + } - nsIBaseWindow_SetVisibility(ret->window, FALSE); - nsIBaseWindow_SetEnabled(ret->window, FALSE); + nsIBaseWindow_SetVisibility(nscontainer->window, FALSE); + nsIBaseWindow_SetEnabled(nscontainer->window, FALSE); }else { ERR("InitWindow failed: %08x\n", nsres); + return E_FAIL; } - nsres = nsIWebBrowser_SetParentURIContentListener(ret->webbrowser, - &ret->nsIURIContentListener_iface); + nsres = nsIWebBrowser_SetParentURIContentListener(nscontainer->webbrowser, + &nscontainer->nsIURIContentListener_iface); if(NS_FAILED(nsres)) ERR("SetParentURIContentListener failed: %08x\n", nsres); - nsres = nsIWebBrowser_QueryInterface(ret->webbrowser, &IID_nsIScrollable, (void**)&scrollable); + nsres = nsIWebBrowser_QueryInterface(nscontainer->webbrowser, &IID_nsIScrollable, (void**)&scrollable); if(NS_SUCCEEDED(nsres)) { nsres = nsIScrollable_SetDefaultScrollbarPreferences(scrollable, ScrollOrientation_Y, Scrollbar_Always); @@ -1832,7 +1835,42 @@ ERR("Could not get nsIScrollable: %08x\n", nsres); } - return ret; + return S_OK; +} + +HRESULT create_nscontainer(HTMLDocumentObj *doc, NSContainer *parent, NSContainer **_ret) +{ + NSContainer *ret; + HRESULT hres; + + if(!load_gecko(TRUE)) + return CLASS_E_CLASSNOTAVAILABLE; + + ret = heap_alloc_zero(sizeof(NSContainer)); + if(!ret) + return E_OUTOFMEMORY; + + ret->nsIWebBrowserChrome_iface.lpVtbl = &nsWebBrowserChromeVtbl; + ret->nsIContextMenuListener_iface.lpVtbl = &nsContextMenuListenerVtbl; + ret->nsIURIContentListener_iface.lpVtbl = &nsURIContentListenerVtbl; + ret->nsIEmbeddingSiteWindow_iface.lpVtbl = &nsEmbeddingSiteWindowVtbl; + ret->nsITooltipListener_iface.lpVtbl = &nsTooltipListenerVtbl; + ret->nsIInterfaceRequestor_iface.lpVtbl = &nsInterfaceRequestorVtbl; + ret->nsISupportsWeakReference_iface.lpVtbl = &nsSupportsWeakReferenceVtbl; + + ret->doc = doc; + ret->ref = 1; + + if(parent) + nsIWebBrowserChrome_AddRef(&parent->nsIWebBrowserChrome_iface); + ret->parent = parent; + + hres = init_nscontainer(ret); + if(SUCCEEDED(hres)) + *_ret = ret; + else + nsIWebBrowserChrome_Release(&ret->nsIWebBrowserChrome_iface); + return hres; } void NSContainer_Release(NSContainer *This) diff -Nru wine1.3-1.3.30/dlls/mshtml/protocol.c wine1.3-1.3.31/dlls/mshtml/protocol.c --- wine1.3-1.3.30/dlls/mshtml/protocol.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/mshtml/protocol.c 2011-10-21 18:38:36.000000000 +0000 @@ -478,6 +478,9 @@ case QUERY_USES_HISTORYFOLDER: FIXME("Unsupported option QUERY_USES_HISTORYFOLDER\n"); return E_FAIL; + case QUERY_IS_CACHED_AND_USABLE_OFFLINE: + FIXME("Unsupported option QUERY_IS_CACHED_AND_USABLE_OFFLINE\n"); + return E_NOTIMPL; default: return E_FAIL; } diff -Nru wine1.3-1.3.30/dlls/mshtml/tests/dom.c wine1.3-1.3.31/dlls/mshtml/tests/dom.c --- wine1.3-1.3.30/dlls/mshtml/tests/dom.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/mshtml/tests/dom.c 2011-10-21 18:38:36.000000000 +0000 @@ -5639,6 +5639,41 @@ IHTMLElement_Release(body); } +static void test_replacechild_elems(IHTMLDocument2 *doc) +{ + IHTMLElement *body; + IHTMLDOMNode *node, *node2, *node3; + IHTMLDOMNode *nodeBody, *nodeNew; + HRESULT hres; + VARIANT var; + + body = doc_get_body(doc); + + node = test_create_text(doc, "insert"); + + V_VT(&var) = VT_NULL; + V_DISPATCH(&var) = NULL; + node2 = test_node_insertbefore((IUnknown*)body, node, &var); + IHTMLDOMNode_Release(node); + + test_elem_innertext(body, "insert"); + + node3 = test_create_text(doc, "replaced"); + + nodeBody = _get_node_iface(__LINE__, (IUnknown *)body); + + hres = IHTMLDOMNode_replaceChild(nodeBody, node3, node2, &nodeNew); + ok(hres == S_OK, "Expected S_OK, got 0x%08x\n", hres); + + test_elem_innertext(body, "replaced"); + + IHTMLDOMNode_Release(node2); + IHTMLDOMNode_Release(node3); + IHTMLDOMNode_Release(nodeBody); + + IHTMLElement_Release(body); +} + static void test_null_write(IHTMLDocument2 *doc) { HRESULT hres; @@ -6201,6 +6236,7 @@ run_domtest(cond_comment_str, test_cond_comment); run_domtest(frameset_str, test_frameset); run_domtest(emptydiv_str, test_docfrag); + run_domtest(doc_blank, test_replacechild_elems); CoUninitialize(); } diff -Nru wine1.3-1.3.30/dlls/mshtml/tests/htmldoc.c wine1.3-1.3.31/dlls/mshtml/tests/htmldoc.c --- wine1.3-1.3.30/dlls/mshtml/tests/htmldoc.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/mshtml/tests/htmldoc.c 2011-10-21 18:38:36.000000000 +0000 @@ -213,10 +213,10 @@ static const char html_page[] = "" "" -"test" +"
test
" ""; -static const char css_data[] = "body {color: red}"; +static const char css_data[] = "body {color: red; margin: 0}"; static const WCHAR http_urlW[] = {'h','t','t','p',':','/','/','w','w','w','.','w','i','n','e','h','q','.','o','r','g',0}; @@ -745,7 +745,6 @@ DWORD site_data = 0xdeadbeef; hres = IHlink_GetTargetFrameName(pihlNavigate, &frame_name); - todo_wine ok(hres == S_FALSE, "GetTargetFrameName failed: %08x\n", hres); ok(frame_name == NULL, "frame_name = %p\n", frame_name); @@ -4429,6 +4428,23 @@ IHTMLWindow2_Release(window); } +static void test_elem_from_point(IHTMLDocument2 *doc) +{ + IHTMLElement *elem; + BSTR tag; + HRESULT hres; + + elem = NULL; + hres = IHTMLDocument2_elementFromPoint(doc, 3, 3, &elem); + ok(hres == S_OK, "elementFromPoint failed: %08x\n", hres); + ok(elem != NULL, "elem == NULL\n"); + + hres = IHTMLElement_get_tagName(elem, &tag); + IHTMLElement_Release(elem); + ok(hres == S_OK, "get_tagName failed: %08x\n", hres); + ok(!strcmp_wa(tag, "DIV"), "tag = %s\n", wine_dbgstr_w(tag)); +} + static void test_clear(IHTMLDocument2 *doc) { HRESULT hres; @@ -5526,6 +5542,7 @@ set_custom_uihandler(doc, &CustomDocHostUIHandler); test_download(DWL_CSS|DWL_TRYCSS); test_GetCurMoniker((IUnknown*)doc, &Moniker, NULL); + test_elem_from_point(doc); } test_MSHTML_QueryStatus(doc, OLECMDF_SUPPORTED); diff -Nru wine1.3-1.3.30/dlls/mshtml/tests/protocol.c wine1.3-1.3.31/dlls/mshtml/tests/protocol.c --- wine1.3-1.3.30/dlls/mshtml/tests/protocol.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/mshtml/tests/protocol.c 2011-10-21 18:38:36.000000000 +0000 @@ -755,6 +755,7 @@ case QUERY_IS_SECURE: case QUERY_IS_SAFE: case QUERY_USES_HISTORYFOLDER: + case QUERY_IS_CACHED_AND_USABLE_OFFLINE: break; default: hres = IInternetProtocolInfo_QueryInfo(protocol_info, about_blank_url, i, 0, diff -Nru wine1.3-1.3.30/dlls/msi/action.c wine1.3-1.3.31/dlls/msi/action.c --- wine1.3-1.3.30/dlls/msi/action.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msi/action.c 2011-10-21 18:38:36.000000000 +0000 @@ -3611,9 +3611,26 @@ target = MSI_RecordGetString(row, 5); if (strchrW(target, '[')) { - deformat_string(package, target, &deformated); - IShellLinkW_SetPath(sl,deformated); - msi_free(deformated); + int len; + WCHAR *format_string, *p; + + if (!(p = strchrW( target, ']' ))) goto err; + len = p - target + 1; + format_string = msi_alloc( (len + 1) * sizeof(WCHAR) ); + memcpy( format_string, target, len * sizeof(WCHAR) ); + format_string[len] = 0; + deformat_string( package, format_string, &deformated ); + msi_free( format_string ); + + path = msi_alloc( (strlenW( deformated ) + strlenW( p + 1 ) + 2) * sizeof(WCHAR) ); + strcpyW( path, deformated ); + PathAddBackslashW( path ); + strcatW( path, p + 1 ); + TRACE("target path is %s\n", debugstr_w(path)); + + IShellLinkW_SetPath( sl, path ); + msi_free( deformated ); + msi_free( path ); } else { diff -Nru wine1.3-1.3.30/dlls/msi/dialog.c wine1.3-1.3.31/dlls/msi/dialog.c --- wine1.3-1.3.30/dlls/msi/dialog.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msi/dialog.c 2011-10-21 18:38:36.000000000 +0000 @@ -3787,7 +3787,7 @@ if( uiThreadId != GetCurrentThreadId() ) { if( handle ) - WaitForSingleObject( handle, INFINITE ); + MsgWaitForMultipleObjectsEx( 1, &handle, INFINITE, 0, 0 ); return; } diff -Nru wine1.3-1.3.30/dlls/msi/distinct.c wine1.3-1.3.31/dlls/msi/distinct.c --- wine1.3-1.3.30/dlls/msi/distinct.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msi/distinct.c 2011-10-21 18:38:36.000000000 +0000 @@ -268,15 +268,6 @@ return r; } -static UINT DISTINCT_sort(struct tagMSIVIEW *view, column_info *columns) -{ - MSIDISTINCTVIEW *dv = (MSIDISTINCTVIEW *)view; - - TRACE("%p %p\n", view, columns); - - return dv->table->ops->sort( dv->table, columns ); -} - static const MSIVIEWOPS distinct_ops = { DISTINCT_fetch_int, @@ -296,7 +287,7 @@ NULL, NULL, NULL, - DISTINCT_sort, + NULL, NULL, }; diff -Nru wine1.3-1.3.30/dlls/msi/files.c wine1.3-1.3.31/dlls/msi/files.c --- wine1.3-1.3.30/dlls/msi/files.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msi/files.c 2011-10-21 18:38:36.000000000 +0000 @@ -497,6 +497,7 @@ LIST_FOR_EACH_ENTRY( patch, &package->filepatches, MSIFILEPATCH, entry ) { MSIFILE *file = patch->File; + MSICOMPONENT *comp = file->Component; rc = msi_load_media_info( package, patch->Sequence, mi ); if (rc != ERROR_SUCCESS) @@ -504,7 +505,8 @@ ERR("Unable to load media info for %s (%u)\n", debugstr_w(file->File), rc); return ERROR_FUNCTION_FAILED; } - if (!file->Component->Enabled) continue; + comp->Action = msi_get_component_action( package, comp ); + if (!comp->Enabled || comp->Action != INSTALLSTATE_LOCAL) continue; if (!patch->IsApplied) { diff -Nru wine1.3-1.3.30/dlls/msi/join.c wine1.3-1.3.31/dlls/msi/join.c --- wine1.3-1.3.30/dlls/msi/join.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msi/join.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,493 +0,0 @@ -/* - * Implementation of the Microsoft Installer (msi.dll) - * - * Copyright 2006 Mike McCormack for CodeWeavers - * - * 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 - -#include "windef.h" -#include "winbase.h" -#include "winerror.h" -#include "msi.h" -#include "msiquery.h" -#include "objbase.h" -#include "objidl.h" -#include "msipriv.h" -#include "query.h" - -#include "wine/debug.h" -#include "wine/unicode.h" - -WINE_DEFAULT_DEBUG_CHANNEL(msidb); - -typedef struct tagJOINTABLE -{ - struct list entry; - MSIVIEW *view; - UINT columns; - UINT rows; - UINT next_rows; -} JOINTABLE; - -typedef struct tagMSIJOINVIEW -{ - MSIVIEW view; - MSIDATABASE *db; - struct list tables; - UINT columns; - UINT rows; -} MSIJOINVIEW; - -static UINT JOIN_fetch_int( struct tagMSIVIEW *view, UINT row, UINT col, UINT *val ) -{ - MSIJOINVIEW *jv = (MSIJOINVIEW*)view; - JOINTABLE *table; - UINT cols = 0; - UINT prev_rows = 1; - - if (col == 0 || col > jv->columns) - return ERROR_FUNCTION_FAILED; - - if (row >= jv->rows) - return ERROR_FUNCTION_FAILED; - - LIST_FOR_EACH_ENTRY(table, &jv->tables, JOINTABLE, entry) - { - if (col <= cols + table->columns) - { - row = (row % (jv->rows / table->next_rows)) / prev_rows; - col -= cols; - break; - } - - prev_rows *= table->rows; - cols += table->columns; - } - - return table->view->ops->fetch_int( table->view, row, col, val ); -} - -static UINT JOIN_fetch_stream( struct tagMSIVIEW *view, UINT row, UINT col, IStream **stm) -{ - MSIJOINVIEW *jv = (MSIJOINVIEW*)view; - JOINTABLE *table; - UINT cols = 0; - UINT prev_rows = 1; - - TRACE("%p %d %d %p\n", jv, row, col, stm ); - - if (col == 0 || col > jv->columns) - return ERROR_FUNCTION_FAILED; - - if (row >= jv->rows) - return ERROR_FUNCTION_FAILED; - - LIST_FOR_EACH_ENTRY(table, &jv->tables, JOINTABLE, entry) - { - if (col <= cols + table->columns) - { - row = (row % (jv->rows / table->next_rows)) / prev_rows; - col -= cols; - break; - } - - prev_rows *= table->rows; - cols += table->columns; - } - - return table->view->ops->fetch_stream( table->view, row, col, stm ); -} - -static UINT JOIN_get_row( struct tagMSIVIEW *view, UINT row, MSIRECORD **rec ) -{ - MSIJOINVIEW *jv = (MSIJOINVIEW*)view; - - TRACE("%p %d %p\n", jv, row, rec); - - return msi_view_get_row( jv->db, view, row, rec ); -} - -static UINT JOIN_execute( struct tagMSIVIEW *view, MSIRECORD *record ) -{ - MSIJOINVIEW *jv = (MSIJOINVIEW*)view; - JOINTABLE *table; - UINT r, rows; - - TRACE("%p %p\n", jv, record); - - LIST_FOR_EACH_ENTRY(table, &jv->tables, JOINTABLE, entry) - { - table->view->ops->execute(table->view, NULL); - - r = table->view->ops->get_dimensions(table->view, &table->rows, NULL); - if (r != ERROR_SUCCESS) - { - ERR("failed to get table dimensions\n"); - return r; - } - - /* each table must have at least one row */ - if (table->rows == 0) - { - jv->rows = 0; - return ERROR_SUCCESS; - } - - if (jv->rows == 0) - jv->rows = table->rows; - else - jv->rows *= table->rows; - } - - rows = jv->rows; - LIST_FOR_EACH_ENTRY(table, &jv->tables, JOINTABLE, entry) - { - rows /= table->rows; - table->next_rows = rows; - } - - return ERROR_SUCCESS; -} - -static UINT JOIN_close( struct tagMSIVIEW *view ) -{ - MSIJOINVIEW *jv = (MSIJOINVIEW*)view; - JOINTABLE *table; - - TRACE("%p\n", jv ); - - LIST_FOR_EACH_ENTRY(table, &jv->tables, JOINTABLE, entry) - { - table->view->ops->close(table->view); - } - - return ERROR_SUCCESS; -} - -static UINT JOIN_get_dimensions( struct tagMSIVIEW *view, UINT *rows, UINT *cols ) -{ - MSIJOINVIEW *jv = (MSIJOINVIEW*)view; - - TRACE("%p %p %p\n", jv, rows, cols ); - - if (cols) - *cols = jv->columns; - - if (rows) - *rows = jv->rows; - - return ERROR_SUCCESS; -} - -static UINT JOIN_get_column_info( struct tagMSIVIEW *view, UINT n, LPCWSTR *name, - UINT *type, BOOL *temporary, LPCWSTR *table_name ) -{ - MSIJOINVIEW *jv = (MSIJOINVIEW*)view; - JOINTABLE *table; - UINT cols = 0; - - TRACE("%p %d %p %p %p %p\n", jv, n, name, type, temporary, table_name ); - - if (n == 0 || n > jv->columns) - return ERROR_FUNCTION_FAILED; - - LIST_FOR_EACH_ENTRY(table, &jv->tables, JOINTABLE, entry) - { - if (n <= cols + table->columns) - return table->view->ops->get_column_info(table->view, n - cols, - name, type, temporary, - table_name); - cols += table->columns; - } - - return ERROR_FUNCTION_FAILED; -} - -static UINT join_find_row( MSIJOINVIEW *jv, MSIRECORD *rec, UINT *row ) -{ - LPCWSTR str; - UINT r, i, id, data; - - str = MSI_RecordGetString( rec, 1 ); - r = msi_string2idW( jv->db->strings, str, &id ); - if (r != ERROR_SUCCESS) - return r; - - for (i = 0; i < jv->rows; i++) - { - JOIN_fetch_int( &jv->view, i, 1, &data ); - - if (data == id) - { - *row = i; - return ERROR_SUCCESS; - } - } - - return ERROR_FUNCTION_FAILED; -} - -static UINT JOIN_set_row( struct tagMSIVIEW *view, UINT row, MSIRECORD *rec, UINT mask ) -{ - MSIJOINVIEW *jv = (MSIJOINVIEW*)view; - JOINTABLE *table; - UINT i, reduced_mask = 0, r = ERROR_SUCCESS, offset = 0, col_count; - MSIRECORD *reduced; - - TRACE("%p %d %p %u %08x\n", jv, row, rec, rec->count, mask ); - - if (mask >= 1 << jv->columns) - return ERROR_INVALID_PARAMETER; - - LIST_FOR_EACH_ENTRY(table, &jv->tables, JOINTABLE, entry) - { - r = table->view->ops->get_dimensions( table->view, NULL, &col_count ); - if (r != ERROR_SUCCESS) - return r; - - reduced = MSI_CreateRecord( col_count ); - if (!reduced) - return ERROR_FUNCTION_FAILED; - - for (i = 0; i < col_count; i++) - { - r = MSI_RecordCopyField( rec, i + offset + 1, reduced, i + 1 ); - if (r != ERROR_SUCCESS) - break; - } - - offset += col_count; - reduced_mask = mask >> (jv->columns - offset) & ((1 << col_count) - 1); - - if (r == ERROR_SUCCESS) - r = table->view->ops->set_row( table->view, row, reduced, reduced_mask ); - - msiobj_release( &reduced->hdr ); - } - - return r; -} - -static UINT join_modify_update( struct tagMSIVIEW *view, MSIRECORD *rec ) -{ - MSIJOINVIEW *jv = (MSIJOINVIEW *)view; - UINT r, row; - - r = join_find_row( jv, rec, &row ); - if (r != ERROR_SUCCESS) - return r; - - return JOIN_set_row( view, row, rec, (1 << jv->columns) - 1 ); -} - -static UINT JOIN_modify( struct tagMSIVIEW *view, MSIMODIFY mode, MSIRECORD *rec, UINT row ) -{ - UINT r; - - TRACE("%p %d %p %u\n", view, mode, rec, row); - - switch (mode) - { - case MSIMODIFY_UPDATE: - return join_modify_update( view, rec ); - - case MSIMODIFY_ASSIGN: - case MSIMODIFY_DELETE: - case MSIMODIFY_INSERT: - case MSIMODIFY_INSERT_TEMPORARY: - case MSIMODIFY_MERGE: - case MSIMODIFY_REPLACE: - case MSIMODIFY_SEEK: - case MSIMODIFY_VALIDATE: - case MSIMODIFY_VALIDATE_DELETE: - case MSIMODIFY_VALIDATE_FIELD: - case MSIMODIFY_VALIDATE_NEW: - r = ERROR_FUNCTION_FAILED; - break; - - case MSIMODIFY_REFRESH: - r = ERROR_CALL_NOT_IMPLEMENTED; - break; - - default: - WARN("%p %d %p %u - unknown mode\n", view, mode, rec, row ); - r = ERROR_INVALID_PARAMETER; - break; - } - - return r; -} - -static UINT JOIN_delete( struct tagMSIVIEW *view ) -{ - MSIJOINVIEW *jv = (MSIJOINVIEW*)view; - struct list *item, *cursor; - - TRACE("%p\n", jv ); - - LIST_FOR_EACH_SAFE(item, cursor, &jv->tables) - { - JOINTABLE* table = LIST_ENTRY(item, JOINTABLE, entry); - - list_remove(&table->entry); - table->view->ops->delete(table->view); - table->view = NULL; - msi_free(table); - } - - msi_free(jv); - - return ERROR_SUCCESS; -} - -static UINT JOIN_find_matching_rows( struct tagMSIVIEW *view, UINT col, - UINT val, UINT *row, MSIITERHANDLE *handle ) -{ - MSIJOINVIEW *jv = (MSIJOINVIEW*)view; - UINT i, row_value; - - TRACE("%p, %d, %u, %p\n", view, col, val, *handle); - - if (col == 0 || col > jv->columns) - return ERROR_INVALID_PARAMETER; - - for (i = PtrToUlong(*handle); i < jv->rows; i++) - { - if (view->ops->fetch_int( view, i, col, &row_value ) != ERROR_SUCCESS) - continue; - - if (row_value == val) - { - *row = i; - (*(UINT *)handle) = i + 1; - return ERROR_SUCCESS; - } - } - - return ERROR_NO_MORE_ITEMS; -} - -static UINT JOIN_sort(struct tagMSIVIEW *view, column_info *columns) -{ - MSIJOINVIEW *jv = (MSIJOINVIEW *)view; - JOINTABLE *table; - UINT r; - - TRACE("%p %p\n", view, columns); - - LIST_FOR_EACH_ENTRY(table, &jv->tables, JOINTABLE, entry) - { - r = table->view->ops->sort(table->view, columns); - if (r != ERROR_SUCCESS) - return r; - } - - return ERROR_SUCCESS; -} - -static const MSIVIEWOPS join_ops = -{ - JOIN_fetch_int, - JOIN_fetch_stream, - JOIN_get_row, - NULL, - NULL, - NULL, - JOIN_execute, - JOIN_close, - JOIN_get_dimensions, - JOIN_get_column_info, - JOIN_modify, - JOIN_delete, - JOIN_find_matching_rows, - NULL, - NULL, - NULL, - NULL, - JOIN_sort, - NULL, -}; - -UINT JOIN_CreateView( MSIDATABASE *db, MSIVIEW **view, LPWSTR tables ) -{ - MSIJOINVIEW *jv = NULL; - UINT r = ERROR_SUCCESS; - JOINTABLE *table; - LPWSTR ptr; - - TRACE("%p (%s)\n", jv, debugstr_w(tables) ); - - jv = msi_alloc_zero( sizeof *jv ); - if( !jv ) - return ERROR_FUNCTION_FAILED; - - /* fill the structure */ - jv->view.ops = &join_ops; - jv->db = db; - jv->columns = 0; - jv->rows = 0; - - list_init(&jv->tables); - - while (*tables) - { - if ((ptr = strchrW(tables, ' '))) - *ptr = '\0'; - - table = msi_alloc(sizeof(JOINTABLE)); - if (!table) - { - r = ERROR_OUTOFMEMORY; - goto end; - } - - r = TABLE_CreateView( db, tables, &table->view ); - if( r != ERROR_SUCCESS ) - { - WARN("can't create table: %s\n", debugstr_w(tables)); - msi_free(table); - r = ERROR_BAD_QUERY_SYNTAX; - goto end; - } - - r = table->view->ops->get_dimensions( table->view, NULL, - &table->columns ); - if( r != ERROR_SUCCESS ) - { - ERR("can't get table dimensions\n"); - goto end; - } - - jv->columns += table->columns; - - list_add_head( &jv->tables, &table->entry ); - - if (!ptr) - break; - - tables = ptr + 1; - } - - *view = &jv->view; - return ERROR_SUCCESS; - -end: - jv->view.ops->delete( &jv->view ); - - return r; -} diff -Nru wine1.3-1.3.30/dlls/msi/Makefile.in wine1.3-1.3.31/dlls/msi/Makefile.in --- wine1.3-1.3.30/dlls/msi/Makefile.in 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msi/Makefile.in 2011-10-21 18:38:36.000000000 +0000 @@ -24,7 +24,6 @@ handle.c \ insert.c \ install.c \ - join.c \ media.c \ msi.c \ msi_main.c \ diff -Nru wine1.3-1.3.30/dlls/msi/msi.c wine1.3-1.3.31/dlls/msi/msi.c --- wine1.3-1.3.30/dlls/msi/msi.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msi/msi.c 2011-10-21 18:38:36.000000000 +0000 @@ -350,7 +350,7 @@ static UINT MSI_ApplyPatchW(LPCWSTR szPatchPackage, LPCWSTR szProductCode, LPCWSTR szCommandLine) { - UINT r, i; + UINT i, r = ERROR_FUNCTION_FAILED; DWORD size; LPCWSTR cmd_ptr = szCommandLine; LPWSTR cmd, *codes = NULL; diff -Nru wine1.3-1.3.30/dlls/msi/query.h wine1.3-1.3.31/dlls/msi/query.h --- wine1.3-1.3.30/dlls/msi/query.h 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msi/query.h 2011-10-21 18:38:36.000000000 +0000 @@ -123,8 +123,6 @@ UINT DELETE_CreateView( MSIDATABASE *db, MSIVIEW **view, MSIVIEW *table ) DECLSPEC_HIDDEN; -UINT JOIN_CreateView( MSIDATABASE *db, MSIVIEW **view, LPWSTR tables ) DECLSPEC_HIDDEN; - UINT ALTER_CreateView( MSIDATABASE *db, MSIVIEW **view, LPCWSTR name, column_info *colinfo, int hold ) DECLSPEC_HIDDEN; UINT STREAMS_CreateView( MSIDATABASE *db, MSIVIEW **view ) DECLSPEC_HIDDEN; diff -Nru wine1.3-1.3.30/dlls/msi/select.c wine1.3-1.3.31/dlls/msi/select.c --- wine1.3-1.3.30/dlls/msi/select.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msi/select.c 2011-10-21 18:38:36.000000000 +0000 @@ -333,14 +333,6 @@ return sv->table->ops->find_matching_rows( sv->table, col, val, row, handle ); } -static UINT SELECT_sort(struct tagMSIVIEW *view, column_info *columns) -{ - MSISELECTVIEW *sv = (MSISELECTVIEW *)view; - - TRACE("%p %p\n", view, columns); - - return sv->table->ops->sort( sv->table, columns ); -} static const MSIVIEWOPS select_ops = { @@ -361,7 +353,7 @@ NULL, NULL, NULL, - SELECT_sort, + NULL, NULL, }; diff -Nru wine1.3-1.3.30/dlls/msi/sql.y wine1.3-1.3.31/dlls/msi/sql.y --- wine1.3-1.3.30/dlls/msi/sql.y 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msi/sql.y 2011-10-21 18:38:36.000000000 +0000 @@ -114,7 +114,7 @@ %type table tablelist id %type selcollist column column_and_type column_def table_def %type column_assignment update_assign_list constlist -%type query from fromtable selectfrom unorderedsel +%type query from selectfrom unorderdfrom %type oneupdate onedelete oneselect onequery onecreate oneinsert onealter onedrop %type expr val column_val const_val %type column_type data_type data_type_l data_count @@ -409,23 +409,6 @@ ; oneselect: - unorderedsel TK_ORDER TK_BY selcollist - { - UINT r; - - if( $4 ) - { - r = $1->ops->sort( $1, $4 ); - if ( r != ERROR_SUCCESS) - YYABORT; - } - - $$ = $1; - } - | unorderedsel - ; - -unorderedsel: TK_SELECT selectfrom { $$ = $2; @@ -477,45 +460,58 @@ ; from: - fromtable - | TK_FROM tablelist TK_WHERE expr + TK_FROM table { SQL_input* sql = (SQL_input*) info; - MSIVIEW* where = NULL; + MSIVIEW* table = NULL; UINT r; - r = WHERE_CreateView( sql->db, &where, $2, $4 ); - if( r != ERROR_SUCCESS ) + r = TABLE_CreateView( sql->db, $2, &table ); + if( r != ERROR_SUCCESS || !$$ ) YYABORT; - PARSER_BUBBLE_UP_VIEW( sql, $$, where ); + PARSER_BUBBLE_UP_VIEW( sql, $$, table ); } - ; + | unorderdfrom TK_ORDER TK_BY selcollist + { + UINT r; -fromtable: - TK_FROM table + if( $4 ) + { + r = $1->ops->sort( $1, $4 ); + if ( r != ERROR_SUCCESS) + YYABORT; + } + + $$ = $1; + } + | unorderdfrom + ; + +unorderdfrom: + TK_FROM tablelist { SQL_input* sql = (SQL_input*) info; - MSIVIEW* table = NULL; + MSIVIEW* where = NULL; UINT r; - r = TABLE_CreateView( sql->db, $2, &table ); - if( r != ERROR_SUCCESS || !$$ ) + r = WHERE_CreateView( sql->db, &where, $2, NULL ); + if( r != ERROR_SUCCESS ) YYABORT; - PARSER_BUBBLE_UP_VIEW( sql, $$, table ); + PARSER_BUBBLE_UP_VIEW( sql, $$, where ); } - | TK_FROM tablelist + | TK_FROM tablelist TK_WHERE expr { SQL_input* sql = (SQL_input*) info; - MSIVIEW* join = NULL; + MSIVIEW* where = NULL; UINT r; - r = JOIN_CreateView( sql->db, &join, $2 ); + r = WHERE_CreateView( sql->db, &where, $2, $4 ); if( r != ERROR_SUCCESS ) YYABORT; - PARSER_BUBBLE_UP_VIEW( sql, $$, join ); + PARSER_BUBBLE_UP_VIEW( sql, $$, where ); } ; diff -Nru wine1.3-1.3.30/dlls/msi/table.c wine1.3-1.3.31/dlls/msi/table.c --- wine1.3-1.3.30/dlls/msi/table.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msi/table.c 2011-10-21 18:38:36.000000000 +0000 @@ -62,13 +62,6 @@ MSICOLUMNHASHENTRY **hash_table; } MSICOLUMNINFO; -typedef struct tagMSIORDERINFO -{ - UINT *reorder; - UINT num_cols; - UINT cols[1]; -} MSIORDERINFO; - struct tagMSITABLE { BYTE **data; @@ -1019,7 +1012,6 @@ MSIDATABASE *db; MSITABLE *table; MSICOLUMNINFO *columns; - MSIORDERINFO *order; UINT num_cols; UINT row_size; WCHAR name[1]; @@ -1047,9 +1039,6 @@ return ERROR_FUNCTION_FAILED; } - if (tv->order) - row = tv->order->reorder[row]; - n = bytes_per_column( tv->db, &tv->columns[col - 1], LONG_STR_BYTES ); if (n != 2 && n != 3 && n != 4) { @@ -1226,9 +1215,6 @@ if (!tv->table) return ERROR_INVALID_PARAMETER; - if (tv->order) - row = tv->order->reorder[row]; - return msi_view_get_row(tv->db, view, row, rec); } @@ -1726,9 +1712,6 @@ if (row != new_row + 1) return ERROR_FUNCTION_FAILED; - if(tv->order) - new_row = tv->order->reorder[new_row]; - return TABLE_set_row(view, new_row, rec, (1 << tv->num_cols) - 1); } @@ -1853,13 +1836,6 @@ tv->table = NULL; tv->columns = NULL; - if (tv->order) - { - msi_free( tv->order->reorder ); - msi_free( tv->order ); - tv->order = NULL; - } - msi_free( tv ); return ERROR_SUCCESS; @@ -2072,161 +2048,6 @@ return r; } -static UINT order_add_column(struct tagMSIVIEW *view, MSIORDERINFO *order, LPCWSTR name) -{ - UINT n, r, count; - MSITABLEVIEW *tv = (MSITABLEVIEW*)view; - - r = TABLE_get_dimensions(view, NULL, &count); - if (r != ERROR_SUCCESS) - return r; - - if (order->num_cols >= count) - return ERROR_FUNCTION_FAILED; - - r = VIEW_find_column(view, name, tv->name, &n); - if (r != ERROR_SUCCESS) - return r; - - order->cols[order->num_cols] = n; - TRACE("Ordering by column %s (%d)\n", debugstr_w(name), n); - - order->num_cols++; - - return ERROR_SUCCESS; -} - -static UINT order_compare(struct tagMSIVIEW *view, MSIORDERINFO *order, - UINT a, UINT b, UINT *swap) -{ - UINT r, i, a_val = 0, b_val = 0; - - *swap = 0; - for (i = 0; i < order->num_cols; i++) - { - r = TABLE_fetch_int(view, a, order->cols[i], &a_val); - if (r != ERROR_SUCCESS) - return r; - - r = TABLE_fetch_int(view, b, order->cols[i], &b_val); - if (r != ERROR_SUCCESS) - return r; - - if (a_val != b_val) - { - if (a_val > b_val) - *swap = 1; - break; - } - } - - return ERROR_SUCCESS; -} - -static UINT order_mergesort(struct tagMSIVIEW *view, MSIORDERINFO *order, - UINT left, UINT right) -{ - UINT r, i, j, temp; - UINT swap = 0, center = (left + right) / 2; - UINT *array = order->reorder; - - if (left == right) - return ERROR_SUCCESS; - - /* sort the left half */ - r = order_mergesort(view, order, left, center); - if (r != ERROR_SUCCESS) - return r; - - /* sort the right half */ - r = order_mergesort(view, order, center + 1, right); - if (r != ERROR_SUCCESS) - return r; - - for (i = left, j = center + 1; (i <= center) && (j <= right); i++) - { - r = order_compare(view, order, array[i], array[j], &swap); - if (r != ERROR_SUCCESS) - return r; - - if (swap) - { - temp = array[j]; - memmove(&array[i + 1], &array[i], (j - i) * sizeof(UINT)); - array[i] = temp; - j++; - center++; - } - } - - return ERROR_SUCCESS; -} - -static UINT order_verify(struct tagMSIVIEW *view, MSIORDERINFO *order, UINT num_rows) -{ - UINT i, swap, r; - - for (i = 1; i < num_rows; i++) - { - r = order_compare(view, order, order->reorder[i - 1], - order->reorder[i], &swap); - if (r != ERROR_SUCCESS) - return r; - - if (!swap) - continue; - - ERR("Bad order! %d\n", i); - return ERROR_FUNCTION_FAILED; - } - - return ERROR_SUCCESS; -} - -static UINT TABLE_sort(struct tagMSIVIEW *view, column_info *columns) -{ - MSITABLEVIEW *tv = (MSITABLEVIEW *)view; - MSIORDERINFO *order; - column_info *ptr; - UINT r, i; - UINT rows, cols; - - TRACE("sorting table %s\n", debugstr_w(tv->name)); - - r = TABLE_get_dimensions(view, &rows, &cols); - if (r != ERROR_SUCCESS) - return r; - - if (rows == 0) - return ERROR_SUCCESS; - - order = msi_alloc_zero(sizeof(MSIORDERINFO) + sizeof(UINT) * cols); - if (!order) - return ERROR_OUTOFMEMORY; - - for (ptr = columns; ptr; ptr = ptr->next) - order_add_column(view, order, ptr->column); - - order->reorder = msi_alloc(rows * sizeof(UINT)); - if (!order->reorder) - return ERROR_OUTOFMEMORY; - - for (i = 0; i < rows; i++) - order->reorder[i] = i; - - r = order_mergesort(view, order, 0, rows - 1); - if (r != ERROR_SUCCESS) - return r; - - r = order_verify(view, order, rows); - if (r != ERROR_SUCCESS) - return r; - - tv->order = order; - - return ERROR_SUCCESS; -} - static UINT TABLE_drop(struct tagMSIVIEW *view) { MSITABLEVIEW *tv = (MSITABLEVIEW*)view; @@ -2292,7 +2113,7 @@ TABLE_release, TABLE_add_column, TABLE_remove_column, - TABLE_sort, + NULL, TABLE_drop, }; diff -Nru wine1.3-1.3.30/dlls/msi/upgrade.c wine1.3-1.3.31/dlls/msi/upgrade.c --- wine1.3-1.3.30/dlls/msi/upgrade.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msi/upgrade.c 2011-10-21 18:38:36.000000000 +0000 @@ -185,8 +185,8 @@ if (!check_language(check, language, attributes)) { index ++; - continue; TRACE("language doesn't match\n"); + continue; } TRACE("found related product\n"); diff -Nru wine1.3-1.3.30/dlls/msi/where.c wine1.3-1.3.31/dlls/msi/where.c --- wine1.3-1.3.30/dlls/msi/where.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msi/where.c 2011-10-21 18:38:36.000000000 +0000 @@ -205,7 +205,6 @@ column->parsed.column = i; column->parsed.table = table; return ERROR_SUCCESS; - break; } } while ((table = table->next)); @@ -600,14 +599,15 @@ return ERROR_SUCCESS; } -static UINT check_condition( MSIWHEREVIEW *wv, MSIRECORD *record, JOINTABLE *table, +static UINT check_condition( MSIWHEREVIEW *wv, MSIRECORD *record, JOINTABLE **tables, UINT table_rows[] ) { UINT r = ERROR_FUNCTION_FAILED; INT val; - for (table_rows[table->table_index] = 0; table_rows[table->table_index] < table->row_count; - table_rows[table->table_index]++) + for (table_rows[(*tables)->table_index] = 0; + table_rows[(*tables)->table_index] < (*tables)->row_count; + table_rows[(*tables)->table_index]++) { val = 0; wv->rec_index = 0; @@ -616,9 +616,9 @@ break; if (val) { - if (table->next) + if (*(tables + 1)) { - r = check_condition(wv, record, table->next, table_rows); + r = check_condition(wv, record, tables + 1, table_rows); if (r != ERROR_SUCCESS) break; } @@ -630,7 +630,7 @@ } } } - table_rows[table->table_index] = INVALID_ROW_INDEX; + table_rows[(*tables)->table_index] = INVALID_ROW_INDEX; return r; } @@ -681,13 +681,96 @@ return 0; } +static void add_to_array( JOINTABLE **array, JOINTABLE *elem ) +{ + while (*array && *array != elem) + array++; + if (!*array) + *array = elem; +} + +static BOOL in_array( JOINTABLE **array, JOINTABLE *elem ) +{ + while (*array && *array != elem) + array++; + return *array != NULL; +} + +#define CONST_EXPR 1 /* comparison to a constant value */ +#define JOIN_TO_CONST_EXPR 0x10000 /* comparison to a table involved with + a CONST_EXPR comaprison */ + +static UINT reorder_check( const struct expr *expr, JOINTABLE **ordered_tables, + BOOL process_joins, JOINTABLE **lastused ) +{ + UINT res = 0; + + switch (expr->type) + { + case EXPR_WILDCARD: + case EXPR_SVAL: + case EXPR_UVAL: + return 0; + case EXPR_COL_NUMBER: + case EXPR_COL_NUMBER32: + case EXPR_COL_NUMBER_STRING: + if (in_array(ordered_tables, expr->u.column.parsed.table)) + return JOIN_TO_CONST_EXPR; + *lastused = expr->u.column.parsed.table; + return CONST_EXPR; + case EXPR_STRCMP: + case EXPR_COMPLEX: + res = reorder_check(expr->u.expr.right, ordered_tables, process_joins, lastused); + /* fall through */ + case EXPR_UNARY: + res += reorder_check(expr->u.expr.left, ordered_tables, process_joins, lastused); + if (res == 0) + return 0; + if (res == CONST_EXPR) + add_to_array(ordered_tables, *lastused); + if (process_joins && res == JOIN_TO_CONST_EXPR + CONST_EXPR) + add_to_array(ordered_tables, *lastused); + return res; + default: + ERR("Unkown expr type: %i\n", expr->type); + assert(0); + return 0x1000000; + } +} + +/* reorders the tablelist in a way to evaluate the condition as fast as possible */ +static JOINTABLE **ordertables( MSIWHEREVIEW *wv ) +{ + JOINTABLE *table; + JOINTABLE **tables; + + tables = msi_alloc_zero( (wv->table_count + 1) * sizeof(*tables) ); + + if (wv->cond) + { + table = NULL; + reorder_check(wv->cond, tables, FALSE, &table); + table = NULL; + reorder_check(wv->cond, tables, TRUE, &table); + } + + table = wv->tables; + while (table) + { + add_to_array(tables, table); + table = table->next; + } + return tables; +} + static UINT WHERE_execute( struct tagMSIVIEW *view, MSIRECORD *record ) { MSIWHEREVIEW *wv = (MSIWHEREVIEW*)view; UINT r; JOINTABLE *table = wv->tables; UINT *rows; - int i; + JOINTABLE **ordered_tables; + int i = 0; TRACE("%p %p\n", wv, record); @@ -715,11 +798,13 @@ } while ((table = table->next)); + ordered_tables = ordertables( wv ); + rows = msi_alloc( wv->table_count * sizeof(*rows) ); for (i = 0; i < wv->table_count; i++) rows[i] = INVALID_ROW_INDEX; - r = check_condition(wv, record, wv->tables, rows); + r = check_condition(wv, record, ordered_tables, rows); if (wv->order_info) wv->order_info->error = ERROR_SUCCESS; @@ -730,6 +815,7 @@ r = wv->order_info->error; msi_free( rows ); + msi_free( ordered_tables ); return r; } @@ -920,11 +1006,8 @@ free_reorder(wv); - if (wv->order_info) - { - msi_free(wv->order_info); - wv->order_info = NULL; - } + msi_free(wv->order_info); + wv->order_info = NULL; msiobj_release( &wv->db->hdr ); msi_free( wv ); diff -Nru wine1.3-1.3.30/dlls/msvcp60/msvcp60.spec wine1.3-1.3.31/dlls/msvcp60/msvcp60.spec --- wine1.3-1.3.30/dlls/msvcp60/msvcp60.spec 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msvcp60/msvcp60.spec 2011-10-21 18:38:36.000000000 +0000 @@ -170,12 +170,12 @@ @ stub -arch=win64 ??$?GO@std@@YA?AV?$complex@O@0@AEBV10@AEBO@Z @ stub -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@0@Z # don't forward to msvcp90 @ stub -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@0@Z # don't forward to msvcp90 -@ stub -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@D@Z -@ stub -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@D@Z +@ stub -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@D@Z # don't forward to msvcp90 +@ stub -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@D@Z # don't forward to msvcp90 @ stub -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@PBD@Z # don't forward to msvcp90 @ stub -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@PEBD@Z # don't forward to msvcp90 -@ stub -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DABV10@@Z -@ stub -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DAEBV10@@Z +@ stub -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DABV10@@Z # don't forward to msvcp90 +@ stub -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DAEBV10@@Z # don't forward to msvcp90 @ stub -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBDABV10@@Z # don't forward to msvcp90 @ stub -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBDAEBV10@@Z # don't forward to msvcp90 @ stub -arch=win32 ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@0@Z @@ -242,36 +242,36 @@ @ stub -arch=win64 ??$?MGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z @ stub -arch=win32 ??$?MGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z @ stub -arch=win64 ??$?MGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z -@ stub -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z -@ stub -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z -@ stub -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z -@ stub -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z +@ stub -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z # don't forward to msvcp90 +@ stub -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z # don't forward to msvcp90 +@ stub -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z # don't forward to msvcp90 +@ stub -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z # don't forward to msvcp90 +@ stub -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z # don't forward to msvcp90 +@ stub -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z # don't forward to msvcp90 @ stub -arch=win32 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win64 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win32 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z @ stub -arch=win64 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z @ stub -arch=win32 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z @ stub -arch=win64 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z -@ stub -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z -@ stub -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z -@ stub -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z -@ stub -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z +@ stub -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z # don't forward to msvcp90 +@ stub -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z # don't forward to msvcp90 +@ stub -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z # don't forward to msvcp90 +@ stub -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z # don't forward to msvcp90 +@ stub -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z # don't forward to msvcp90 +@ stub -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z # don't forward to msvcp90 @ stub -arch=win32 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win64 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win32 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z @ stub -arch=win64 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z @ stub -arch=win32 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z @ stub -arch=win64 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z -@ stub -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z -@ stub -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z -@ stub -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z -@ stub -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z +@ stub -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z # don't forward to msvcp90 +@ stub -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z # don't forward to msvcp90 +@ stub -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z # don't forward to msvcp90 +@ stub -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z # don't forward to msvcp90 +@ stub -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z # don't forward to msvcp90 +@ stub -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z # don't forward to msvcp90 @ stub -arch=win32 ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win64 ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win32 ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z @@ -647,18 +647,18 @@ @ stub -arch=win64 ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA@AEBV01@@Z @ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z # don't forward to msvcp90 @ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@@Z # don't forward to msvcp90 -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z +@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z # don't forward to msvcp90 +@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z # don't forward to msvcp90 @ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$allocator@D@1@@Z # don't forward to msvcp90 @ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$allocator@D@1@@Z # don't forward to msvcp90 -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z +@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z # don't forward to msvcp90 @ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0AEBV?$allocator@D@1@@Z @ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0ABV?$allocator@D@1@@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBDAEBV?$allocator@D@1@@Z -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z +@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBDAEBV?$allocator@D@1@@Z # don't forward to msvcp90 +@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z # don't forward to msvcp90 +@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z # don't forward to msvcp90 +@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z # don't forward to msvcp90 +@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z # don't forward to msvcp90 @ stub -arch=win32 ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@@Z @ stub -arch=win64 ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@@Z @ stub -arch=win32 ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@IIABV?$allocator@G@1@@Z @@ -2440,14 +2440,14 @@ @ stub -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z # don't forward to msvcp90 @ stub -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z # don't forward to msvcp90 @ stub -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z # don't forward to msvcp90 -@ stub -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z -@ stub -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z -@ stub -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z +@ stub -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z # don't forward to msvcp90 +@ stub -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z # don't forward to msvcp90 +@ stub -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z # don't forward to msvcp90 @ stub -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z # don't forward to msvcp90 @ stub -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z # don't forward to msvcp90 @ stub -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z # don't forward to msvcp90 @ stub -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z # don't forward to msvcp90 -@ stub -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z +@ stub -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z # don't forward to msvcp90 @ stub -arch=win32 ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z @ stub -arch=win64 ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z @ stub -arch=win32 ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z @@ -3006,14 +3006,14 @@ @ cdecl -arch=win64 ?find@?$char_traits@D@std@@SAPEBDPEBD_KAEBD@Z(ptr long ptr) msvcp90.?find@?$char_traits@D@std@@SAPEBDPEBD_KAEBD@Z @ cdecl -arch=win32 ?find@?$char_traits@G@std@@SAPBGPBGIABG@Z(ptr long ptr) msvcp90.?find@?$char_traits@G@std@@SAPBGPBGIABG@Z @ cdecl -arch=win64 ?find@?$char_traits@G@std@@SAPEBGPEBG_KAEBG@Z(ptr long ptr) msvcp90.?find@?$char_traits@G@std@@SAPEBGPEBG_KAEBG@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z +@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z # don't forward to msvcp90 +@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z # don't forward to msvcp90 +@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z # don't forward to msvcp90 +@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z # don't forward to msvcp90 +@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z # don't forward to msvcp90 +@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z # don't forward to msvcp90 +@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z # don't forward to msvcp90 +@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z # don't forward to msvcp90 @ stub -arch=win32 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z @ stub -arch=win64 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z @ stub -arch=win32 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z @@ -3038,14 +3038,14 @@ @ stub -arch=win64 ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z @ stub -arch=win32 ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z @ stub -arch=win64 ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z +@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z # don't forward to msvcp90 +@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z # don't forward to msvcp90 +@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z # don't forward to msvcp90 +@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z # don't forward to msvcp90 +@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z # don't forward to msvcp90 +@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z # don't forward to msvcp90 +@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z # don't forward to msvcp90 +@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z # don't forward to msvcp90 @ stub -arch=win32 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z @ stub -arch=win64 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z @ stub -arch=win32 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z @@ -3172,8 +3172,8 @@ @ stub -arch=win64 ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEA_K@Z @ stub -arch=win32 ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHAA_N@Z @ stub -arch=win64 ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEA_N@Z -@ stub -arch=win32 ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ -@ stub -arch=win64 ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ +@ stub -arch=win32 ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ # don't forward to msvcp90 +@ stub -arch=win64 ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ # don't forward to msvcp90 @ stub -arch=win32 ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$allocator@G@2@XZ @ stub -arch=win64 ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$allocator@G@2@XZ @ stub -arch=win32 ?get_date@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHPAUtm@@@Z @@ -3440,8 +3440,8 @@ @ cdecl ?max@?$numeric_limits@_N@std@@SA_NXZ() msvcp90.?max@?$numeric_limits@_N@std@@SA_NXZ @ stub -arch=win32 ?max_length@codecvt_base@std@@QBEHXZ @ stub -arch=win64 ?max_length@codecvt_base@std@@QEBAHXZ -@ stub -arch=win32 ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ -@ stub -arch=win64 ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ +@ stub -arch=win32 ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ # don't forward to msvcp90 +@ stub -arch=win64 ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ # don't forward to msvcp90 @ stub -arch=win32 ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ @ stub -arch=win64 ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ @ cdecl ?min@?$numeric_limits@C@std@@SACXZ() msvcp90.?min@?$numeric_limits@C@std@@SACXZ @@ -3814,26 +3814,26 @@ @ stub -arch=win64 ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$reverse_iterator@PEAGGAEAGPEAG_J@2@XZ @ stub -arch=win32 ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@PBGGABGPBGH@2@XZ @ stub -arch=win64 ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$reverse_iterator@PEBGGAEBGPEBG_J@2@XZ -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z +@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z # don't forward to msvcp90 @ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0AEBV12@@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z +@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z # don't forward to msvcp90 @ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0PEBD1@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z +@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z # don't forward to msvcp90 @ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0PEBD@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z +@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z # don't forward to msvcp90 @ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0PEBD_K@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z +@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z # don't forward to msvcp90 @ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0_KD@Z @ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0ABV12@@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z +@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z # don't forward to msvcp90 @ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0ID@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z +@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z # don't forward to msvcp90 @ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0PBD1@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z +@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z # don't forward to msvcp90 @ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0PBD@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z +@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z # don't forward to msvcp90 @ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0PBDI@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z +@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z # don't forward to msvcp90 @ stub -arch=win32 ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@@Z @ stub -arch=win64 ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0AEBV12@@Z @ stub -arch=win32 ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@II@Z @@ -3854,8 +3854,8 @@ @ stub -arch=win64 ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG0@Z @ stub -arch=win32 ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0PBGI@Z @ stub -arch=win64 ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG@Z -@ stub -arch=win32 ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z -@ stub -arch=win64 ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z +@ stub -arch=win32 ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z # don't forward to msvcp90 +@ stub -arch=win64 ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z # don't forward to msvcp90 @ stub -arch=win32 ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z @ stub -arch=win64 ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z @ stub ?resetiosflags@std@@YA?AU?$_Smanip@H@1@H@Z @@ -3867,14 +3867,14 @@ @ stub -arch=win64 ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z @ stub -arch=win32 ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXIG@Z @ stub -arch=win64 ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_KG@Z -@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z -@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z -@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z -@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z -@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z -@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z +@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z # don't forward to msvcp90 +@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z # don't forward to msvcp90 +@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z # don't forward to msvcp90 +@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z # don't forward to msvcp90 +@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z # don't forward to msvcp90 +@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z # don't forward to msvcp90 +@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z # don't forward to msvcp90 +@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z # don't forward to msvcp90 @ stub -arch=win32 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z @ stub -arch=win64 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z @ stub -arch=win32 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z diff -Nru wine1.3-1.3.30/dlls/msvcp70/msvcp70.spec wine1.3-1.3.31/dlls/msvcp70/msvcp70.spec --- wine1.3-1.3.30/dlls/msvcp70/msvcp70.spec 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msvcp70/msvcp70.spec 2011-10-21 18:38:36.000000000 +0000 @@ -16,12 +16,12 @@ @ stub -arch=win64 ??0?$_Mpunct@_W@std@@QEAA@AEBV_Locinfo@1@_K_N@Z @ stub -arch=win32 ??0?$_Mpunct@_W@std@@QAE@I_N@Z @ stub -arch=win64 ??0?$_Mpunct@_W@std@@QEAA@_K_N@Z -@ stub -arch=win32 ??0?$_String_val@DV?$allocator@D@std@@@std@@IAE@V?$allocator@D@1@@Z -@ stub -arch=win64 ??0?$_String_val@DV?$allocator@D@std@@@std@@IEAA@V?$allocator@D@1@@Z -@ stub -arch=win32 ??0?$_String_val@GV?$allocator@G@std@@@std@@IAE@V?$allocator@G@1@@Z -@ stub -arch=win64 ??0?$_String_val@GV?$allocator@G@std@@@std@@IEAA@V?$allocator@G@1@@Z -@ stub -arch=win32 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IAE@V?$allocator@_W@1@@Z -@ stub -arch=win64 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IEAA@V?$allocator@_W@1@@Z +@ thiscall -arch=win32 ??0?$_String_val@DV?$allocator@D@std@@@std@@IAE@V?$allocator@D@1@@Z(ptr ptr) msvcp90.??0?$_String_val@DV?$allocator@D@std@@@std@@IAE@V?$allocator@D@1@@Z +@ cdecl -arch=win64 ??0?$_String_val@DV?$allocator@D@std@@@std@@IEAA@V?$allocator@D@1@@Z(ptr ptr) msvcp90.??0?$_String_val@DV?$allocator@D@std@@@std@@IEAA@V?$allocator@D@1@@Z +@ thiscall -arch=win32 ??0?$_String_val@GV?$allocator@G@std@@@std@@IAE@V?$allocator@G@1@@Z(ptr ptr) msvcp90.??0?$_String_val@GV?$allocator@G@std@@@std@@IAE@V?$allocator@G@1@@Z +@ cdecl -arch=win64 ??0?$_String_val@GV?$allocator@G@std@@@std@@IEAA@V?$allocator@G@1@@Z(ptr ptr) msvcp90.??0?$_String_val@GV?$allocator@G@std@@@std@@IEAA@V?$allocator@G@1@@Z +@ thiscall -arch=win32 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IAE@V?$allocator@_W@1@@Z(ptr ptr) msvcp90.??0?$_String_val@_WV?$allocator@_W@std@@@std@@IAE@V?$allocator@_W@1@@Z +@ cdecl -arch=win64 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IEAA@V?$allocator@_W@1@@Z(ptr ptr) msvcp90.??0?$_String_val@_WV?$allocator@_W@std@@@std@@IEAA@V?$allocator@_W@1@@Z @ thiscall -arch=win32 ??0?$allocator@D@std@@QAE@XZ(ptr) msvcp90.??0?$allocator@D@std@@QAE@XZ @ cdecl -arch=win64 ??0?$allocator@D@std@@QEAA@XZ(ptr) msvcp90.??0?$allocator@D@std@@QEAA@XZ @ thiscall -arch=win32 ??0?$allocator@G@std@@QAE@XZ(ptr) msvcp90.??0?$allocator@G@std@@QAE@XZ @@ -156,23 +156,23 @@ @ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@@Z(ptr ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@@Z @ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@II@Z(ptr ptr long long) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@II@Z @ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1@Z(ptr ptr long long) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1@Z -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z(ptr ptr long long ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z(ptr ptr long long ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z @ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$allocator@D@1@@Z(ptr ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$allocator@D@1@@Z @ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$allocator@D@1@@Z(ptr ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$allocator@D@1@@Z -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0@Z -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z(ptr long long) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0@Z(ptr ptr ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z(ptr long long ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z @ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0AEBV?$allocator@D@1@@Z -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0@Z(ptr ptr ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0@Z @ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z(ptr str) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z @ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_K@Z(ptr str long) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_K@Z -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z(ptr str ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z(ptr str long ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z @ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDI@Z(ptr str long) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDI@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@1@0@Z -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@1@0@Z(ptr ptr ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@1@0@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z(ptr str long ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z(ptr long long ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z @ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@V?$_Ptrit@DHPBDABDPADAAD@1@0@Z @ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ(ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ @ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ(ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ @@ -205,23 +205,23 @@ @ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@@Z(ptr ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@@Z @ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@II@Z(ptr ptr long long) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@II@Z @ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1@Z(ptr ptr long long) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1@Z -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@IIABV?$allocator@_W@1@@Z -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@_W@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@IIABV?$allocator@_W@1@@Z(ptr ptr long long ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@IIABV?$allocator@_W@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@_W@1@@Z(ptr ptr long long ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@_W@1@@Z @ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV?$allocator@_W@1@@Z(ptr ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV?$allocator@_W@1@@Z @ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV?$allocator@_W@1@@Z(ptr ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV?$allocator@_W@1@@Z -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_W@Z -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W0@Z -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_WABV?$allocator@_W@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_W@Z(ptr long long) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_W@Z +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W0@Z(ptr ptr ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W0@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_WABV?$allocator@_W@1@@Z(ptr long long ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_WABV?$allocator@_W@1@@Z @ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W@Z(ptr wstr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W@Z -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W0@Z -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_WAEBV?$allocator@_W@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W0@Z(ptr ptr ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W0@Z +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_WAEBV?$allocator@_W@1@@Z(ptr wstr ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_WAEBV?$allocator@_W@1@@Z @ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z(ptr wstr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z @ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_K@Z(ptr wstr long) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_K@Z -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WABV?$allocator@_W@1@@Z -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_KAEBV?$allocator@_W@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WABV?$allocator@_W@1@@Z(ptr wstr ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WABV?$allocator@_W@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_KAEBV?$allocator@_W@1@@Z(ptr wstr long ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_KAEBV?$allocator@_W@1@@Z @ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WI@Z(ptr wstr long) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WI@Z -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WIABV?$allocator@_W@1@@Z -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_WAEBV?$allocator@_W@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WIABV?$allocator@_W@1@@Z(ptr wstr long ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WIABV?$allocator@_W@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_WAEBV?$allocator@_W@1@@Z(ptr long long ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_WAEBV?$allocator@_W@1@@Z @ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@V?$_Ptrit@_WHPB_WAB_WPA_WAA_W@1@0@Z @ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ(ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ @ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@XZ(ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@XZ @@ -713,12 +713,12 @@ @ cdecl -arch=win64 ??4?$_Ctraits@N@std@@QEAAAEAV01@AEBV01@@Z(ptr) msvcp90.??4?$_Ctraits@N@std@@QEAAAEAV01@AEBV01@@Z @ thiscall -arch=win32 ??4?$_Ctraits@O@std@@QAEAAV01@ABV01@@Z(ptr) msvcp90.??4?$_Ctraits@O@std@@QAEAAV01@ABV01@@Z @ cdecl -arch=win64 ??4?$_Ctraits@O@std@@QEAAAEAV01@AEBV01@@Z(ptr) msvcp90.??4?$_Ctraits@O@std@@QEAAAEAV01@AEBV01@@Z -@ stub -arch=win32 ??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z -@ stub -arch=win64 ??4?$_String_val@DV?$allocator@D@std@@@std@@QEAAAEAV01@AEBV01@@Z -@ stub -arch=win32 ??4?$_String_val@GV?$allocator@G@std@@@std@@QAEAAV01@ABV01@@Z -@ stub -arch=win64 ??4?$_String_val@GV?$allocator@G@std@@@std@@QEAAAEAV01@AEBV01@@Z -@ stub -arch=win32 ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QAEAAV01@ABV01@@Z -@ stub -arch=win64 ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAAEAV01@AEBV01@@Z +@ thiscall -arch=win32 ??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z(ptr ptr) msvcp90.??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z +@ cdecl -arch=win64 ??4?$_String_val@DV?$allocator@D@std@@@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) msvcp90.??4?$_String_val@DV?$allocator@D@std@@@std@@QEAAAEAV01@AEBV01@@Z +@ thiscall -arch=win32 ??4?$_String_val@GV?$allocator@G@std@@@std@@QAEAAV01@ABV01@@Z(ptr ptr) msvcp90.??4?$_String_val@GV?$allocator@G@std@@@std@@QAEAAV01@ABV01@@Z +@ cdecl -arch=win64 ??4?$_String_val@GV?$allocator@G@std@@@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) msvcp90.??4?$_String_val@GV?$allocator@G@std@@@std@@QEAAAEAV01@AEBV01@@Z +@ thiscall -arch=win32 ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QAEAAV01@ABV01@@Z(ptr ptr) msvcp90.??4?$_String_val@_WV?$allocator@_W@std@@@std@@QAEAAV01@ABV01@@Z +@ cdecl -arch=win64 ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) msvcp90.??4?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAAEAV01@AEBV01@@Z @ thiscall -arch=win32 ??4?$allocator@D@std@@QAEAAV01@ABV01@@Z(ptr ptr) msvcp90.??4?$allocator@D@std@@QAEAAV01@ABV01@@Z @ cdecl -arch=win64 ??4?$allocator@D@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) msvcp90.??4?$allocator@D@std@@QEAAAEAV01@AEBV01@@Z @ thiscall -arch=win32 ??4?$allocator@G@std@@QAEAAV01@ABV01@@Z(ptr ptr) msvcp90.??4?$allocator@G@std@@QAEAAV01@ABV01@@Z @@ -1603,12 +1603,12 @@ @ stub -arch=win64 ??_D?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ @ stub -arch=win32 ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ @ stub -arch=win64 ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ -@ stub -arch=win32 ??_F?$_String_val@DV?$allocator@D@std@@@std@@QAEXXZ -@ stub -arch=win64 ??_F?$_String_val@DV?$allocator@D@std@@@std@@QEAAXXZ -@ stub -arch=win32 ??_F?$_String_val@GV?$allocator@G@std@@@std@@QAEXXZ -@ stub -arch=win64 ??_F?$_String_val@GV?$allocator@G@std@@@std@@QEAAXXZ -@ stub -arch=win32 ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QAEXXZ -@ stub -arch=win64 ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAXXZ +@ thiscall -arch=win32 ??_F?$_String_val@DV?$allocator@D@std@@@std@@QAEXXZ(ptr) msvcp90.??_F?$_String_val@DV?$allocator@D@std@@@std@@QAEXXZ +@ cdecl -arch=win64 ??_F?$_String_val@DV?$allocator@D@std@@@std@@QEAAXXZ(ptr) msvcp90.??_F?$_String_val@DV?$allocator@D@std@@@std@@QEAAXXZ +@ thiscall -arch=win32 ??_F?$_String_val@GV?$allocator@G@std@@@std@@QAEXXZ(ptr) msvcp90.??_F?$_String_val@GV?$allocator@G@std@@@std@@QAEXXZ +@ cdecl -arch=win64 ??_F?$_String_val@GV?$allocator@G@std@@@std@@QEAAXXZ(ptr) msvcp90.??_F?$_String_val@GV?$allocator@G@std@@@std@@QEAAXXZ +@ thiscall -arch=win32 ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QAEXXZ(ptr) msvcp90.??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QAEXXZ +@ cdecl -arch=win64 ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAXXZ(ptr) msvcp90.??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAXXZ @ stub -arch=win32 ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEXXZ @ stub -arch=win64 ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAXXZ @ stub -arch=win32 ??_F?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEXXZ @@ -2322,14 +2322,14 @@ @ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z(ptr ptr) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z @ thiscall -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z(ptr ptr long long) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z @ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z(ptr ptr long long) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z -@ stub -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z -@ stub -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z -@ stub -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z +@ thiscall -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z(ptr long long) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z +@ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z(ptr ptr ptr) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z +@ thiscall -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z(ptr ptr ptr) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z @ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z(ptr str) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z @ thiscall -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z(ptr str) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z @ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z(ptr str long) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z @ thiscall -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z(ptr str long) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z -@ stub -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z +@ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z(ptr long long) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z @ stub -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPBDABDPADAAD@2@0@Z @ stub -arch=win32 ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z @ stub -arch=win64 ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z @@ -2348,14 +2348,14 @@ @ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@@Z(ptr ptr) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@@Z @ thiscall -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@II@Z(ptr ptr long long) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@II@Z @ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@_K1@Z(ptr ptr long long) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@_K1@Z -@ stub -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z -@ stub -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z -@ stub -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z +@ thiscall -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z(ptr long long) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z +@ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z(ptr ptr ptr) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z +@ thiscall -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z(ptr ptr ptr) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z @ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W@Z(ptr wstr) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W@Z @ thiscall -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W@Z(ptr wstr) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W@Z @ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W_K@Z(ptr wstr long) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W_K@Z @ thiscall -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_WI@Z(ptr wstr long) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_WI@Z -@ stub -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z +@ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z(ptr long long) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z @ stub -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_Ptrit@_WHPB_WAB_WPA_WAA_W@2@0@Z @ cdecl -arch=win32 ?assign@?$char_traits@D@std@@SAPADPADID@Z(ptr long long) msvcp90.?assign@?$char_traits@D@std@@SAPADPADID@Z @ cdecl -arch=win64 ?assign@?$char_traits@D@std@@SAPEADPEAD_KD@Z(ptr long long) msvcp90.?assign@?$char_traits@D@std@@SAPEADPEAD_KD@Z @@ -3214,14 +3214,14 @@ @ cdecl -arch=win64 ?find@?$char_traits@G@std@@SAPEBGPEBG_KAEBG@Z(ptr long ptr) msvcp90.?find@?$char_traits@G@std@@SAPEBGPEBG_KAEBG@Z @ cdecl -arch=win32 ?find@?$char_traits@_W@std@@SAPB_WPB_WIAB_W@Z(ptr long ptr) msvcp90.?find@?$char_traits@_W@std@@SAPB_WPB_WIAB_W@Z @ cdecl -arch=win64 ?find@?$char_traits@_W@std@@SAPEB_WPEB_W_KAEB_W@Z(ptr long ptr) msvcp90.?find@?$char_traits@_W@std@@SAPEB_WPEB_W_KAEB_W@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z(ptr long long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z(ptr long long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z(ptr ptr long long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z(ptr ptr long long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z @ stub -arch=win32 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z @ stub -arch=win64 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z @ stub -arch=win32 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z @@ -3230,14 +3230,14 @@ @ stub -arch=win64 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z @ stub -arch=win32 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z @ stub -arch=win64 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z(ptr ptr long long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z(ptr ptr long long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z(ptr long long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z(ptr long long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z @ thiscall -arch=win32 ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z @ cdecl -arch=win64 ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z @ thiscall -arch=win32 ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z(ptr long long) msvcp90.?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z @@ -3262,14 +3262,14 @@ @ cdecl -arch=win64 ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z(ptr ptr long) msvcp90.?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z @ thiscall -arch=win32 ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z(ptr long long) msvcp90.?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z @ cdecl -arch=win64 ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z(ptr long long) msvcp90.?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z(ptr long long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z(ptr long long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z(ptr str long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z(ptr str long long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z(ptr str long long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z(ptr str long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z @ stub -arch=win32 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z @ stub -arch=win64 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z @ stub -arch=win32 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z @@ -3278,14 +3278,14 @@ @ stub -arch=win64 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z @ stub -arch=win32 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z @ stub -arch=win64 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z(ptr wstr long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z(ptr wstr long long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z(ptr wstr long long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z(ptr wstr long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z(ptr long long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z(ptr long long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z @ thiscall -arch=win32 ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z @ cdecl -arch=win64 ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z @ thiscall -arch=win32 ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z(ptr long long) msvcp90.?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z @@ -3466,12 +3466,12 @@ @ stub -arch=win64 ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEA_K@Z @ stub -arch=win32 ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAA_N@Z @ stub -arch=win64 ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEA_N@Z -@ stub -arch=win32 ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ -@ stub -arch=win64 ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ +@ thiscall -arch=win32 ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ(ptr) msvcp90.?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ +@ cdecl -arch=win64 ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ(ptr) msvcp90.?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ @ stub -arch=win32 ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$allocator@G@2@XZ @ stub -arch=win64 ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$allocator@G@2@XZ -@ stub -arch=win32 ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$allocator@_W@2@XZ -@ stub -arch=win64 ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$allocator@_W@2@XZ +@ thiscall -arch=win32 ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$allocator@_W@2@XZ(ptr) msvcp90.?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$allocator@_W@2@XZ +@ cdecl -arch=win64 ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$allocator@_W@2@XZ(ptr) msvcp90.?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$allocator@_W@2@XZ @ stub -arch=win32 ?get_date@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHPAUtm@@@Z @ stub -arch=win64 ?get_date@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHPEAUtm@@@Z @ stub -arch=win32 ?get_date@?$time_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHPAUtm@@@Z @@ -3887,12 +3887,12 @@ @ cdecl -arch=win64 ?max_size@?$allocator@G@std@@QEBA_KXZ(ptr) msvcp90.?max_size@?$allocator@G@std@@QEBA_KXZ @ thiscall -arch=win32 ?max_size@?$allocator@_W@std@@QBEIXZ(ptr) msvcp90.?max_size@?$allocator@_W@std@@QBEIXZ @ cdecl -arch=win64 ?max_size@?$allocator@_W@std@@QEBA_KXZ(ptr) msvcp90.?max_size@?$allocator@_W@std@@QEBA_KXZ -@ stub -arch=win32 ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ -@ stub -arch=win64 ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ +@ thiscall -arch=win32 ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ(ptr) msvcp90.?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ +@ cdecl -arch=win64 ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ(ptr) msvcp90.?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ @ stub -arch=win32 ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ @ stub -arch=win64 ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ -@ stub -arch=win32 ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ -@ stub -arch=win64 ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ +@ thiscall -arch=win32 ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ(ptr) msvcp90.?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ +@ cdecl -arch=win64 ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ(ptr) msvcp90.?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ @ cdecl ?min@?$numeric_limits@C@std@@SACXZ() msvcp90.?min@?$numeric_limits@C@std@@SACXZ @ cdecl ?min@?$numeric_limits@D@std@@SADXZ() msvcp90.?min@?$numeric_limits@D@std@@SADXZ @ cdecl ?min@?$numeric_limits@E@std@@SAEXZ() msvcp90.?min@?$numeric_limits@E@std@@SAEXZ @@ -4407,16 +4407,16 @@ @ stub -arch=win32 ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@V?$_Ptrit@GHPBGABGPAGAAG@std@@@2@XZ @ stub -arch=win32 ?rend@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$reverse_iterator@V?$_Ptrit@_WHPA_WAA_WPA_WAA_W@std@@@2@XZ @ stub -arch=win32 ?rend@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$reverse_iterator@V?$_Ptrit@_WHPB_WAB_WPA_WAA_W@std@@@2@XZ -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z(ptr long long long long) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z(ptr long long ptr long long) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z(ptr long long ptr long long) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z(ptr long long long long) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z(ptr long long ptr long) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z(ptr long long ptr long) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z @ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPADAADPADAAD@2@0ABV12@@Z @ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPADAADPADAAD@2@0ID@Z @ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPADAADPADAAD@2@0PBD1@Z @@ -4439,28 +4439,28 @@ @ stub -arch=win32 ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPAGAAGPAGAAG@2@0PBG@Z @ stub -arch=win32 ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPAGAAGPAGAAG@2@0PBGI@Z @ stub -arch=win32 ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPAGAAGPAGAAG@2@0V?$_Ptrit@GHPBGABGPAGAAG@2@1@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K00_W@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@II@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@III_W@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_W@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W0@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_WI@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W@Z +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@@Z +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K00_W@Z(ptr long long ptr long long) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K00_W@Z +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@II@Z(ptr long long ptr long long) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@II@Z +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z(ptr long long ptr long long) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@III_W@Z(ptr long long long long) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@III_W@Z +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@@Z +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_W@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_W@Z +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W0@Z(ptr long long ptr long) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W0@Z +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_WI@Z(ptr long long ptr long) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_WI@Z +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W@Z @ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@0ABV12@@Z @ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@0I_W@Z @ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@0PB_W1@Z @ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@0PB_W@Z @ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@0PB_WI@Z @ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@0V?$_Ptrit@_WHPB_WAB_WPA_WAA_W@2@1@Z -@ stub -arch=win32 ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z -@ stub -arch=win64 ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z +@ thiscall -arch=win32 ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z(ptr long) msvcp90.?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z +@ cdecl -arch=win64 ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z(ptr long) msvcp90.?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z @ stub -arch=win32 ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z @ stub -arch=win64 ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z -@ stub -arch=win32 ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z -@ stub -arch=win64 ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z +@ thiscall -arch=win32 ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z(ptr long) msvcp90.?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z +@ cdecl -arch=win64 ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z(ptr long) msvcp90.?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z @ stub ?resetiosflags@std@@YA?AU?$_Smanip@H@1@H@Z @ thiscall -arch=win32 ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z(ptr long) msvcp90.?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z @ cdecl -arch=win64 ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z(ptr long) msvcp90.?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z @@ -4474,14 +4474,14 @@ @ cdecl -arch=win64 ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z(ptr long) msvcp90.?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z @ thiscall -arch=win32 ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI_W@Z(ptr long long) msvcp90.?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI_W@Z @ cdecl -arch=win64 ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K_W@Z(ptr long long) msvcp90.?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K_W@Z -@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z -@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z -@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z -@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z -@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z -@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z(ptr ptr long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z(ptr ptr long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z(ptr str long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z(ptr str long long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z(ptr str long long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z(ptr str long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z @ stub -arch=win32 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z @ stub -arch=win64 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z @ stub -arch=win32 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z @@ -4490,14 +4490,14 @@ @ stub -arch=win64 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z @ stub -arch=win32 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z @ stub -arch=win64 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z -@ stub -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z -@ stub -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z -@ stub -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z -@ stub -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z -@ stub -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z -@ stub -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z(ptr wstr long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z(ptr wstr long long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z(ptr wstr long long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z(ptr wstr long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z(ptr long long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z(ptr long long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z @ cdecl ?round_error@?$numeric_limits@C@std@@SACXZ() msvcp90.?round_error@?$numeric_limits@C@std@@SACXZ @ cdecl ?round_error@?$numeric_limits@D@std@@SADXZ() msvcp90.?round_error@?$numeric_limits@D@std@@SADXZ @ cdecl ?round_error@?$numeric_limits@E@std@@SAEXZ() msvcp90.?round_error@?$numeric_limits@E@std@@SAEXZ diff -Nru wine1.3-1.3.30/dlls/msvcp71/msvcp71.spec wine1.3-1.3.31/dlls/msvcp71/msvcp71.spec --- wine1.3-1.3.30/dlls/msvcp71/msvcp71.spec 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msvcp71/msvcp71.spec 2011-10-21 18:38:36.000000000 +0000 @@ -202,12 +202,12 @@ @ stub -arch=win64 ??$?GO@std@@YA?AV?$complex@O@0@AEBV10@AEBO@Z @ cdecl -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@0@Z(ptr ptr ptr) msvcp90.??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@0@Z @ cdecl -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@0@Z(ptr ptr ptr) msvcp90.??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@0@Z -@ stub -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@D@Z -@ stub -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@D@Z +@ cdecl -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@D@Z(ptr ptr long) msvcp90.??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@D@Z +@ cdecl -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@D@Z(ptr ptr long) msvcp90.??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@D@Z @ cdecl -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@PBD@Z(ptr ptr str) msvcp90.??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@PBD@Z @ cdecl -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@PEBD@Z(ptr ptr str) msvcp90.??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@PEBD@Z -@ stub -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DABV10@@Z -@ stub -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DAEBV10@@Z +@ cdecl -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DABV10@@Z(ptr long ptr) msvcp90.??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DABV10@@Z +@ cdecl -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DAEBV10@@Z(ptr long ptr) msvcp90.??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DAEBV10@@Z @ cdecl -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBDABV10@@Z(ptr str ptr) msvcp90.??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBDABV10@@Z @ cdecl -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBDAEBV10@@Z(ptr str ptr) msvcp90.??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBDAEBV10@@Z @ stub -arch=win32 ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@0@Z @@ -248,12 +248,12 @@ @ cdecl -arch=win64 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@AEBV10@0@Z(ptr ptr ptr) msvcp90.??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@AEBV10@0@Z @ cdecl -arch=win32 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@PB_W@Z(ptr ptr wstr) msvcp90.??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@PB_W@Z @ cdecl -arch=win64 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@AEBV10@PEB_W@Z(ptr ptr wstr) msvcp90.??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@AEBV10@PEB_W@Z -@ stub -arch=win32 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@_W@Z -@ stub -arch=win64 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@AEBV10@_W@Z +@ cdecl -arch=win32 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@_W@Z(ptr ptr long) msvcp90.??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@_W@Z +@ cdecl -arch=win64 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@AEBV10@_W@Z(ptr ptr long) msvcp90.??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@AEBV10@_W@Z @ cdecl -arch=win32 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_WABV10@@Z(ptr wstr ptr) msvcp90.??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_WABV10@@Z @ cdecl -arch=win64 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_WAEBV10@@Z(ptr wstr ptr) msvcp90.??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_WAEBV10@@Z -@ stub -arch=win32 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_WABV10@@Z -@ stub -arch=win64 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_WAEBV10@@Z +@ cdecl -arch=win32 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_WABV10@@Z(ptr long ptr) msvcp90.??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_WABV10@@Z +@ cdecl -arch=win64 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_WAEBV10@@Z(ptr long ptr) msvcp90.??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_WAEBV10@@Z @ stub -arch=win32 ??$?KM@std@@YA?AV?$complex@M@0@ABMABV10@@Z @ stub -arch=win64 ??$?KM@std@@YA?AV?$complex@M@0@AEBMAEBV10@@Z @ stub -arch=win32 ??$?KM@std@@YA?AV?$complex@M@0@ABV10@0@Z @@ -286,64 +286,64 @@ @ stub -arch=win64 ??$?MGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z @ cdecl -arch=win32 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) msvcp90.??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z @ cdecl -arch=win64 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) msvcp90.??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z -@ cdecl -arch=win32 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z(ptr str) msvcp90.??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z -@ cdecl -arch=win64 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z(ptr str) msvcp90.??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z -@ cdecl -arch=win32 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(str ptr) msvcp90.??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z -@ cdecl -arch=win64 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(str ptr) msvcp90.??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z -@ stub -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z -@ stub -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z -@ stub -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z -@ stub -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z +@ cdecl -arch=win32 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z(ptr wstr) msvcp90.??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z +@ cdecl -arch=win64 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z(ptr wstr) msvcp90.??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z +@ cdecl -arch=win32 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) msvcp90.??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z +@ cdecl -arch=win64 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) msvcp90.??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z +@ cdecl -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z(ptr ptr) msvcp90.??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z +@ cdecl -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z(ptr ptr) msvcp90.??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z +@ cdecl -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z(ptr str) msvcp90.??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z +@ cdecl -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z(ptr str) msvcp90.??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z +@ cdecl -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z(str ptr) msvcp90.??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z +@ cdecl -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z(str ptr) msvcp90.??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z @ stub -arch=win32 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win64 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win32 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z @ stub -arch=win64 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z @ stub -arch=win32 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z @ stub -arch=win64 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z -@ stub -arch=win32 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z -@ stub -arch=win64 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z -@ stub -arch=win32 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z -@ stub -arch=win64 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z -@ stub -arch=win32 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z -@ stub -arch=win64 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z -@ stub -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z -@ stub -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z -@ stub -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z -@ stub -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z +@ cdecl -arch=win32 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) msvcp90.??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z +@ cdecl -arch=win64 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) msvcp90.??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z +@ cdecl -arch=win32 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z(ptr wstr) msvcp90.??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z +@ cdecl -arch=win64 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z(ptr wstr) msvcp90.??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z +@ cdecl -arch=win32 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) msvcp90.??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z +@ cdecl -arch=win64 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) msvcp90.??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z +@ cdecl -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z(ptr ptr) msvcp90.??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z +@ cdecl -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z(ptr ptr) msvcp90.??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z +@ cdecl -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z(ptr str) msvcp90.??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z +@ cdecl -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z(ptr str) msvcp90.??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z +@ cdecl -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z(str ptr) msvcp90.??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z +@ cdecl -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z(str ptr) msvcp90.??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z @ stub -arch=win32 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win64 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win32 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z @ stub -arch=win64 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z @ stub -arch=win32 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z @ stub -arch=win64 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z -@ stub -arch=win32 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z -@ stub -arch=win64 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z -@ stub -arch=win32 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z -@ stub -arch=win64 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z -@ stub -arch=win32 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z -@ stub -arch=win64 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z -@ stub -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z -@ stub -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z -@ stub -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z -@ stub -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z +@ cdecl -arch=win32 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) msvcp90.??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z +@ cdecl -arch=win64 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) msvcp90.??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z +@ cdecl -arch=win32 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z(ptr wstr) msvcp90.??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z +@ cdecl -arch=win64 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z(ptr wstr) msvcp90.??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z +@ cdecl -arch=win32 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) msvcp90.??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z +@ cdecl -arch=win64 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) msvcp90.??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z +@ cdecl -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z(ptr ptr) msvcp90.??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z +@ cdecl -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z(ptr ptr) msvcp90.??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z +@ cdecl -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z(ptr str) msvcp90.??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z +@ cdecl -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z(ptr str) msvcp90.??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z +@ cdecl -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z(str ptr) msvcp90.??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z +@ cdecl -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z(str ptr) msvcp90.??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z @ stub -arch=win32 ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win64 ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win32 ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z @ stub -arch=win64 ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z @ stub -arch=win32 ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z @ stub -arch=win64 ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z -@ stub -arch=win32 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z -@ stub -arch=win64 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z -@ stub -arch=win32 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z -@ stub -arch=win64 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z -@ stub -arch=win32 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z -@ stub -arch=win64 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z +@ cdecl -arch=win32 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) msvcp90.??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z +@ cdecl -arch=win64 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) msvcp90.??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z +@ cdecl -arch=win32 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z(ptr wstr) msvcp90.??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z +@ cdecl -arch=win64 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z(ptr wstr) msvcp90.??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z +@ cdecl -arch=win32 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) msvcp90.??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z +@ cdecl -arch=win64 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) msvcp90.??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z @ stub -arch=win32 ??$_Fabs@M@std@@YAMABV?$complex@M@0@PAH@Z @ stub -arch=win64 ??$_Fabs@M@std@@YAMAEBV?$complex@M@0@PEAH@Z @ stub -arch=win32 ??$_Fabs@N@std@@YANABV?$complex@N@0@PAH@Z @@ -512,18 +512,18 @@ @ stub -arch=win64 ??0?$_Mpunct@_W@std@@QEAA@AEBV_Locinfo@1@_K_N@Z @ stub -arch=win32 ??0?$_Mpunct@_W@std@@QAE@I_N@Z @ stub -arch=win64 ??0?$_Mpunct@_W@std@@QEAA@_K_N@Z -@ stub -arch=win32 ??0?$_String_val@DV?$allocator@D@std@@@std@@IAE@V?$allocator@D@1@@Z -@ stub -arch=win64 ??0?$_String_val@DV?$allocator@D@std@@@std@@IEAA@V?$allocator@D@1@@Z -@ stub -arch=win32 ??0?$_String_val@DV?$allocator@D@std@@@std@@QAE@ABV01@@Z -@ stub -arch=win64 ??0?$_String_val@DV?$allocator@D@std@@@std@@QEAA@AEBV01@@Z -@ stub -arch=win32 ??0?$_String_val@GV?$allocator@G@std@@@std@@IAE@V?$allocator@G@1@@Z -@ stub -arch=win64 ??0?$_String_val@GV?$allocator@G@std@@@std@@IEAA@V?$allocator@G@1@@Z -@ stub -arch=win32 ??0?$_String_val@GV?$allocator@G@std@@@std@@QAE@ABV01@@Z -@ stub -arch=win64 ??0?$_String_val@GV?$allocator@G@std@@@std@@QEAA@AEBV01@@Z -@ stub -arch=win32 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IAE@V?$allocator@_W@1@@Z -@ stub -arch=win64 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IEAA@V?$allocator@_W@1@@Z -@ stub -arch=win32 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QAE@ABV01@@Z -@ stub -arch=win64 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QEAA@AEBV01@@Z +@ thiscall -arch=win32 ??0?$_String_val@DV?$allocator@D@std@@@std@@IAE@V?$allocator@D@1@@Z(ptr ptr) msvcp90.??0?$_String_val@DV?$allocator@D@std@@@std@@IAE@V?$allocator@D@1@@Z +@ cdecl -arch=win64 ??0?$_String_val@DV?$allocator@D@std@@@std@@IEAA@V?$allocator@D@1@@Z(ptr ptr) msvcp90.??0?$_String_val@DV?$allocator@D@std@@@std@@IEAA@V?$allocator@D@1@@Z +@ thiscall -arch=win32 ??0?$_String_val@DV?$allocator@D@std@@@std@@QAE@ABV01@@Z(ptr ptr) msvcp90.??0?$_String_val@DV?$allocator@D@std@@@std@@QAE@ABV01@@Z +@ cdecl -arch=win64 ??0?$_String_val@DV?$allocator@D@std@@@std@@QEAA@AEBV01@@Z(ptr ptr) msvcp90.??0?$_String_val@DV?$allocator@D@std@@@std@@QEAA@AEBV01@@Z +@ thiscall -arch=win32 ??0?$_String_val@GV?$allocator@G@std@@@std@@IAE@V?$allocator@G@1@@Z(ptr ptr) msvcp90.??0?$_String_val@GV?$allocator@G@std@@@std@@IAE@V?$allocator@G@1@@Z +@ cdecl -arch=win64 ??0?$_String_val@GV?$allocator@G@std@@@std@@IEAA@V?$allocator@G@1@@Z(ptr ptr) msvcp90.??0?$_String_val@GV?$allocator@G@std@@@std@@IEAA@V?$allocator@G@1@@Z +@ thiscall -arch=win32 ??0?$_String_val@GV?$allocator@G@std@@@std@@QAE@ABV01@@Z(ptr ptr) msvcp90.??0?$_String_val@GV?$allocator@G@std@@@std@@QAE@ABV01@@Z +@ cdecl -arch=win64 ??0?$_String_val@GV?$allocator@G@std@@@std@@QEAA@AEBV01@@Z(ptr ptr) msvcp90.??0?$_String_val@GV?$allocator@G@std@@@std@@QEAA@AEBV01@@Z +@ thiscall -arch=win32 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IAE@V?$allocator@_W@1@@Z(ptr ptr) msvcp90.??0?$_String_val@_WV?$allocator@_W@std@@@std@@IAE@V?$allocator@_W@1@@Z +@ cdecl -arch=win64 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IEAA@V?$allocator@_W@1@@Z(ptr ptr) msvcp90.??0?$_String_val@_WV?$allocator@_W@std@@@std@@IEAA@V?$allocator@_W@1@@Z +@ thiscall -arch=win32 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QAE@ABV01@@Z(ptr ptr) msvcp90.??0?$_String_val@_WV?$allocator@_W@std@@@std@@QAE@ABV01@@Z +@ cdecl -arch=win64 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QEAA@AEBV01@@Z(ptr ptr) msvcp90.??0?$_String_val@_WV?$allocator@_W@std@@@std@@QEAA@AEBV01@@Z @ thiscall -arch=win32 ??0?$allocator@X@std@@QAE@ABV01@@Z(ptr ptr) msvcp90.??0?$allocator@X@std@@QAE@ABV01@@Z @ cdecl -arch=win64 ??0?$allocator@X@std@@QEAA@AEBV01@@Z(ptr ptr) msvcp90.??0?$allocator@X@std@@QEAA@AEBV01@@Z @ thiscall -arch=win32 ??0?$allocator@X@std@@QAE@XZ(ptr) msvcp90.??0?$allocator@X@std@@QAE@XZ @@ -676,24 +676,24 @@ @ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@@Z(ptr ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@@Z @ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@II@Z(ptr ptr long long) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@II@Z @ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1@Z(ptr ptr long long) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1@Z -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z(ptr ptr long long ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z(ptr ptr long long ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z @ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$allocator@D@1@@Z(ptr ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$allocator@D@1@@Z @ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$allocator@D@1@@Z(ptr ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$allocator@D@1@@Z -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0@Z -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z(ptr long long) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0@Z(ptr ptr ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z(ptr long long ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z @ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0AEBV?$allocator@D@1@@Z @ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD@Z(ptr str) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD@Z -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0@Z(ptr ptr ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0@Z @ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z(ptr str) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z @ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_K@Z(ptr str long) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_K@Z -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z(ptr str ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z(ptr str long ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z @ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDI@Z(ptr str long) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDI@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KD@Z -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KD@Z(ptr long long) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KD@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z(ptr str long ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z(ptr long long ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z @ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@Vconst_iterator@01@0@Z @ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ(ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ @ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ(ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ @@ -726,26 +726,26 @@ @ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@@Z(ptr ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@@Z @ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@II@Z(ptr ptr long long) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@II@Z @ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1@Z(ptr ptr long long) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1@Z -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@IIABV?$allocator@_W@1@@Z -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@_W@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@IIABV?$allocator@_W@1@@Z(ptr ptr long long ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@IIABV?$allocator@_W@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@_W@1@@Z(ptr ptr long long ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@_W@1@@Z @ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV?$allocator@_W@1@@Z(ptr ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV?$allocator@_W@1@@Z @ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV?$allocator@_W@1@@Z(ptr ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV?$allocator@_W@1@@Z -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_W@Z -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W0@Z -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_WABV?$allocator@_W@1@@Z -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_WAEBV?$allocator@_W@1@@Z -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W0@Z -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_W@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_W@Z(ptr long long) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_W@Z +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W0@Z(ptr ptr ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W0@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_WABV?$allocator@_W@1@@Z(ptr long long ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_WABV?$allocator@_W@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_WAEBV?$allocator@_W@1@@Z(ptr wstr ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_WAEBV?$allocator@_W@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W0@Z(ptr ptr ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W0@Z +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_W@Z(ptr long long) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_W@Z @ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z(ptr wstr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z @ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W@Z(ptr wstr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W@Z -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WABV?$allocator@_W@1@@Z -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_KAEBV?$allocator@_W@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WABV?$allocator@_W@1@@Z(ptr wstr ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WABV?$allocator@_W@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_KAEBV?$allocator@_W@1@@Z(ptr wstr long ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_KAEBV?$allocator@_W@1@@Z @ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WI@Z(ptr wstr long) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WI@Z @ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_K@Z(ptr wstr long) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_K@Z -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WIABV?$allocator@_W@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WIABV?$allocator@_W@1@@Z(ptr wstr long ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WIABV?$allocator@_W@1@@Z @ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@Vconst_iterator@01@0@Z @ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ(ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_WAEBV?$allocator@_W@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_WAEBV?$allocator@_W@1@@Z(ptr long long ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_WAEBV?$allocator@_W@1@@Z @ stub -arch=win32 ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@H@Z @ stub -arch=win64 ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@H@Z @ stub -arch=win32 ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z @@ -1229,12 +1229,12 @@ @ stub -arch=win64 ??4?$_Iosb@H@std@@QEAAAEAV01@AEBV01@@Z @ stub -arch=win32 ??4?$_Locbase@H@std@@QAEAAV01@ABV01@@Z @ stub -arch=win64 ??4?$_Locbase@H@std@@QEAAAEAV01@AEBV01@@Z -@ stub -arch=win32 ??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z -@ stub -arch=win64 ??4?$_String_val@DV?$allocator@D@std@@@std@@QEAAAEAV01@AEBV01@@Z -@ stub -arch=win32 ??4?$_String_val@GV?$allocator@G@std@@@std@@QAEAAV01@ABV01@@Z -@ stub -arch=win64 ??4?$_String_val@GV?$allocator@G@std@@@std@@QEAAAEAV01@AEBV01@@Z -@ stub -arch=win32 ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QAEAAV01@ABV01@@Z -@ stub -arch=win64 ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAAEAV01@AEBV01@@Z +@ thiscall -arch=win32 ??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z(ptr ptr) msvcp90.??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z +@ cdecl -arch=win64 ??4?$_String_val@DV?$allocator@D@std@@@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) msvcp90.??4?$_String_val@DV?$allocator@D@std@@@std@@QEAAAEAV01@AEBV01@@Z +@ thiscall -arch=win32 ??4?$_String_val@GV?$allocator@G@std@@@std@@QAEAAV01@ABV01@@Z(ptr ptr) msvcp90.??4?$_String_val@GV?$allocator@G@std@@@std@@QAEAAV01@ABV01@@Z +@ cdecl -arch=win64 ??4?$_String_val@GV?$allocator@G@std@@@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) msvcp90.??4?$_String_val@GV?$allocator@G@std@@@std@@QEAAAEAV01@AEBV01@@Z +@ thiscall -arch=win32 ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QAEAAV01@ABV01@@Z(ptr ptr) msvcp90.??4?$_String_val@_WV?$allocator@_W@std@@@std@@QAEAAV01@ABV01@@Z +@ cdecl -arch=win64 ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) msvcp90.??4?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAAEAV01@AEBV01@@Z @ thiscall -arch=win32 ??4?$allocator@X@std@@QAEAAV01@ABV01@@Z(ptr ptr) msvcp90.??4?$allocator@X@std@@QAEAAV01@ABV01@@Z @ cdecl -arch=win64 ??4?$allocator@X@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) msvcp90.??4?$allocator@X@std@@QEAAAEAV01@AEBV01@@Z @ thiscall -arch=win32 ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z(ptr ptr) msvcp90.??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z @@ -1795,12 +1795,12 @@ @ stub -arch=win64 ??_D?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ @ stub -arch=win32 ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ @ stub -arch=win64 ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ -@ stub -arch=win32 ??_F?$_String_val@DV?$allocator@D@std@@@std@@QAEXXZ -@ stub -arch=win64 ??_F?$_String_val@DV?$allocator@D@std@@@std@@QEAAXXZ -@ stub -arch=win32 ??_F?$_String_val@GV?$allocator@G@std@@@std@@QAEXXZ -@ stub -arch=win64 ??_F?$_String_val@GV?$allocator@G@std@@@std@@QEAAXXZ -@ stub -arch=win32 ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QAEXXZ -@ stub -arch=win64 ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAXXZ +@ thiscall -arch=win32 ??_F?$_String_val@DV?$allocator@D@std@@@std@@QAEXXZ(ptr) msvcp90.??_F?$_String_val@DV?$allocator@D@std@@@std@@QAEXXZ +@ cdecl -arch=win64 ??_F?$_String_val@DV?$allocator@D@std@@@std@@QEAAXXZ(ptr) msvcp90.??_F?$_String_val@DV?$allocator@D@std@@@std@@QEAAXXZ +@ thiscall -arch=win32 ??_F?$_String_val@GV?$allocator@G@std@@@std@@QAEXXZ(ptr) msvcp90.??_F?$_String_val@GV?$allocator@G@std@@@std@@QAEXXZ +@ cdecl -arch=win64 ??_F?$_String_val@GV?$allocator@G@std@@@std@@QEAAXXZ(ptr) msvcp90.??_F?$_String_val@GV?$allocator@G@std@@@std@@QEAAXXZ +@ thiscall -arch=win32 ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QAEXXZ(ptr) msvcp90.??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QAEXXZ +@ cdecl -arch=win64 ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAXXZ(ptr) msvcp90.??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAXXZ @ stub -arch=win32 ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEXXZ @ stub -arch=win64 ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAXXZ @ stub -arch=win32 ??_F?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEXXZ @@ -2512,14 +2512,14 @@ @ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z(ptr ptr) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z @ thiscall -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z(ptr ptr long long) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z @ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z(ptr ptr long long) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z -@ stub -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z -@ stub -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z -@ stub -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z +@ thiscall -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z(ptr long long) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z +@ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z(ptr ptr ptr) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z +@ thiscall -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z(ptr ptr ptr) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z @ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z(ptr str) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z @ thiscall -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z(ptr str) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z @ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z(ptr str long) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z @ thiscall -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z(ptr str long) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z -@ stub -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z +@ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z(ptr long long) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z @ stub -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z @ stub -arch=win32 ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z @ stub -arch=win64 ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z @@ -2538,14 +2538,14 @@ @ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@@Z(ptr ptr) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@@Z @ thiscall -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@II@Z(ptr ptr long long) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@II@Z @ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@_K1@Z(ptr ptr long long) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@_K1@Z -@ stub -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z -@ stub -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z -@ stub -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z +@ thiscall -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z(ptr long long) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z +@ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z(ptr ptr ptr) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z +@ thiscall -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z(ptr ptr ptr) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z @ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W@Z(ptr wstr) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W@Z @ thiscall -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W@Z(ptr wstr) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W@Z @ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W_K@Z(ptr wstr long) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W_K@Z @ thiscall -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_WI@Z(ptr wstr long) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_WI@Z -@ stub -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z +@ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z(ptr long long) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z @ stub -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z @ cdecl -arch=win32 ?assign@?$char_traits@D@std@@SAPADPADID@Z(ptr long long) msvcp90.?assign@?$char_traits@D@std@@SAPADPADID@Z @ cdecl -arch=win64 ?assign@?$char_traits@D@std@@SAPEADPEAD_KD@Z(ptr long long) msvcp90.?assign@?$char_traits@D@std@@SAPEADPEAD_KD@Z @@ -3362,14 +3362,14 @@ @ cdecl -arch=win64 ?find@?$char_traits@G@std@@SAPEBGPEBG_KAEBG@Z(ptr long ptr) msvcp90.?find@?$char_traits@G@std@@SAPEBGPEBG_KAEBG@Z @ cdecl -arch=win32 ?find@?$char_traits@_W@std@@SAPB_WPB_WIAB_W@Z(ptr long ptr) msvcp90.?find@?$char_traits@_W@std@@SAPB_WPB_WIAB_W@Z @ cdecl -arch=win64 ?find@?$char_traits@_W@std@@SAPEB_WPEB_W_KAEB_W@Z(ptr long ptr) msvcp90.?find@?$char_traits@_W@std@@SAPEB_WPEB_W_KAEB_W@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z(ptr long long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z(ptr long long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z(ptr ptr long long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z(ptr ptr long long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z @ stub -arch=win32 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z @ stub -arch=win64 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z @ stub -arch=win32 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z @@ -3378,14 +3378,14 @@ @ stub -arch=win64 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z @ stub -arch=win32 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z @ stub -arch=win64 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z(ptr ptr long long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z(ptr ptr long long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z(ptr long long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z(ptr long long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z @ thiscall -arch=win32 ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z @ cdecl -arch=win64 ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z @ thiscall -arch=win32 ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z(ptr long long) msvcp90.?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z @@ -3410,14 +3410,14 @@ @ cdecl -arch=win64 ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z(ptr ptr long) msvcp90.?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z @ thiscall -arch=win32 ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z(ptr long long) msvcp90.?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z @ cdecl -arch=win64 ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z(ptr long long) msvcp90.?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z(ptr long long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z(ptr long long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z(ptr str long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z(ptr str long long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z(ptr str long long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z(ptr str long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z @ stub -arch=win32 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z @ stub -arch=win64 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z @ stub -arch=win32 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z @@ -3426,14 +3426,14 @@ @ stub -arch=win64 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z @ stub -arch=win32 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z @ stub -arch=win64 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z(ptr wstr long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z(ptr wstr long long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z(ptr wstr long long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z(ptr wstr long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z(ptr long long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z(ptr long long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z @ thiscall -arch=win32 ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z @ cdecl -arch=win64 ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z @ thiscall -arch=win32 ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z(ptr long long) msvcp90.?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z @@ -3614,12 +3614,12 @@ @ stub -arch=win64 ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEA_K@Z @ stub -arch=win32 ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAA_N@Z @ stub -arch=win64 ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEA_N@Z -@ stub -arch=win32 ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ -@ stub -arch=win64 ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ +@ thiscall -arch=win32 ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ(ptr) msvcp90.?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ +@ cdecl -arch=win64 ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ(ptr) msvcp90.?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ @ stub -arch=win32 ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$allocator@G@2@XZ @ stub -arch=win64 ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$allocator@G@2@XZ -@ stub -arch=win32 ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$allocator@_W@2@XZ -@ stub -arch=win64 ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$allocator@_W@2@XZ +@ thiscall -arch=win32 ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$allocator@_W@2@XZ(ptr) msvcp90.?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$allocator@_W@2@XZ +@ cdecl -arch=win64 ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$allocator@_W@2@XZ(ptr) msvcp90.?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$allocator@_W@2@XZ @ stub -arch=win32 ?get_date@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHPAUtm@@@Z @ stub -arch=win64 ?get_date@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHPEAUtm@@@Z @ stub -arch=win32 ?get_date@?$time_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHPAUtm@@@Z @@ -4009,12 +4009,12 @@ @ extern ?max_exponent@_Num_base@std@@2HB msvcp90.?max_exponent@_Num_base@std@@2HB @ stub -arch=win32 ?max_length@codecvt_base@std@@QBEHXZ @ stub -arch=win64 ?max_length@codecvt_base@std@@QEBAHXZ -@ stub -arch=win32 ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ -@ stub -arch=win64 ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ +@ thiscall -arch=win32 ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ(ptr) msvcp90.?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ +@ cdecl -arch=win64 ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ(ptr) msvcp90.?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ @ stub -arch=win32 ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ @ stub -arch=win64 ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ -@ stub -arch=win32 ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ -@ stub -arch=win64 ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ +@ thiscall -arch=win32 ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ(ptr) msvcp90.?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ +@ cdecl -arch=win64 ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ(ptr) msvcp90.?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ @ cdecl ?min@?$numeric_limits@C@std@@SACXZ() msvcp90.?min@?$numeric_limits@C@std@@SACXZ @ cdecl ?min@?$numeric_limits@D@std@@SADXZ() msvcp90.?min@?$numeric_limits@D@std@@SADXZ @ cdecl ?min@?$numeric_limits@E@std@@SAEXZ() msvcp90.?min@?$numeric_limits@E@std@@SAEXZ @@ -4485,16 +4485,16 @@ @ stub -arch=win32 ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@Vconst_iterator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@2@XZ @ stub -arch=win32 ?rend@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$reverse_iterator@Viterator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ @ stub -arch=win32 ?rend@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$reverse_iterator@Vconst_iterator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z(ptr long long long long) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z(ptr long long ptr long long) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z(ptr long long ptr long long) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z(ptr long long long long) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z(ptr long long ptr long) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z(ptr long long ptr long) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z @ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0ABV12@@Z @ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0ID@Z @ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0PBD1@Z @@ -4517,28 +4517,28 @@ @ stub -arch=win32 ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0PBG@Z @ stub -arch=win32 ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0PBGI@Z @ stub -arch=win32 ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0Vconst_iterator@12@1@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K00_W@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@II@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@III_W@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_W@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W0@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_WI@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W@Z +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@@Z +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K00_W@Z(ptr long long ptr long long) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K00_W@Z +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@II@Z(ptr long long ptr long long) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@II@Z +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z(ptr long long ptr long long) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@III_W@Z(ptr long long long long) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@III_W@Z +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@@Z +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_W@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_W@Z +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W0@Z(ptr long long ptr long) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W0@Z +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_WI@Z(ptr long long ptr long) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_WI@Z +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W@Z @ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0ABV12@@Z @ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0I_W@Z @ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0PB_W1@Z @ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0PB_W@Z @ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0PB_WI@Z @ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0Vconst_iterator@12@1@Z -@ stub -arch=win32 ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z -@ stub -arch=win64 ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z +@ thiscall -arch=win32 ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z(ptr long) msvcp90.?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z +@ cdecl -arch=win64 ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z(ptr long) msvcp90.?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z @ stub -arch=win32 ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z @ stub -arch=win64 ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z -@ stub -arch=win32 ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z -@ stub -arch=win64 ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z +@ thiscall -arch=win32 ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z(ptr long) msvcp90.?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z +@ cdecl -arch=win64 ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z(ptr long) msvcp90.?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z @ stub ?resetiosflags@std@@YA?AU?$_Smanip@H@1@H@Z @ thiscall -arch=win32 ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z(ptr long) msvcp90.?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z @ cdecl -arch=win64 ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z(ptr long) msvcp90.?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z @@ -4552,14 +4552,14 @@ @ cdecl -arch=win64 ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z(ptr long) msvcp90.?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z @ thiscall -arch=win32 ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI_W@Z(ptr long long) msvcp90.?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI_W@Z @ cdecl -arch=win64 ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K_W@Z(ptr long long) msvcp90.?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K_W@Z -@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z -@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z -@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z -@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z -@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z -@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z(ptr ptr long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z(ptr ptr long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z(ptr str long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z(ptr str long long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z(ptr str long long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z(ptr str long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z @ stub -arch=win32 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z @ stub -arch=win64 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z @ stub -arch=win32 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z @@ -4568,14 +4568,14 @@ @ stub -arch=win64 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z @ stub -arch=win32 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z @ stub -arch=win64 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z -@ stub -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z -@ stub -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z -@ stub -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z -@ stub -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z -@ stub -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z -@ stub -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z(ptr wstr long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z(ptr wstr long long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z(ptr wstr long long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z(ptr wstr long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z(ptr long long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z(ptr long long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z @ cdecl ?round_error@?$numeric_limits@C@std@@SACXZ() msvcp90.?round_error@?$numeric_limits@C@std@@SACXZ @ cdecl ?round_error@?$numeric_limits@D@std@@SADXZ() msvcp90.?round_error@?$numeric_limits@D@std@@SADXZ @ cdecl ?round_error@?$numeric_limits@E@std@@SAEXZ() msvcp90.?round_error@?$numeric_limits@E@std@@SAEXZ diff -Nru wine1.3-1.3.30/dlls/msvcp80/msvcp80.spec wine1.3-1.3.31/dlls/msvcp80/msvcp80.spec --- wine1.3-1.3.30/dlls/msvcp80/msvcp80.spec 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msvcp80/msvcp80.spec 2011-10-21 18:38:36.000000000 +0000 @@ -202,12 +202,12 @@ @ stub -arch=win64 ??$?GO@std@@YA?AV?$complex@O@0@AEBV10@AEBO@Z @ cdecl -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@0@Z(ptr ptr ptr) msvcp90.??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@0@Z @ cdecl -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@0@Z(ptr ptr ptr) msvcp90.??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@0@Z -@ stub -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@D@Z -@ stub -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@D@Z +@ cdecl -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@D@Z(ptr ptr long) msvcp90.??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@D@Z +@ cdecl -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@D@Z(ptr ptr long) msvcp90.??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@D@Z @ cdecl -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@PBD@Z(ptr ptr str) msvcp90.??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@PBD@Z @ cdecl -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@PEBD@Z(ptr ptr str) msvcp90.??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@PEBD@Z -@ stub -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DABV10@@Z -@ stub -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DAEBV10@@Z +@ cdecl -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DABV10@@Z(ptr long ptr) msvcp90.??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DABV10@@Z +@ cdecl -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DAEBV10@@Z(ptr long ptr) msvcp90.??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DAEBV10@@Z @ cdecl -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBDABV10@@Z(ptr str ptr) msvcp90.??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBDABV10@@Z @ cdecl -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBDAEBV10@@Z(ptr str ptr) msvcp90.??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBDAEBV10@@Z @ stub -arch=win32 ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@0@Z @@ -248,12 +248,12 @@ @ cdecl -arch=win64 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@AEBV10@0@Z(ptr ptr ptr) msvcp90.??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@AEBV10@0@Z @ cdecl -arch=win32 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@PB_W@Z(ptr ptr wstr) msvcp90.??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@PB_W@Z @ cdecl -arch=win64 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@AEBV10@PEB_W@Z(ptr ptr wstr) msvcp90.??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@AEBV10@PEB_W@Z -@ stub -arch=win32 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@_W@Z -@ stub -arch=win64 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@AEBV10@_W@Z +@ cdecl -arch=win32 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@_W@Z(ptr ptr long) msvcp90.??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@_W@Z +@ cdecl -arch=win64 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@AEBV10@_W@Z(ptr ptr long) msvcp90.??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@AEBV10@_W@Z @ cdecl -arch=win32 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_WABV10@@Z(ptr wstr ptr) msvcp90.??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_WABV10@@Z @ cdecl -arch=win64 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_WAEBV10@@Z(ptr wstr ptr) msvcp90.??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_WAEBV10@@Z -@ stub -arch=win32 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_WABV10@@Z -@ stub -arch=win64 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_WAEBV10@@Z +@ cdecl -arch=win32 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_WABV10@@Z(ptr long ptr) msvcp90.??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_WABV10@@Z +@ cdecl -arch=win64 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_WAEBV10@@Z(ptr long ptr) msvcp90.??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_WAEBV10@@Z @ stub -arch=win32 ??$?KM@std@@YA?AV?$complex@M@0@ABMABV10@@Z @ stub -arch=win64 ??$?KM@std@@YA?AV?$complex@M@0@AEBMAEBV10@@Z @ stub -arch=win32 ??$?KM@std@@YA?AV?$complex@M@0@ABV10@0@Z @@ -286,64 +286,64 @@ @ stub -arch=win64 ??$?MGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z @ cdecl -arch=win32 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) msvcp90.??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z @ cdecl -arch=win64 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) msvcp90.??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z -@ cdecl -arch=win32 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z(ptr str) msvcp90.??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z -@ cdecl -arch=win64 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z(ptr str) msvcp90.??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z -@ cdecl -arch=win32 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(str ptr) msvcp90.??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z -@ cdecl -arch=win64 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(str ptr) msvcp90.??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z -@ stub -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z -@ stub -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z -@ stub -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z -@ stub -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z +@ cdecl -arch=win32 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z(ptr wstr) msvcp90.??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z +@ cdecl -arch=win64 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z(ptr wstr) msvcp90.??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z +@ cdecl -arch=win32 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) msvcp90.??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z +@ cdecl -arch=win64 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) msvcp90.??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z +@ cdecl -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z(ptr ptr) msvcp90.??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z +@ cdecl -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z(ptr ptr) msvcp90.??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z +@ cdecl -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z(ptr str) msvcp90.??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z +@ cdecl -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z(ptr str) msvcp90.??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z +@ cdecl -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z(str ptr) msvcp90.??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z +@ cdecl -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z(str ptr) msvcp90.??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z @ stub -arch=win32 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win64 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win32 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z @ stub -arch=win64 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z @ stub -arch=win32 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z @ stub -arch=win64 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z -@ stub -arch=win32 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z -@ stub -arch=win64 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z -@ stub -arch=win32 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z -@ stub -arch=win64 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z -@ stub -arch=win32 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z -@ stub -arch=win64 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z -@ stub -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z -@ stub -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z -@ stub -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z -@ stub -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z +@ cdecl -arch=win32 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) msvcp90.??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z +@ cdecl -arch=win64 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) msvcp90.??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z +@ cdecl -arch=win32 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z(ptr wstr) msvcp90.??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z +@ cdecl -arch=win64 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z(ptr wstr) msvcp90.??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z +@ cdecl -arch=win32 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) msvcp90.??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z +@ cdecl -arch=win64 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) msvcp90.??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z +@ cdecl -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z(ptr ptr) msvcp90.??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z +@ cdecl -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z(ptr ptr) msvcp90.??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z +@ cdecl -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z(ptr str) msvcp90.??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z +@ cdecl -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z(ptr str) msvcp90.??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z +@ cdecl -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z(str ptr) msvcp90.??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z +@ cdecl -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z(str ptr) msvcp90.??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z @ stub -arch=win32 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win64 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win32 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z @ stub -arch=win64 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z @ stub -arch=win32 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z @ stub -arch=win64 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z -@ stub -arch=win32 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z -@ stub -arch=win64 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z -@ stub -arch=win32 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z -@ stub -arch=win64 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z -@ stub -arch=win32 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z -@ stub -arch=win64 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z -@ stub -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z -@ stub -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z -@ stub -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z -@ stub -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z +@ cdecl -arch=win32 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) msvcp90.??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z +@ cdecl -arch=win64 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) msvcp90.??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z +@ cdecl -arch=win32 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z(ptr wstr) msvcp90.??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z +@ cdecl -arch=win64 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z(ptr wstr) msvcp90.??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z +@ cdecl -arch=win32 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) msvcp90.??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z +@ cdecl -arch=win64 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) msvcp90.??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z +@ cdecl -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z(ptr ptr) msvcp90.??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z +@ cdecl -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z(ptr ptr) msvcp90.??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z +@ cdecl -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z(ptr str) msvcp90.??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z +@ cdecl -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z(ptr str) msvcp90.??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z +@ cdecl -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z(str ptr) msvcp90.??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z +@ cdecl -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z(str ptr) msvcp90.??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z @ stub -arch=win32 ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win64 ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win32 ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z @ stub -arch=win64 ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z @ stub -arch=win32 ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z @ stub -arch=win64 ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z -@ stub -arch=win32 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z -@ stub -arch=win64 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z -@ stub -arch=win32 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z -@ stub -arch=win64 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z -@ stub -arch=win32 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z -@ stub -arch=win64 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z +@ cdecl -arch=win32 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) msvcp90.??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z +@ cdecl -arch=win64 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) msvcp90.??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z +@ cdecl -arch=win32 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z(ptr wstr) msvcp90.??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z +@ cdecl -arch=win64 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z(ptr wstr) msvcp90.??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z +@ cdecl -arch=win32 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) msvcp90.??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z +@ cdecl -arch=win64 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) msvcp90.??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z @ stub -arch=win32 ??$_Fabs@M@std@@YAMABV?$complex@M@0@PAH@Z @ stub -arch=win64 ??$_Fabs@M@std@@YAMAEBV?$complex@M@0@PEAH@Z @ stub -arch=win32 ??$_Fabs@N@std@@YANABV?$complex@N@0@PAH@Z @@ -518,18 +518,18 @@ @ stub -arch=win64 ??0?$_Mpunct@_W@std@@QEAA@AEBV_Locinfo@1@_K_N@Z @ stub -arch=win32 ??0?$_Mpunct@_W@std@@QAE@I_N@Z @ stub -arch=win64 ??0?$_Mpunct@_W@std@@QEAA@_K_N@Z -@ stub -arch=win32 ??0?$_String_val@DV?$allocator@D@std@@@std@@IAE@V?$allocator@D@1@@Z -@ stub -arch=win64 ??0?$_String_val@DV?$allocator@D@std@@@std@@IEAA@V?$allocator@D@1@@Z -@ stub -arch=win32 ??0?$_String_val@DV?$allocator@D@std@@@std@@QAE@ABV01@@Z -@ stub -arch=win64 ??0?$_String_val@DV?$allocator@D@std@@@std@@QEAA@AEBV01@@Z -@ stub -arch=win32 ??0?$_String_val@GV?$allocator@G@std@@@std@@IAE@V?$allocator@G@1@@Z -@ stub -arch=win64 ??0?$_String_val@GV?$allocator@G@std@@@std@@IEAA@V?$allocator@G@1@@Z -@ stub -arch=win32 ??0?$_String_val@GV?$allocator@G@std@@@std@@QAE@ABV01@@Z -@ stub -arch=win64 ??0?$_String_val@GV?$allocator@G@std@@@std@@QEAA@AEBV01@@Z -@ stub -arch=win32 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IAE@V?$allocator@_W@1@@Z -@ stub -arch=win64 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IEAA@V?$allocator@_W@1@@Z -@ stub -arch=win32 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QAE@ABV01@@Z -@ stub -arch=win64 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QEAA@AEBV01@@Z +@ thiscall -arch=win32 ??0?$_String_val@DV?$allocator@D@std@@@std@@IAE@V?$allocator@D@1@@Z(ptr ptr) msvcp90.??0?$_String_val@DV?$allocator@D@std@@@std@@IAE@V?$allocator@D@1@@Z +@ cdecl -arch=win64 ??0?$_String_val@DV?$allocator@D@std@@@std@@IEAA@V?$allocator@D@1@@Z(ptr ptr) msvcp90.??0?$_String_val@DV?$allocator@D@std@@@std@@IEAA@V?$allocator@D@1@@Z +@ thiscall -arch=win32 ??0?$_String_val@DV?$allocator@D@std@@@std@@QAE@ABV01@@Z(ptr ptr) msvcp90.??0?$_String_val@DV?$allocator@D@std@@@std@@QAE@ABV01@@Z +@ cdecl -arch=win64 ??0?$_String_val@DV?$allocator@D@std@@@std@@QEAA@AEBV01@@Z(ptr ptr) msvcp90.??0?$_String_val@DV?$allocator@D@std@@@std@@QEAA@AEBV01@@Z +@ thiscall -arch=win32 ??0?$_String_val@GV?$allocator@G@std@@@std@@IAE@V?$allocator@G@1@@Z(ptr ptr) msvcp90.??0?$_String_val@GV?$allocator@G@std@@@std@@IAE@V?$allocator@G@1@@Z +@ cdecl -arch=win64 ??0?$_String_val@GV?$allocator@G@std@@@std@@IEAA@V?$allocator@G@1@@Z(ptr ptr) msvcp90.??0?$_String_val@GV?$allocator@G@std@@@std@@IEAA@V?$allocator@G@1@@Z +@ thiscall -arch=win32 ??0?$_String_val@GV?$allocator@G@std@@@std@@QAE@ABV01@@Z(ptr ptr) msvcp90.??0?$_String_val@GV?$allocator@G@std@@@std@@QAE@ABV01@@Z +@ cdecl -arch=win64 ??0?$_String_val@GV?$allocator@G@std@@@std@@QEAA@AEBV01@@Z(ptr ptr) msvcp90.??0?$_String_val@GV?$allocator@G@std@@@std@@QEAA@AEBV01@@Z +@ thiscall -arch=win32 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IAE@V?$allocator@_W@1@@Z(ptr ptr) msvcp90.??0?$_String_val@_WV?$allocator@_W@std@@@std@@IAE@V?$allocator@_W@1@@Z +@ cdecl -arch=win64 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IEAA@V?$allocator@_W@1@@Z(ptr ptr) msvcp90.??0?$_String_val@_WV?$allocator@_W@std@@@std@@IEAA@V?$allocator@_W@1@@Z +@ thiscall -arch=win32 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QAE@ABV01@@Z(ptr ptr) msvcp90.??0?$_String_val@_WV?$allocator@_W@std@@@std@@QAE@ABV01@@Z +@ cdecl -arch=win64 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QEAA@AEBV01@@Z(ptr ptr) msvcp90.??0?$_String_val@_WV?$allocator@_W@std@@@std@@QEAA@AEBV01@@Z @ thiscall -arch=win32 ??0?$allocator@D@std@@QAE@ABV01@@Z(ptr ptr) msvcp90.??0?$allocator@D@std@@QAE@ABV01@@Z @ cdecl -arch=win64 ??0?$allocator@D@std@@QEAA@AEBV01@@Z(ptr ptr) msvcp90.??0?$allocator@D@std@@QEAA@AEBV01@@Z @ thiscall -arch=win32 ??0?$allocator@D@std@@QAE@XZ(ptr) msvcp90.??0?$allocator@D@std@@QAE@XZ @@ -742,28 +742,28 @@ @ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@@Z(ptr ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@@Z @ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@II@Z(ptr ptr long long) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@II@Z @ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1@Z(ptr ptr long long) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1@Z -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z(ptr ptr long long ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z(ptr ptr long long ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z @ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$allocator@D@1@@Z(ptr ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$allocator@D@1@@Z @ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$allocator@D@1@@Z(ptr ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$allocator@D@1@@Z -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0@Z -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z(ptr long long) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0@Z(ptr ptr ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z(ptr long long ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z @ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD@Z(ptr str) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD@Z -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBDAEBV?$allocator@D@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0@Z(ptr ptr ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0@Z +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBDAEBV?$allocator@D@1@@Z(ptr str ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBDAEBV?$allocator@D@1@@Z @ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z(ptr str) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z @ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_K@Z(ptr str long) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_K@Z -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z(ptr str ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z(ptr str long ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z @ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDI@Z(ptr str long) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDI@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@1@0@Z -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@1@0@Z(ptr ptr ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@1@0@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z(ptr str long ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z @ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ(ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@1@0@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KD@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@1@0@Z(ptr ptr ptr ptr ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@1@0@Z +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KD@Z(ptr long long) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KD@Z @ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ(ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z(ptr long long ptr) msvcp90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z @ stub -arch=win32 ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@@Z @ stub -arch=win64 ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@@Z @ stub -arch=win32 ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@II@Z @@ -794,28 +794,28 @@ @ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@@Z(ptr ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@@Z @ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@II@Z(ptr ptr long long) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@II@Z @ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1@Z(ptr ptr long long) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1@Z -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@IIABV?$allocator@_W@1@@Z -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@_W@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@IIABV?$allocator@_W@1@@Z(ptr ptr long long ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@IIABV?$allocator@_W@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@_W@1@@Z(ptr ptr long long ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@_W@1@@Z @ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV?$allocator@_W@1@@Z(ptr ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV?$allocator@_W@1@@Z @ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV?$allocator@_W@1@@Z(ptr ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV?$allocator@_W@1@@Z -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_W@Z -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W0@Z -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_WABV?$allocator@_W@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_W@Z(ptr long long) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_W@Z +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W0@Z(ptr ptr ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W0@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_WABV?$allocator@_W@1@@Z(ptr long long ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_WABV?$allocator@_W@1@@Z @ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W@Z(ptr wstr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W@Z -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W0@Z -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_WAEBV?$allocator@_W@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W0@Z(ptr ptr ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W0@Z +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_WAEBV?$allocator@_W@1@@Z(ptr wstr ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_WAEBV?$allocator@_W@1@@Z @ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z(ptr wstr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z @ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_K@Z(ptr wstr long) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_K@Z -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WABV?$allocator@_W@1@@Z -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_KAEBV?$allocator@_W@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WABV?$allocator@_W@1@@Z(ptr wstr ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WABV?$allocator@_W@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_KAEBV?$allocator@_W@1@@Z(ptr wstr long ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_KAEBV?$allocator@_W@1@@Z @ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WI@Z(ptr wstr long) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WI@Z -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0@Z -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WIABV?$allocator@_W@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0@Z(ptr ptr ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WIABV?$allocator@_W@1@@Z(ptr wstr long ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WIABV?$allocator@_W@1@@Z @ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@XZ(ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@XZ -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0@Z -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_W@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0@Z(ptr ptr ptr ptr ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0@Z +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_W@Z(ptr long long) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_W@Z @ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ(ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_WAEBV?$allocator@_W@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_WAEBV?$allocator@_W@1@@Z(ptr long long ptr) msvcp90.??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_WAEBV?$allocator@_W@1@@Z @ stub -arch=win32 ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@H@Z @ stub -arch=win64 ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@H@Z @ stub -arch=win32 ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z @@ -1364,12 +1364,12 @@ @ stub -arch=win64 ??4?$_Iosb@H@std@@QEAAAEAV01@AEBV01@@Z @ stub -arch=win32 ??4?$_Locbase@H@std@@QAEAAV01@ABV01@@Z @ stub -arch=win64 ??4?$_Locbase@H@std@@QEAAAEAV01@AEBV01@@Z -@ stub -arch=win32 ??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z -@ stub -arch=win64 ??4?$_String_val@DV?$allocator@D@std@@@std@@QEAAAEAV01@AEBV01@@Z -@ stub -arch=win32 ??4?$_String_val@GV?$allocator@G@std@@@std@@QAEAAV01@ABV01@@Z -@ stub -arch=win64 ??4?$_String_val@GV?$allocator@G@std@@@std@@QEAAAEAV01@AEBV01@@Z -@ stub -arch=win32 ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QAEAAV01@ABV01@@Z -@ stub -arch=win64 ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAAEAV01@AEBV01@@Z +@ thiscall -arch=win32 ??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z(ptr ptr) msvcp90.??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z +@ cdecl -arch=win64 ??4?$_String_val@DV?$allocator@D@std@@@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) msvcp90.??4?$_String_val@DV?$allocator@D@std@@@std@@QEAAAEAV01@AEBV01@@Z +@ thiscall -arch=win32 ??4?$_String_val@GV?$allocator@G@std@@@std@@QAEAAV01@ABV01@@Z(ptr ptr) msvcp90.??4?$_String_val@GV?$allocator@G@std@@@std@@QAEAAV01@ABV01@@Z +@ cdecl -arch=win64 ??4?$_String_val@GV?$allocator@G@std@@@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) msvcp90.??4?$_String_val@GV?$allocator@G@std@@@std@@QEAAAEAV01@AEBV01@@Z +@ thiscall -arch=win32 ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QAEAAV01@ABV01@@Z(ptr ptr) msvcp90.??4?$_String_val@_WV?$allocator@_W@std@@@std@@QAEAAV01@ABV01@@Z +@ cdecl -arch=win64 ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) msvcp90.??4?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAAEAV01@AEBV01@@Z @ thiscall -arch=win32 ??4?$allocator@D@std@@QAEAAV01@ABV01@@Z(ptr ptr) msvcp90.??4?$allocator@D@std@@QAEAAV01@ABV01@@Z @ cdecl -arch=win64 ??4?$allocator@D@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) msvcp90.??4?$allocator@D@std@@QEAAAEAV01@AEBV01@@Z @ thiscall -arch=win32 ??4?$allocator@G@std@@QAEAAV01@ABV01@@Z(ptr ptr) msvcp90.??4?$allocator@G@std@@QAEAAV01@ABV01@@Z @@ -1679,12 +1679,12 @@ @ thiscall -arch=win32 ??9locale@std@@QBE_NABV01@@Z(ptr ptr) msvcp90.??9locale@std@@QBE_NABV01@@Z @ cdecl -arch=win64 ??9locale@std@@QEBA_NAEBV01@@Z(ptr ptr) msvcp90.??9locale@std@@QEBA_NAEBV01@@Z @ thiscall -arch=win32 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z(ptr long) msvcp90.??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z -@ stub -arch=win64 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEADU_Size_type_nosscl@01@@Z -@ stub -arch=win32 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADU_Size_type_nosscl@01@@Z +@ cdecl -arch=win64 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEADU_Size_type_nosscl@01@@Z(ptr long) msvcp90.??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEADU_Size_type_nosscl@01@@Z +@ thiscall -arch=win32 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADU_Size_type_nosscl@01@@Z(ptr long) msvcp90.??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADU_Size_type_nosscl@01@@Z @ cdecl -arch=win64 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z(ptr long) msvcp90.??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z @ thiscall -arch=win32 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z(ptr long) msvcp90.??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z -@ stub -arch=win64 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBDU_Size_type_nosscl@01@@Z -@ stub -arch=win32 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDU_Size_type_nosscl@01@@Z +@ cdecl -arch=win64 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBDU_Size_type_nosscl@01@@Z(ptr long) msvcp90.??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBDU_Size_type_nosscl@01@@Z +@ thiscall -arch=win32 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDU_Size_type_nosscl@01@@Z(ptr long) msvcp90.??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDU_Size_type_nosscl@01@@Z @ cdecl -arch=win64 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z(ptr long) msvcp90.??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z @ stub -arch=win32 ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z @ stub -arch=win64 ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAGU_Size_type_nosscl@01@@Z @@ -1695,12 +1695,12 @@ @ stub -arch=win32 ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGU_Size_type_nosscl@01@@Z @ stub -arch=win64 ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z @ thiscall -arch=win32 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WI@Z(ptr long) msvcp90.??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WI@Z -@ stub -arch=win64 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_WU_Size_type_nosscl@01@@Z -@ stub -arch=win32 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WU_Size_type_nosscl@01@@Z +@ cdecl -arch=win64 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_WU_Size_type_nosscl@01@@Z(ptr long) msvcp90.??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_WU_Size_type_nosscl@01@@Z +@ thiscall -arch=win32 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WU_Size_type_nosscl@01@@Z(ptr long) msvcp90.??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WU_Size_type_nosscl@01@@Z @ cdecl -arch=win64 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_W_K@Z(ptr long) msvcp90.??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_W_K@Z @ thiscall -arch=win32 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WI@Z(ptr long) msvcp90.??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WI@Z -@ stub -arch=win64 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_WU_Size_type_nosscl@01@@Z -@ stub -arch=win32 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WU_Size_type_nosscl@01@@Z +@ cdecl -arch=win64 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_WU_Size_type_nosscl@01@@Z(ptr long) msvcp90.??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_WU_Size_type_nosscl@01@@Z +@ thiscall -arch=win32 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WU_Size_type_nosscl@01@@Z(ptr long) msvcp90.??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WU_Size_type_nosscl@01@@Z @ cdecl -arch=win64 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_W_K@Z(ptr long) msvcp90.??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_W_K@Z @ thiscall -arch=win32 ??Bid@locale@std@@QAEIXZ(ptr) msvcp90.??Bid@locale@std@@QAEIXZ @ cdecl -arch=win64 ??Bid@locale@std@@QEAA_KXZ(ptr) msvcp90.??Bid@locale@std@@QEAA_KXZ @@ -1952,12 +1952,12 @@ @ stub -arch=win64 ??_D?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ @ stub -arch=win32 ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ @ stub -arch=win64 ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ -@ stub -arch=win32 ??_F?$_String_val@DV?$allocator@D@std@@@std@@QAEXXZ -@ stub -arch=win64 ??_F?$_String_val@DV?$allocator@D@std@@@std@@QEAAXXZ -@ stub -arch=win32 ??_F?$_String_val@GV?$allocator@G@std@@@std@@QAEXXZ -@ stub -arch=win64 ??_F?$_String_val@GV?$allocator@G@std@@@std@@QEAAXXZ -@ stub -arch=win32 ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QAEXXZ -@ stub -arch=win64 ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAXXZ +@ thiscall -arch=win32 ??_F?$_String_val@DV?$allocator@D@std@@@std@@QAEXXZ(ptr) msvcp90.??_F?$_String_val@DV?$allocator@D@std@@@std@@QAEXXZ +@ cdecl -arch=win64 ??_F?$_String_val@DV?$allocator@D@std@@@std@@QEAAXXZ(ptr) msvcp90.??_F?$_String_val@DV?$allocator@D@std@@@std@@QEAAXXZ +@ thiscall -arch=win32 ??_F?$_String_val@GV?$allocator@G@std@@@std@@QAEXXZ(ptr) msvcp90.??_F?$_String_val@GV?$allocator@G@std@@@std@@QAEXXZ +@ cdecl -arch=win64 ??_F?$_String_val@GV?$allocator@G@std@@@std@@QEAAXXZ(ptr) msvcp90.??_F?$_String_val@GV?$allocator@G@std@@@std@@QEAAXXZ +@ thiscall -arch=win32 ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QAEXXZ(ptr) msvcp90.??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QAEXXZ +@ cdecl -arch=win64 ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAXXZ(ptr) msvcp90.??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAXXZ @ stub -arch=win32 ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEXXZ @ stub -arch=win64 ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAXXZ @ stub -arch=win32 ??_F?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEXXZ @@ -2926,16 +2926,16 @@ @ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z(ptr ptr) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z @ thiscall -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z(ptr ptr long long) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z @ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z(ptr ptr long long) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z -@ stub -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z -@ stub -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z -@ stub -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z +@ thiscall -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z(ptr long long) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z +@ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z(ptr ptr ptr) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z +@ thiscall -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z(ptr ptr ptr) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z @ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z(ptr str) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z @ thiscall -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z(ptr str) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z @ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z(ptr str long) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z @ thiscall -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z(ptr str long) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z -@ stub -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z -@ stub -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z -@ stub -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z +@ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z(ptr ptr ptr) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z +@ thiscall -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z(ptr ptr ptr ptr ptr) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z +@ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z(ptr long long) msvcp90.?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z @ stub -arch=win32 ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z @ stub -arch=win64 ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z @ stub -arch=win32 ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z @@ -2954,16 +2954,16 @@ @ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@@Z(ptr ptr) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@@Z @ thiscall -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@II@Z(ptr ptr long long) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@II@Z @ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@_K1@Z(ptr ptr long long) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@_K1@Z -@ stub -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z -@ stub -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z -@ stub -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z +@ thiscall -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z(ptr long long) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z +@ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z(ptr ptr ptr) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z +@ thiscall -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z(ptr ptr ptr) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z @ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W@Z(ptr wstr) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W@Z @ thiscall -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W@Z(ptr wstr) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W@Z @ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W_K@Z(ptr wstr long) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W_K@Z @ thiscall -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_WI@Z(ptr wstr long) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_WI@Z -@ stub -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z -@ stub -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z -@ stub -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z +@ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z(ptr ptr ptr) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z +@ thiscall -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z(ptr ptr ptr ptr ptr) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z +@ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z(ptr long long) msvcp90.?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z @ cdecl -arch=win32 ?assign@?$char_traits@D@std@@SAPADPADID@Z(ptr long long) msvcp90.?assign@?$char_traits@D@std@@SAPADPADID@Z @ cdecl -arch=win64 ?assign@?$char_traits@D@std@@SAPEADPEAD_KD@Z(ptr long long) msvcp90.?assign@?$char_traits@D@std@@SAPEADPEAD_KD@Z @ cdecl -arch=win32 ?assign@?$char_traits@D@std@@SAXAADABD@Z(ptr ptr) msvcp90.?assign@?$char_traits@D@std@@SAXAADABD@Z @@ -3817,14 +3817,14 @@ @ cdecl -arch=win64 ?find@?$char_traits@G@std@@SAPEBGPEBG_KAEBG@Z(ptr long ptr) msvcp90.?find@?$char_traits@G@std@@SAPEBGPEBG_KAEBG@Z @ cdecl -arch=win32 ?find@?$char_traits@_W@std@@SAPB_WPB_WIAB_W@Z(ptr long ptr) msvcp90.?find@?$char_traits@_W@std@@SAPB_WPB_WIAB_W@Z @ cdecl -arch=win64 ?find@?$char_traits@_W@std@@SAPEB_WPEB_W_KAEB_W@Z(ptr long ptr) msvcp90.?find@?$char_traits@_W@std@@SAPEB_WPEB_W_KAEB_W@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z(ptr long long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z(ptr long long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z(ptr ptr long long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z(ptr ptr long long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z @ stub -arch=win32 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z @ stub -arch=win64 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z @ stub -arch=win32 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z @@ -3833,14 +3833,14 @@ @ stub -arch=win64 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z @ stub -arch=win32 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z @ stub -arch=win64 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z(ptr ptr long long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z(ptr ptr long long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z(ptr ptr long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z(ptr long long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z(ptr long long) msvcp90.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z @ thiscall -arch=win32 ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z @ cdecl -arch=win64 ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z @ thiscall -arch=win32 ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z(ptr long long) msvcp90.?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z @@ -3865,14 +3865,14 @@ @ cdecl -arch=win64 ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z(ptr ptr long) msvcp90.?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z @ thiscall -arch=win32 ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z(ptr long long) msvcp90.?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z @ cdecl -arch=win64 ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z(ptr long long) msvcp90.?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z(ptr long long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z(ptr long long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z(ptr str long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z(ptr str long long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z(ptr str long long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z(ptr str long) msvcp90.?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z @ stub -arch=win32 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z @ stub -arch=win64 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z @ stub -arch=win32 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z @@ -3881,14 +3881,14 @@ @ stub -arch=win64 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z @ stub -arch=win32 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z @ stub -arch=win64 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z(ptr wstr long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z(ptr wstr long long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z(ptr wstr long long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z(ptr wstr long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z(ptr long long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z(ptr long long) msvcp90.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z @ thiscall -arch=win32 ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z @ cdecl -arch=win64 ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z @ thiscall -arch=win32 ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z(ptr long long) msvcp90.?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z @@ -4069,12 +4069,12 @@ @ stub -arch=win64 ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEA_K@Z @ stub -arch=win32 ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAA_N@Z @ stub -arch=win64 ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEA_N@Z -@ stub -arch=win32 ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ -@ stub -arch=win64 ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ +@ thiscall -arch=win32 ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ(ptr) msvcp90.?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ +@ cdecl -arch=win64 ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ(ptr) msvcp90.?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ @ stub -arch=win32 ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$allocator@G@2@XZ @ stub -arch=win64 ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$allocator@G@2@XZ -@ stub -arch=win32 ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$allocator@_W@2@XZ -@ stub -arch=win64 ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$allocator@_W@2@XZ +@ thiscall -arch=win32 ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$allocator@_W@2@XZ(ptr) msvcp90.?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$allocator@_W@2@XZ +@ cdecl -arch=win64 ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$allocator@_W@2@XZ(ptr) msvcp90.?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$allocator@_W@2@XZ @ stub -arch=win32 ?get_date@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHPAUtm@@@Z @ stub -arch=win64 ?get_date@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHPEAUtm@@@Z @ stub -arch=win32 ?get_date@?$time_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHPAUtm@@@Z @@ -4485,12 +4485,12 @@ @ cdecl -arch=win64 ?max_size@?$allocator@G@std@@QEBA_KXZ(ptr) msvcp90.?max_size@?$allocator@G@std@@QEBA_KXZ @ thiscall -arch=win32 ?max_size@?$allocator@_W@std@@QBEIXZ(ptr) msvcp90.?max_size@?$allocator@_W@std@@QBEIXZ @ cdecl -arch=win64 ?max_size@?$allocator@_W@std@@QEBA_KXZ(ptr) msvcp90.?max_size@?$allocator@_W@std@@QEBA_KXZ -@ stub -arch=win32 ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ -@ stub -arch=win64 ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ +@ thiscall -arch=win32 ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ(ptr) msvcp90.?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ +@ cdecl -arch=win64 ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ(ptr) msvcp90.?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ @ stub -arch=win32 ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ @ stub -arch=win64 ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ -@ stub -arch=win32 ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ -@ stub -arch=win64 ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ +@ thiscall -arch=win32 ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ(ptr) msvcp90.?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ +@ cdecl -arch=win64 ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ(ptr) msvcp90.?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ @ cdecl ?min@?$numeric_limits@C@std@@SACXZ() msvcp90.?min@?$numeric_limits@C@std@@SACXZ @ cdecl ?min@?$numeric_limits@D@std@@SADXZ() msvcp90.?min@?$numeric_limits@D@std@@SADXZ @ cdecl ?min@?$numeric_limits@E@std@@SAEXZ() msvcp90.?min@?$numeric_limits@E@std@@SAEXZ @@ -5071,16 +5071,16 @@ @ cdecl -arch=win64 ?rend@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA?AV?$reverse_iterator@V?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ(ptr ptr) msvcp90.?rend@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA?AV?$reverse_iterator@V?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ @ thiscall -arch=win32 ?rend@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$reverse_iterator@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ(ptr ptr) msvcp90.?rend@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$reverse_iterator@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ @ cdecl -arch=win64 ?rend@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$reverse_iterator@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ(ptr ptr) msvcp90.?rend@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$reverse_iterator@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z(ptr long long long long) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z(ptr long long ptr long long) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z(ptr long long ptr long long) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z(ptr long long long long) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z(ptr long long ptr long) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z(ptr long long ptr long) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z @ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0ABV12@@Z @ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0AEBV12@@Z @ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0ID@Z @@ -5115,16 +5115,16 @@ @ stub -arch=win64 ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@V?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@1@Z @ stub -arch=win32 ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@1@Z @ stub -arch=win64 ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@V?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0_KG@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K00_W@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@II@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@III_W@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_W@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W0@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_WI@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W@Z +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@@Z +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K00_W@Z(ptr long long ptr long long) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K00_W@Z +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@II@Z(ptr long long ptr long long) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@II@Z +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z(ptr long long ptr long long) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@III_W@Z(ptr long long long long) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@III_W@Z +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@@Z +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_W@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_W@Z +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W0@Z(ptr long long ptr long) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W0@Z +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_WI@Z(ptr long long ptr long) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_WI@Z +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W@Z(ptr long long ptr) msvcp90.?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W@Z @ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0ABV12@@Z @ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0AEBV12@@Z @ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0I_W@Z @@ -5137,12 +5137,12 @@ @ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@1@Z @ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@1@Z @ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0_K_W@Z -@ stub -arch=win32 ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z -@ stub -arch=win64 ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z +@ thiscall -arch=win32 ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z(ptr long) msvcp90.?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z +@ cdecl -arch=win64 ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z(ptr long) msvcp90.?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z @ stub -arch=win32 ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z @ stub -arch=win64 ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z -@ stub -arch=win32 ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z -@ stub -arch=win64 ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z +@ thiscall -arch=win32 ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z(ptr long) msvcp90.?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z +@ cdecl -arch=win64 ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z(ptr long) msvcp90.?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z @ stub ?resetiosflags@std@@YA?AU?$_Smanip@H@1@H@Z @ thiscall -arch=win32 ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z(ptr long) msvcp90.?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z @ cdecl -arch=win64 ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z(ptr long) msvcp90.?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z @@ -5156,14 +5156,14 @@ @ cdecl -arch=win64 ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z(ptr long) msvcp90.?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z @ thiscall -arch=win32 ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI_W@Z(ptr long long) msvcp90.?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI_W@Z @ cdecl -arch=win64 ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K_W@Z(ptr long long) msvcp90.?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K_W@Z -@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z -@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z -@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z -@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z -@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z -@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z(ptr ptr long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z(ptr ptr long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z(ptr str long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z(ptr str long long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z(ptr str long long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z(ptr str long) msvcp90.?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z @ stub -arch=win32 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z @ stub -arch=win64 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z @ stub -arch=win32 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z @@ -5172,14 +5172,14 @@ @ stub -arch=win64 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z @ stub -arch=win32 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z @ stub -arch=win64 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z -@ stub -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z -@ stub -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z -@ stub -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z -@ stub -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z -@ stub -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z -@ stub -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z(ptr ptr long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z(ptr wstr long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z(ptr wstr long long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z(ptr wstr long long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z(ptr wstr long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z(ptr long long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z +@ cdecl -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z(ptr long long) msvcp90.?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z @ cdecl ?round_error@?$numeric_limits@C@std@@SACXZ() msvcp90.?round_error@?$numeric_limits@C@std@@SACXZ @ cdecl ?round_error@?$numeric_limits@D@std@@SADXZ() msvcp90.?round_error@?$numeric_limits@D@std@@SADXZ @ cdecl ?round_error@?$numeric_limits@E@std@@SAEXZ() msvcp90.?round_error@?$numeric_limits@E@std@@SAEXZ diff -Nru wine1.3-1.3.30/dlls/msvcp90/msvcp90.h wine1.3-1.3.31/dlls/msvcp90/msvcp90.h --- wine1.3-1.3.30/dlls/msvcp90/msvcp90.h 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msvcp90/msvcp90.h 2011-10-21 18:38:36.000000000 +0000 @@ -187,8 +187,10 @@ char* __stdcall MSVCP_allocator_char_allocate(void*, MSVCP_size_t); void __stdcall MSVCP_allocator_char_deallocate(void*, char*, MSVCP_size_t); +MSVCP_size_t __stdcall MSVCP_allocator_char_max_size(void*); wchar_t* __stdcall MSVCP_allocator_wchar_allocate(void*, MSVCP_size_t); void __stdcall MSVCP_allocator_wchar_deallocate(void*, wchar_t*, MSVCP_size_t); +MSVCP_size_t __stdcall MSVCP_allocator_wchar_max_size(void*); /* class locale */ typedef struct diff -Nru wine1.3-1.3.30/dlls/msvcp90/msvcp90.spec wine1.3-1.3.31/dlls/msvcp90/msvcp90.spec --- wine1.3-1.3.30/dlls/msvcp90/msvcp90.spec 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msvcp90/msvcp90.spec 2011-10-21 18:38:36.000000000 +0000 @@ -202,12 +202,12 @@ @ stub -arch=win64 ??$?GO@std@@YA?AV?$complex@O@0@AEBV10@AEBO@Z @ cdecl -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@0@Z(ptr ptr ptr) MSVCP_basic_string_char_concatenate @ cdecl -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@0@Z(ptr ptr ptr) MSVCP_basic_string_char_concatenate -@ stub -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@D@Z -@ stub -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@D@Z +@ cdecl -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@D@Z(ptr ptr long) MSVCP_basic_string_char_concatenate_bstr_ch +@ cdecl -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@D@Z(ptr ptr long) MSVCP_basic_string_char_concatenate_bstr_ch @ cdecl -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@PBD@Z(ptr ptr str) MSVCP_basic_string_char_concatenate_bstr_cstr @ cdecl -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@PEBD@Z(ptr ptr str) MSVCP_basic_string_char_concatenate_bstr_cstr -@ stub -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DABV10@@Z -@ stub -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DAEBV10@@Z +@ cdecl -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DABV10@@Z(ptr long ptr) MSVCP_basic_string_char_concatenate_ch_bstr +@ cdecl -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DAEBV10@@Z(ptr long ptr) MSVCP_basic_string_char_concatenate_ch_bstr @ cdecl -arch=win32 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBDABV10@@Z(ptr str ptr) MSVCP_basic_string_char_concatenate_cstr_bstr @ cdecl -arch=win64 ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBDAEBV10@@Z(ptr str ptr) MSVCP_basic_string_char_concatenate_cstr_bstr @ stub -arch=win32 ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@0@Z @@ -248,12 +248,12 @@ @ cdecl -arch=win64 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@AEBV10@0@Z(ptr ptr ptr) MSVCP_basic_string_wchar_concatenate @ cdecl -arch=win32 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@PB_W@Z(ptr ptr wstr) MSVCP_basic_string_wchar_concatenate_bstr_cstr @ cdecl -arch=win64 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@AEBV10@PEB_W@Z(ptr ptr wstr) MSVCP_basic_string_wchar_concatenate_bstr_cstr -@ stub -arch=win32 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@_W@Z -@ stub -arch=win64 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@AEBV10@_W@Z +@ cdecl -arch=win32 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@_W@Z(ptr ptr long) MSVCP_basic_string_wchar_concatenate_bstr_ch +@ cdecl -arch=win64 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@AEBV10@_W@Z(ptr ptr long) MSVCP_basic_string_wchar_concatenate_bstr_ch @ cdecl -arch=win32 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_WABV10@@Z(ptr wstr ptr) MSVCP_basic_string_wchar_concatenate_cstr_bstr @ cdecl -arch=win64 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_WAEBV10@@Z(ptr wstr ptr) MSVCP_basic_string_wchar_concatenate_cstr_bstr -@ stub -arch=win32 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_WABV10@@Z -@ stub -arch=win64 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_WAEBV10@@Z +@ cdecl -arch=win32 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_WABV10@@Z(ptr long ptr) MSVCP_basic_string_wchar_concatenate_ch_bstr +@ cdecl -arch=win64 ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_WAEBV10@@Z(ptr long ptr) MSVCP_basic_string_wchar_concatenate_ch_bstr @ stub -arch=win32 ??$?KM@std@@YA?AV?$complex@M@0@ABMABV10@@Z @ stub -arch=win64 ??$?KM@std@@YA?AV?$complex@M@0@AEBMAEBV10@@Z @ stub -arch=win32 ??$?KM@std@@YA?AV?$complex@M@0@ABV10@0@Z @@ -286,64 +286,64 @@ @ stub -arch=win64 ??$?MGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z @ cdecl -arch=win32 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) MSVCP_basic_string_wchar_lower @ cdecl -arch=win64 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) MSVCP_basic_string_wchar_lower -@ cdecl -arch=win32 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z(ptr str) MSVCP_basic_string_wchar_lower_bstr_cstr -@ cdecl -arch=win64 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z(ptr str) MSVCP_basic_string_wchar_lower_bstr_cstr -@ cdecl -arch=win32 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(str ptr) MSVCP_basic_string_wchar_lower_cstr_bstr -@ cdecl -arch=win64 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(str ptr) MSVCP_basic_string_wchar_lower_cstr_bstr -@ stub -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z -@ stub -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z -@ stub -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z -@ stub -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z +@ cdecl -arch=win32 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z(ptr wstr) MSVCP_basic_string_wchar_lower_bstr_cstr +@ cdecl -arch=win64 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z(ptr wstr) MSVCP_basic_string_wchar_lower_bstr_cstr +@ cdecl -arch=win32 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) MSVCP_basic_string_wchar_lower_cstr_bstr +@ cdecl -arch=win64 ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) MSVCP_basic_string_wchar_lower_cstr_bstr +@ cdecl -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z(ptr ptr) MSVCP_basic_string_char_leq +@ cdecl -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z(ptr ptr) MSVCP_basic_string_char_leq +@ cdecl -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z(ptr str) MSVCP_basic_string_char_leq_bstr_cstr +@ cdecl -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z(ptr str) MSVCP_basic_string_char_leq_bstr_cstr +@ cdecl -arch=win32 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z(str ptr) MSVCP_basic_string_char_leq_cstr_bstr +@ cdecl -arch=win64 ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z(str ptr) MSVCP_basic_string_char_leq_cstr_bstr @ stub -arch=win32 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win64 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win32 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z @ stub -arch=win64 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z @ stub -arch=win32 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z @ stub -arch=win64 ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z -@ stub -arch=win32 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z -@ stub -arch=win64 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z -@ stub -arch=win32 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z -@ stub -arch=win64 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z -@ stub -arch=win32 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z -@ stub -arch=win64 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z -@ stub -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z -@ stub -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z -@ stub -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z -@ stub -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z +@ cdecl -arch=win32 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) MSVCP_basic_string_wchar_leq +@ cdecl -arch=win64 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) MSVCP_basic_string_wchar_leq +@ cdecl -arch=win32 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z(ptr wstr) MSVCP_basic_string_wchar_leq_bstr_cstr +@ cdecl -arch=win64 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z(ptr wstr) MSVCP_basic_string_wchar_leq_bstr_cstr +@ cdecl -arch=win32 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) MSVCP_basic_string_wchar_leq_cstr_bstr +@ cdecl -arch=win64 ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) MSVCP_basic_string_wchar_leq_cstr_bstr +@ cdecl -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z(ptr ptr) MSVCP_basic_string_char_greater +@ cdecl -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z(ptr ptr) MSVCP_basic_string_char_greater +@ cdecl -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z(ptr str) MSVCP_basic_string_char_greater_bstr_cstr +@ cdecl -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z(ptr str) MSVCP_basic_string_char_greater_bstr_cstr +@ cdecl -arch=win32 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z(str ptr) MSVCP_basic_string_char_greater_cstr_bstr +@ cdecl -arch=win64 ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z(str ptr) MSVCP_basic_string_char_greater_cstr_bstr @ stub -arch=win32 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win64 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win32 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z @ stub -arch=win64 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z @ stub -arch=win32 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z @ stub -arch=win64 ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z -@ stub -arch=win32 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z -@ stub -arch=win64 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z -@ stub -arch=win32 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z -@ stub -arch=win64 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z -@ stub -arch=win32 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z -@ stub -arch=win64 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z -@ stub -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z -@ stub -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z -@ stub -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z -@ stub -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z -@ stub -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z +@ cdecl -arch=win32 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) MSVCP_basic_string_wchar_greater +@ cdecl -arch=win64 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) MSVCP_basic_string_wchar_greater +@ cdecl -arch=win32 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z(ptr wstr) MSVCP_basic_string_wchar_greater_bstr_cstr +@ cdecl -arch=win64 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z(ptr wstr) MSVCP_basic_string_wchar_greater_bstr_cstr +@ cdecl -arch=win32 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) MSVCP_basic_string_wchar_greater_cstr_bstr +@ cdecl -arch=win64 ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) MSVCP_basic_string_wchar_greater_cstr_bstr +@ cdecl -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z(ptr ptr) MSVCP_basic_string_char_geq +@ cdecl -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z(ptr ptr) MSVCP_basic_string_char_geq +@ cdecl -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z(ptr str) MSVCP_basic_string_char_geq_bstr_cstr +@ cdecl -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z(ptr str) MSVCP_basic_string_char_geq_bstr_cstr +@ cdecl -arch=win32 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z(str ptr) MSVCP_basic_string_char_geq_cstr_bstr +@ cdecl -arch=win64 ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z(str ptr) MSVCP_basic_string_char_geq_cstr_bstr @ stub -arch=win32 ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win64 ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z @ stub -arch=win32 ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z @ stub -arch=win64 ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z @ stub -arch=win32 ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z @ stub -arch=win64 ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z -@ stub -arch=win32 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z -@ stub -arch=win64 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z -@ stub -arch=win32 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z -@ stub -arch=win64 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z -@ stub -arch=win32 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z -@ stub -arch=win64 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z +@ cdecl -arch=win32 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) MSVCP_basic_string_wchar_geq +@ cdecl -arch=win64 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z(ptr ptr) MSVCP_basic_string_wchar_geq +@ cdecl -arch=win32 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z(ptr wstr) MSVCP_basic_string_wchar_geq_bstr_cstr +@ cdecl -arch=win64 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z(ptr wstr) MSVCP_basic_string_wchar_geq_bstr_cstr +@ cdecl -arch=win32 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) MSVCP_basic_string_wchar_geq_cstr_bstr +@ cdecl -arch=win64 ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(wstr ptr) MSVCP_basic_string_wchar_geq_cstr_bstr @ stub -arch=win32 ??$_Fabs@M@std@@YAMABV?$complex@M@0@PAH@Z @ stub -arch=win64 ??$_Fabs@M@std@@YAMAEBV?$complex@M@0@PEAH@Z @ stub -arch=win32 ??$_Fabs@N@std@@YANABV?$complex@N@0@PAH@Z @@ -518,18 +518,18 @@ @ stub -arch=win64 ??0?$_Mpunct@_W@std@@QEAA@AEBV_Locinfo@1@_K_N2@Z @ stub -arch=win32 ??0?$_Mpunct@_W@std@@QAE@I_N@Z @ stub -arch=win64 ??0?$_Mpunct@_W@std@@QEAA@_K_N@Z -@ stub -arch=win32 ??0?$_String_val@DV?$allocator@D@std@@@std@@IAE@V?$allocator@D@1@@Z -@ stub -arch=win64 ??0?$_String_val@DV?$allocator@D@std@@@std@@IEAA@V?$allocator@D@1@@Z -@ stub -arch=win32 ??0?$_String_val@DV?$allocator@D@std@@@std@@QAE@ABV01@@Z -@ stub -arch=win64 ??0?$_String_val@DV?$allocator@D@std@@@std@@QEAA@AEBV01@@Z -@ stub -arch=win32 ??0?$_String_val@GV?$allocator@G@std@@@std@@IAE@V?$allocator@G@1@@Z -@ stub -arch=win64 ??0?$_String_val@GV?$allocator@G@std@@@std@@IEAA@V?$allocator@G@1@@Z -@ stub -arch=win32 ??0?$_String_val@GV?$allocator@G@std@@@std@@QAE@ABV01@@Z -@ stub -arch=win64 ??0?$_String_val@GV?$allocator@G@std@@@std@@QEAA@AEBV01@@Z -@ stub -arch=win32 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IAE@V?$allocator@_W@1@@Z -@ stub -arch=win64 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IEAA@V?$allocator@_W@1@@Z -@ stub -arch=win32 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QAE@ABV01@@Z -@ stub -arch=win64 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QEAA@AEBV01@@Z +@ thiscall -arch=win32 ??0?$_String_val@DV?$allocator@D@std@@@std@@IAE@V?$allocator@D@1@@Z(ptr ptr) _String_val_null_ctor +@ cdecl -arch=win64 ??0?$_String_val@DV?$allocator@D@std@@@std@@IEAA@V?$allocator@D@1@@Z(ptr ptr) _String_val_null_ctor +@ thiscall -arch=win32 ??0?$_String_val@DV?$allocator@D@std@@@std@@QAE@ABV01@@Z(ptr ptr) _String_val_null_ctor +@ cdecl -arch=win64 ??0?$_String_val@DV?$allocator@D@std@@@std@@QEAA@AEBV01@@Z(ptr ptr) _String_val_null_ctor +@ thiscall -arch=win32 ??0?$_String_val@GV?$allocator@G@std@@@std@@IAE@V?$allocator@G@1@@Z(ptr ptr) _String_val_null_ctor +@ cdecl -arch=win64 ??0?$_String_val@GV?$allocator@G@std@@@std@@IEAA@V?$allocator@G@1@@Z(ptr ptr) _String_val_null_ctor +@ thiscall -arch=win32 ??0?$_String_val@GV?$allocator@G@std@@@std@@QAE@ABV01@@Z(ptr ptr) _String_val_null_ctor +@ cdecl -arch=win64 ??0?$_String_val@GV?$allocator@G@std@@@std@@QEAA@AEBV01@@Z(ptr ptr) _String_val_null_ctor +@ thiscall -arch=win32 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IAE@V?$allocator@_W@1@@Z(ptr ptr) _String_val_null_ctor +@ cdecl -arch=win64 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IEAA@V?$allocator@_W@1@@Z(ptr ptr) _String_val_null_ctor +@ thiscall -arch=win32 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QAE@ABV01@@Z(ptr ptr) _String_val_null_ctor +@ cdecl -arch=win64 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QEAA@AEBV01@@Z(ptr ptr) _String_val_null_ctor @ thiscall -arch=win32 ??0?$allocator@D@std@@QAE@ABV01@@Z(ptr ptr) MSVCP_allocator_char_copy_ctor @ cdecl -arch=win64 ??0?$allocator@D@std@@QEAA@AEBV01@@Z(ptr ptr) MSVCP_allocator_char_copy_ctor @ thiscall -arch=win32 ??0?$allocator@D@std@@QAE@XZ(ptr) MSVCP_allocator_char_ctor @@ -736,28 +736,28 @@ @ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@@Z(ptr ptr) MSVCP_basic_string_char_copy_ctor @ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@II@Z(ptr ptr long long) MSVCP_basic_string_char_ctor_substr @ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1@Z(ptr ptr long long) MSVCP_basic_string_char_ctor_substr -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z(ptr ptr long long ptr) MSVCP_basic_string_char_ctor_substr_alloc +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z(ptr ptr long long ptr) MSVCP_basic_string_char_ctor_substr_alloc @ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$allocator@D@1@@Z(ptr ptr) MSVCP_basic_string_char_ctor_alloc @ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$allocator@D@1@@Z(ptr ptr) MSVCP_basic_string_char_ctor_alloc -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0@Z -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z(ptr long long) MSVCP_basic_string_char_ctor_ch +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0@Z(ptr ptr ptr) MSVCP_basic_string_char_ctor_ptr_ptr +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z(ptr long long ptr) MSVCP_basic_string_char_ctor_ch_alloc @ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD@Z(ptr str) MSVCP_basic_string_char_ctor_cstr -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBDAEBV?$allocator@D@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0@Z(ptr ptr ptr) MSVCP_basic_string_char_ctor_ptr_ptr +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBDAEBV?$allocator@D@1@@Z(ptr str ptr) MSVCP_basic_string_char_ctor_cstr_alloc @ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z(ptr str) MSVCP_basic_string_char_ctor_cstr @ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_K@Z(ptr str long) MSVCP_basic_string_char_ctor_cstr_len -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z(ptr str ptr) MSVCP_basic_string_char_ctor_cstr_alloc +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z(ptr str long ptr) MSVCP_basic_string_char_ctor_cstr_len_alloc @ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDI@Z(ptr str long) MSVCP_basic_string_char_ctor_cstr_len -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@1@0@Z -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@1@0@Z(ptr ptr ptr) MSVCP_basic_string_char_ctor_iter +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z(ptr str long ptr) MSVCP_basic_string_char_ctor_cstr_len_alloc @ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ(ptr) MSVCP_basic_string_char_ctor -@ stub -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@1@0@Z -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KD@Z +@ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@1@0@Z(ptr ptr ptr ptr ptr) MSVCP_basic_string_char_ctor_iter +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KD@Z(ptr long long) MSVCP_basic_string_char_ctor_ch @ thiscall -arch=win32 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ(ptr) MSVCP_basic_string_char_ctor -@ stub -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z(ptr long long ptr) MSVCP_basic_string_char_ctor_ch_alloc @ stub -arch=win32 ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@@Z @ stub -arch=win64 ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@@Z @ stub -arch=win32 ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@II@Z @@ -788,28 +788,28 @@ @ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@@Z(ptr ptr) MSVCP_basic_string_wchar_copy_ctor @ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@II@Z(ptr ptr long long) MSVCP_basic_string_wchar_ctor_substr @ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1@Z(ptr ptr long long) MSVCP_basic_string_wchar_ctor_substr -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@IIABV?$allocator@_W@1@@Z -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@_W@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@IIABV?$allocator@_W@1@@Z(ptr ptr long long ptr) MSVCP_basic_string_wchar_ctor_substr_alloc +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@_W@1@@Z(ptr ptr long long ptr) MSVCP_basic_string_wchar_ctor_substr_alloc @ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV?$allocator@_W@1@@Z(ptr ptr) MSVCP_basic_string_wchar_ctor_alloc @ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV?$allocator@_W@1@@Z(ptr ptr) MSVCP_basic_string_wchar_ctor_alloc -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_W@Z -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W0@Z -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_WABV?$allocator@_W@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_W@Z(ptr long long) MSVCP_basic_string_wchar_ctor_ch +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W0@Z(ptr ptr ptr) MSVCP_basic_string_wchar_ctor_ptr_ptr +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_WABV?$allocator@_W@1@@Z(ptr long long ptr) MSVCP_basic_string_wchar_ctor_ch_alloc @ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W@Z(ptr wstr) MSVCP_basic_string_wchar_ctor_cstr -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W0@Z -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_WAEBV?$allocator@_W@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W0@Z(ptr ptr ptr) MSVCP_basic_string_wchar_ctor_ptr_ptr +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_WAEBV?$allocator@_W@1@@Z(ptr wstr ptr) MSVCP_basic_string_wchar_ctor_cstr_alloc @ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z(ptr wstr) MSVCP_basic_string_wchar_ctor_cstr @ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_K@Z(ptr wstr long) MSVCP_basic_string_wchar_ctor_cstr_len -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WABV?$allocator@_W@1@@Z -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_KAEBV?$allocator@_W@1@@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WABV?$allocator@_W@1@@Z(ptr wstr ptr) MSVCP_basic_string_wchar_ctor_cstr_alloc +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_KAEBV?$allocator@_W@1@@Z(ptr wstr long ptr) MSVCP_basic_string_wchar_ctor_cstr_len_alloc @ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WI@Z(ptr wstr long) MSVCP_basic_string_wchar_ctor_cstr_len -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0@Z -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WIABV?$allocator@_W@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0@Z(ptr ptr ptr) MSVCP_basic_string_wchar_ctor_iter +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WIABV?$allocator@_W@1@@Z(ptr wstr long ptr) MSVCP_basic_string_wchar_ctor_cstr_len_alloc @ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@XZ(ptr) MSVCP_basic_string_wchar_ctor -@ stub -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0@Z -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_W@Z +@ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0@Z(ptr ptr ptr ptr ptr) MSVCP_basic_string_wchar_ctor_iter +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_W@Z(ptr long long) MSVCP_basic_string_wchar_ctor_ch @ thiscall -arch=win32 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ(ptr) MSVCP_basic_string_wchar_ctor -@ stub -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_WAEBV?$allocator@_W@1@@Z +@ cdecl -arch=win64 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_WAEBV?$allocator@_W@1@@Z(ptr long long ptr) MSVCP_basic_string_wchar_ctor_ch_alloc @ stub -arch=win32 ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@H@Z @ stub -arch=win64 ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@H@Z @ stub -arch=win32 ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z @@ -1366,12 +1366,12 @@ @ stub -arch=win64 ??4?$_Iosb@H@std@@QEAAAEAV01@AEBV01@@Z @ stub -arch=win32 ??4?$_Locbase@H@std@@QAEAAV01@ABV01@@Z @ stub -arch=win64 ??4?$_Locbase@H@std@@QEAAAEAV01@AEBV01@@Z -@ stub -arch=win32 ??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z -@ stub -arch=win64 ??4?$_String_val@DV?$allocator@D@std@@@std@@QEAAAEAV01@AEBV01@@Z -@ stub -arch=win32 ??4?$_String_val@GV?$allocator@G@std@@@std@@QAEAAV01@ABV01@@Z -@ stub -arch=win64 ??4?$_String_val@GV?$allocator@G@std@@@std@@QEAAAEAV01@AEBV01@@Z -@ stub -arch=win32 ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QAEAAV01@ABV01@@Z -@ stub -arch=win64 ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAAEAV01@AEBV01@@Z +@ thiscall -arch=win32 ??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z(ptr ptr) _String_val_null_ctor +@ cdecl -arch=win64 ??4?$_String_val@DV?$allocator@D@std@@@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) _String_val_null_ctor +@ thiscall -arch=win32 ??4?$_String_val@GV?$allocator@G@std@@@std@@QAEAAV01@ABV01@@Z(ptr ptr) _String_val_null_ctor +@ cdecl -arch=win64 ??4?$_String_val@GV?$allocator@G@std@@@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) _String_val_null_ctor +@ thiscall -arch=win32 ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QAEAAV01@ABV01@@Z(ptr ptr) _String_val_null_ctor +@ cdecl -arch=win64 ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) _String_val_null_ctor @ thiscall -arch=win32 ??4?$allocator@D@std@@QAEAAV01@ABV01@@Z(ptr ptr) MSVCP_allocator_char_assign @ cdecl -arch=win64 ??4?$allocator@D@std@@QEAAAEAV01@AEBV01@@Z(ptr ptr) MSVCP_allocator_char_assign @ thiscall -arch=win32 ??4?$allocator@G@std@@QAEAAV01@ABV01@@Z(ptr ptr) MSVCP_allocator_short_assign @@ -1682,14 +1682,14 @@ @ cdecl -arch=win64 ??8locale@std@@QEBA_NAEBV01@@Z(ptr ptr) locale_operator_equal @ thiscall -arch=win32 ??9locale@std@@QBE_NABV01@@Z(ptr ptr) locale_operator_not_equal @ cdecl -arch=win64 ??9locale@std@@QEBA_NAEBV01@@Z(ptr ptr) locale_operator_not_equal -@ thiscall -arch=win32 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z(ptr long) MSVCP_basic_string_char_at -@ stub -arch=win64 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEADU_Size_type_nosscl@01@@Z -@ stub -arch=win32 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADU_Size_type_nosscl@01@@Z -@ cdecl -arch=win64 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z(ptr long) MSVCP_basic_string_char_at -@ thiscall -arch=win32 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z(ptr long) MSVCP_basic_string_char_const_at -@ stub -arch=win64 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBDU_Size_type_nosscl@01@@Z -@ stub -arch=win32 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDU_Size_type_nosscl@01@@Z -@ cdecl -arch=win64 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z(ptr long) MSVCP_basic_string_char_const_at +@ thiscall -arch=win32 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z(ptr long) MSVCP_basic_string_char_operator_at +@ cdecl -arch=win64 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEADU_Size_type_nosscl@01@@Z(ptr long) MSVCP_basic_string_char_operator_at_noverify +@ thiscall -arch=win32 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADU_Size_type_nosscl@01@@Z(ptr long) MSVCP_basic_string_char_operator_at_noverify +@ cdecl -arch=win64 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z(ptr long) MSVCP_basic_string_char_operator_at +@ thiscall -arch=win32 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z(ptr long) MSVCP_basic_string_char_const_operator_at +@ cdecl -arch=win64 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBDU_Size_type_nosscl@01@@Z(ptr long) MSVCP_basic_string_char_operator_const_at_noverify +@ thiscall -arch=win32 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDU_Size_type_nosscl@01@@Z(ptr long) MSVCP_basic_string_char_operator_const_at_noverify +@ cdecl -arch=win64 ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z(ptr long) MSVCP_basic_string_char_const_operator_at @ stub -arch=win32 ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z @ stub -arch=win64 ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAGU_Size_type_nosscl@01@@Z @ stub -arch=win32 ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGU_Size_type_nosscl@01@@Z @@ -1698,14 +1698,14 @@ @ stub -arch=win64 ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBGU_Size_type_nosscl@01@@Z @ stub -arch=win32 ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGU_Size_type_nosscl@01@@Z @ stub -arch=win64 ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z -@ thiscall -arch=win32 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WI@Z(ptr long) MSVCP_basic_string_wchar_at -@ stub -arch=win64 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_WU_Size_type_nosscl@01@@Z -@ stub -arch=win32 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WU_Size_type_nosscl@01@@Z -@ cdecl -arch=win64 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_W_K@Z(ptr long) MSVCP_basic_string_wchar_at -@ thiscall -arch=win32 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WI@Z(ptr long) MSVCP_basic_string_wchar_const_at -@ stub -arch=win64 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_WU_Size_type_nosscl@01@@Z -@ stub -arch=win32 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WU_Size_type_nosscl@01@@Z -@ cdecl -arch=win64 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_W_K@Z(ptr long) MSVCP_basic_string_wchar_const_at +@ thiscall -arch=win32 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WI@Z(ptr long) MSVCP_basic_string_wchar_operator_at +@ cdecl -arch=win64 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_WU_Size_type_nosscl@01@@Z(ptr long) MSVCP_basic_string_wchar_operator_at_noverify +@ thiscall -arch=win32 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WU_Size_type_nosscl@01@@Z(ptr long) MSVCP_basic_string_wchar_operator_at_noverify +@ cdecl -arch=win64 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_W_K@Z(ptr long) MSVCP_basic_string_wchar_operator_at +@ thiscall -arch=win32 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WI@Z(ptr long) MSVCP_basic_string_wchar_const_operator_at +@ cdecl -arch=win64 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_WU_Size_type_nosscl@01@@Z(ptr long) MSVCP_basic_string_wchar_operator_const_at_noverify +@ thiscall -arch=win32 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WU_Size_type_nosscl@01@@Z(ptr long) MSVCP_basic_string_wchar_operator_const_at_noverify +@ cdecl -arch=win64 ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_W_K@Z(ptr long) MSVCP_basic_string_wchar_const_operator_at @ thiscall -arch=win32 ??Bid@locale@std@@QAEIXZ(ptr) locale_id_operator_size_t @ cdecl -arch=win64 ??Bid@locale@std@@QEAA_KXZ(ptr) locale_id_operator_size_t @ thiscall -arch=win32 ??Bios_base@std@@QBEPAXXZ(ptr) ios_base_op_fail @@ -1955,12 +1955,12 @@ @ stub -arch=win64 ??_D?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ @ stub -arch=win32 ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ @ stub -arch=win64 ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ -@ stub -arch=win32 ??_F?$_String_val@DV?$allocator@D@std@@@std@@QAEXXZ -@ stub -arch=win64 ??_F?$_String_val@DV?$allocator@D@std@@@std@@QEAAXXZ -@ stub -arch=win32 ??_F?$_String_val@GV?$allocator@G@std@@@std@@QAEXXZ -@ stub -arch=win64 ??_F?$_String_val@GV?$allocator@G@std@@@std@@QEAAXXZ -@ stub -arch=win32 ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QAEXXZ -@ stub -arch=win64 ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAXXZ +@ thiscall -arch=win32 ??_F?$_String_val@DV?$allocator@D@std@@@std@@QAEXXZ(ptr) _String_val_ctor +@ cdecl -arch=win64 ??_F?$_String_val@DV?$allocator@D@std@@@std@@QEAAXXZ(ptr) _String_val_ctor +@ thiscall -arch=win32 ??_F?$_String_val@GV?$allocator@G@std@@@std@@QAEXXZ(ptr) _String_val_ctor +@ cdecl -arch=win64 ??_F?$_String_val@GV?$allocator@G@std@@@std@@QEAAXXZ(ptr) _String_val_ctor +@ thiscall -arch=win32 ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QAEXXZ(ptr) _String_val_ctor +@ cdecl -arch=win64 ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAXXZ(ptr) _String_val_ctor @ stub -arch=win32 ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEXXZ @ stub -arch=win64 ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAXXZ @ stub -arch=win32 ??_F?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEXXZ @@ -2962,16 +2962,16 @@ @ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z(ptr ptr) MSVCP_basic_string_char_assign @ thiscall -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z(ptr ptr long long) MSVCP_basic_string_char_assign_substr @ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z(ptr ptr long long) MSVCP_basic_string_char_assign_substr -@ stub -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z -@ stub -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z -@ stub -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z +@ thiscall -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z(ptr long long) MSVCP_basic_string_char_assignn +@ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z(ptr ptr ptr) MSVCP_basic_string_char_assign_ptr_ptr +@ thiscall -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z(ptr ptr ptr) MSVCP_basic_string_char_assign_ptr_ptr @ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z(ptr str) MSVCP_basic_string_char_assign_cstr @ thiscall -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z(ptr str) MSVCP_basic_string_char_assign_cstr @ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z(ptr str long) MSVCP_basic_string_char_assign_cstr_len @ thiscall -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z(ptr str long) MSVCP_basic_string_char_assign_cstr_len -@ stub -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z -@ stub -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z -@ stub -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z +@ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z(ptr ptr ptr) MSVCP_basic_string_char_assign_iter +@ thiscall -arch=win32 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z(ptr ptr ptr ptr ptr) MSVCP_basic_string_char_assign_iter +@ cdecl -arch=win64 ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z(ptr long long) MSVCP_basic_string_char_assignn @ stub -arch=win32 ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z @ stub -arch=win64 ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z @ stub -arch=win32 ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z @@ -2990,16 +2990,16 @@ @ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@@Z(ptr ptr) MSVCP_basic_string_wchar_assign @ thiscall -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@II@Z(ptr ptr long long) MSVCP_basic_string_wchar_assign_substr @ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@_K1@Z(ptr ptr long long) MSVCP_basic_string_wchar_assign_substr -@ stub -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z -@ stub -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z -@ stub -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z +@ thiscall -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z(ptr long long) MSVCP_basic_string_wchar_assignn +@ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z(ptr ptr ptr) MSVCP_basic_string_wchar_assign_ptr_ptr +@ thiscall -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z(ptr ptr ptr) MSVCP_basic_string_wchar_assign_ptr_ptr @ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W@Z(ptr wstr) MSVCP_basic_string_wchar_assign_cstr @ thiscall -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W@Z(ptr wstr) MSVCP_basic_string_wchar_assign_cstr @ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W_K@Z(ptr wstr long) MSVCP_basic_string_wchar_assign_cstr_len @ thiscall -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_WI@Z(ptr wstr long) MSVCP_basic_string_wchar_assign_cstr_len -@ stub -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z -@ stub -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z -@ stub -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z +@ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z(ptr ptr ptr) MSVCP_basic_string_wchar_assign_iter +@ thiscall -arch=win32 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z(ptr ptr ptr ptr ptr) MSVCP_basic_string_wchar_assign_iter +@ cdecl -arch=win64 ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z(ptr long long) MSVCP_basic_string_wchar_assignn @ cdecl -arch=win32 ?assign@?$char_traits@D@std@@SAPADPADID@Z(ptr long long) MSVCP_char_traits_char_assignn @ cdecl -arch=win64 ?assign@?$char_traits@D@std@@SAPEADPEAD_KD@Z(ptr long long) MSVCP_char_traits_char_assignn @ cdecl -arch=win32 ?assign@?$char_traits@D@std@@SAXAADABD@Z(ptr ptr) MSVCP_char_traits_char_assign @@ -3770,10 +3770,10 @@ @ cdecl -arch=win64 ?eq_int_type@?$char_traits@G@std@@SA_NAEBG0@Z(ptr ptr) MSVCP_char_traits_short_eq_int_type @ cdecl -arch=win32 ?eq_int_type@?$char_traits@_W@std@@SA_NABG0@Z(ptr ptr) MSVCP_char_traits_wchar_eq_int_tpe @ cdecl -arch=win64 ?eq_int_type@?$char_traits@_W@std@@SA_NAEBG0@Z(ptr ptr) MSVCP_char_traits_wchar_eq_int_tpe -@ stub -arch=win32 ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z -@ stub -arch=win64 ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z -@ stub -arch=win32 ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z -@ stub -arch=win64 ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z +@ thiscall -arch=win32 ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z(ptr ptr ptr ptr ptr) basic_string_char_erase_iter_range +@ cdecl -arch=win64 ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z(ptr ptr ptr) basic_string_char_erase_iter_range +@ thiscall -arch=win32 ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z(ptr ptr ptr) basic_string_char_erase_iter +@ cdecl -arch=win64 ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z(ptr ptr) basic_string_char_erase_iter @ thiscall -arch=win32 ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@II@Z(ptr long long) MSVCP_basic_string_char_erase @ cdecl -arch=win64 ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0@Z(ptr long long) MSVCP_basic_string_char_erase @ stub -arch=win32 ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0@Z @@ -3782,10 +3782,10 @@ @ stub -arch=win64 ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@@Z @ stub -arch=win32 ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@II@Z @ stub -arch=win64 ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0@Z -@ stub -arch=win32 ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z -@ stub -arch=win64 ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z -@ stub -arch=win32 ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z -@ stub -arch=win64 ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z +@ thiscall -arch=win32 ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z(ptr ptr ptr ptr ptr) basic_string_wchar_erase_iter_range +@ cdecl -arch=win64 ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z(ptr ptr ptr) basic_string_wchar_erase_iter_range +@ thiscall -arch=win32 ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z(ptr ptr ptr) basic_string_wchar_erase_iter +@ cdecl -arch=win64 ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z(ptr ptr) basic_string_wchar_erase_iter @ thiscall -arch=win32 ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@II@Z(ptr long long) MSVCP_basic_string_wchar_erase @ cdecl -arch=win64 ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0@Z(ptr long long) MSVCP_basic_string_wchar_erase @ thiscall -arch=win32 ?exceptions@ios_base@std@@QAEXH@Z(ptr long) ios_base_exception_set @@ -3847,14 +3847,14 @@ @ cdecl -arch=win64 ?find@?$char_traits@G@std@@SAPEBGPEBG_KAEBG@Z(ptr long ptr) MSVCP_char_traits_short_find @ cdecl -arch=win32 ?find@?$char_traits@_W@std@@SAPB_WPB_WIAB_W@Z(ptr long ptr) MSVCP_char_traits_wchar_find @ cdecl -arch=win64 ?find@?$char_traits@_W@std@@SAPEB_WPEB_W_KAEB_W@Z(ptr long ptr) MSVCP_char_traits_wchar_find -@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z(ptr ptr long) MSVCP_basic_string_char_find_first_not_of +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) MSVCP_basic_string_char_find_first_not_of +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z(ptr long long) MSVCP_basic_string_char_find_first_not_of_ch +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z(ptr long long) MSVCP_basic_string_char_find_first_not_of_ch +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z(ptr ptr long) MSVCP_basic_string_char_find_first_not_of_cstr +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z(ptr ptr long long) MSVCP_basic_string_char_find_first_not_of_cstr_substr +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z(ptr ptr long long) MSVCP_basic_string_char_find_first_not_of_cstr_substr +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z(ptr ptr long) MSVCP_basic_string_char_find_first_not_of_cstr @ stub -arch=win32 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z @ stub -arch=win64 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z @ stub -arch=win32 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z @@ -3863,14 +3863,14 @@ @ stub -arch=win64 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z @ stub -arch=win32 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z @ stub -arch=win64 ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z -@ stub -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z -@ stub -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z(ptr ptr long) MSVCP_basic_string_wchar_find_first_not_of +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) MSVCP_basic_string_wchar_find_first_not_of +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z(ptr ptr long) MSVCP_basic_string_wchar_find_first_not_of_cstr +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z(ptr ptr long long) MSVCP_basic_string_wchar_find_first_not_of_cstr_substr +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z(ptr ptr long long) MSVCP_basic_string_wchar_find_first_not_of_cstr_substr +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z(ptr ptr long) MSVCP_basic_string_wchar_find_first_not_of_cstr +@ thiscall -arch=win32 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z(ptr long long) MSVCP_basic_string_wchar_find_first_not_of_ch +@ cdecl -arch=win64 ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z(ptr long long) MSVCP_basic_string_wchar_find_first_not_of_ch @ thiscall -arch=win32 ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z(ptr ptr long) MSVCP_basic_string_char_find_first_of @ cdecl -arch=win64 ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) MSVCP_basic_string_char_find_first_of @ thiscall -arch=win32 ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z(ptr long long) MSVCP_basic_string_char_find_first_of_ch @@ -3895,14 +3895,14 @@ @ cdecl -arch=win64 ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z(ptr ptr long) MSVCP_basic_string_wchar_find_first_of_cstr @ thiscall -arch=win32 ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z(ptr long long) MSVCP_basic_string_wchar_find_first_of_ch @ cdecl -arch=win64 ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z(ptr long long) MSVCP_basic_string_wchar_find_first_of_ch -@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z(ptr ptr long) MSVCP_basic_string_char_find_last_not_of +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) MSVCP_basic_string_char_find_last_not_of +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z(ptr long long) MSVCP_basic_string_char_find_last_not_of_ch +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z(ptr long long) MSVCP_basic_string_char_find_last_not_of_ch +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z(ptr str long) MSVCP_basic_string_char_find_last_not_of_cstr +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z(ptr str long long) MSVCP_basic_string_char_find_last_not_of_cstr_substr +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z(ptr str long long) MSVCP_basic_string_char_find_last_not_of_cstr_substr +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z(ptr str long) MSVCP_basic_string_char_find_last_not_of_cstr @ stub -arch=win32 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z @ stub -arch=win64 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z @ stub -arch=win32 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z @@ -3911,14 +3911,14 @@ @ stub -arch=win64 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z @ stub -arch=win32 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z @ stub -arch=win64 ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z -@ stub -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z -@ stub -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z(ptr ptr long) MSVCP_basic_string_wchar_find_last_not_of +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) MSVCP_basic_string_wchar_find_last_not_of +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z(ptr wstr long) MSVCP_basic_string_wchar_find_last_not_of_cstr +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z(ptr wstr long long) MSVCP_basic_string_wchar_find_last_not_of_cstr_substr +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z(ptr wstr long long) MSVCP_basic_string_wchar_find_last_not_of_cstr_substr +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z(ptr wstr long) MSVCP_basic_string_wchar_find_last_not_of_cstr +@ thiscall -arch=win32 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z(ptr long long) MSVCP_basic_string_wchar_find_last_not_of_ch +@ cdecl -arch=win64 ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z(ptr long long) MSVCP_basic_string_wchar_find_last_not_of_ch @ thiscall -arch=win32 ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z(ptr ptr long) MSVCP_basic_string_char_find_last_of @ cdecl -arch=win64 ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) MSVCP_basic_string_char_find_last_of @ thiscall -arch=win32 ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z(ptr long long) MSVCP_basic_string_char_find_last_of_ch @@ -4099,12 +4099,12 @@ @ stub -arch=win64 ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEA_K@Z @ stub -arch=win32 ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAA_N@Z @ stub -arch=win64 ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEA_N@Z -@ stub -arch=win32 ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ -@ stub -arch=win64 ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ +@ thiscall -arch=win32 ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ(ptr) basic_string_char_get_allocator +@ cdecl -arch=win64 ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ(ptr) basic_string_char_get_allocator @ stub -arch=win32 ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$allocator@G@2@XZ @ stub -arch=win64 ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$allocator@G@2@XZ -@ stub -arch=win32 ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$allocator@_W@2@XZ -@ stub -arch=win64 ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$allocator@_W@2@XZ +@ thiscall -arch=win32 ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$allocator@_W@2@XZ(ptr) basic_string_wchar_get_allocator +@ cdecl -arch=win64 ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$allocator@_W@2@XZ(ptr) basic_string_wchar_get_allocator @ stub -arch=win32 ?get_date@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHPAUtm@@@Z @ stub -arch=win64 ?get_date@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHPEAUtm@@@Z @ stub -arch=win32 ?get_date@?$time_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHPAUtm@@@Z @@ -4515,12 +4515,12 @@ @ cdecl -arch=win64 ?max_size@?$allocator@G@std@@QEBA_KXZ(ptr) MSVCP_allocator_short_max_size @ thiscall -arch=win32 ?max_size@?$allocator@_W@std@@QBEIXZ(ptr) MSVCP_allocator_wchar_max_size @ cdecl -arch=win64 ?max_size@?$allocator@_W@std@@QEBA_KXZ(ptr) MSVCP_allocator_wchar_max_size -@ stub -arch=win32 ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ -@ stub -arch=win64 ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ +@ thiscall -arch=win32 ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ(ptr) basic_string_char_max_size +@ cdecl -arch=win64 ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ(ptr) basic_string_char_max_size @ stub -arch=win32 ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ @ stub -arch=win64 ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ -@ stub -arch=win32 ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ -@ stub -arch=win64 ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ +@ thiscall -arch=win32 ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ(ptr) basic_string_wchar_max_size +@ cdecl -arch=win64 ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ(ptr) basic_string_wchar_max_size @ cdecl ?min@?$numeric_limits@C@std@@SACXZ() std_numeric_limits_signed_char_min @ cdecl ?min@?$numeric_limits@D@std@@SADXZ() std_numeric_limits_char_min @ cdecl ?min@?$numeric_limits@E@std@@SAEXZ() std_numeric_limits_unsigned_char_min @@ -5101,28 +5101,28 @@ @ cdecl -arch=win64 ?rend@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA?AV?$reverse_iterator@V?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ(ptr ptr) MSVCP_basic_string_wchar_rend @ thiscall -arch=win32 ?rend@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$reverse_iterator@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ(ptr ptr) MSVCP_basic_string_wchar_rend @ cdecl -arch=win64 ?rend@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$reverse_iterator@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ(ptr ptr) MSVCP_basic_string_wchar_rend -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@000@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0AEBV12@@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PEBD1@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PEBD@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PEBD_K@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@000@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0_KD@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0ABV12@@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0ID@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PBD1@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PBD@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z -@ stub -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PBDI@Z -@ stub -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z(ptr long long ptr) basic_string_char_replace +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@000@Z(ptr ptr ptr ptr ptr) basic_string_char_replace_iter_iter +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z(ptr long long ptr long long) basic_string_char_replace_substr +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0AEBV12@@Z(ptr ptr ptr str) basic_string_char_replace_iter_bstr +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z(ptr long long long long) basic_string_char_replace_ch +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PEBD1@Z(ptr ptr ptr ptr ptr) basic_string_char_replace_iter_ptr_ptr +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z(ptr long long ptr) basic_string_char_replace_cstr +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PEBD@Z(ptr ptr ptr str) basic_string_char_replace_iter_cstr +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z(ptr long long ptr long) basic_string_char_replace_cstr_len +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PEBD_K@Z(ptr ptr ptr str long) basic_string_char_replace_iter_cstr_len +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@000@Z(ptr ptr ptr ptr ptr ptr ptr) basic_string_char_replace_iter_iter +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0_KD@Z(ptr ptr ptr long long) basic_string_char_replace_iter_ch +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0ABV12@@Z(ptr ptr ptr ptr ptr str) basic_string_char_replace_iter_bstr +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z(ptr long long long long) basic_string_char_replace_ch +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0ID@Z(ptr ptr ptr ptr ptr long long) basic_string_char_replace_iter_ch +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z(ptr long long ptr long long) basic_string_char_replace_substr +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PBD1@Z(ptr ptr ptr ptr ptr ptr ptr) basic_string_char_replace_iter_ptr_ptr +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z(ptr long long ptr) basic_string_char_replace +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PBD@Z(ptr ptr ptr ptr ptr str) basic_string_char_replace_iter_cstr +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z(ptr long long ptr long) basic_string_char_replace_cstr_len +@ thiscall -arch=win32 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PBDI@Z(ptr ptr ptr ptr ptr str long)basic_string_char_replace_iter_cstr_len +@ cdecl -arch=win64 ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z(ptr long long ptr) basic_string_char_replace_cstr @ stub -arch=win32 ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@@Z @ stub -arch=win64 ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@000@Z @ stub -arch=win32 ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@II@Z @@ -5145,34 +5145,34 @@ @ stub -arch=win64 ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG0@Z @ stub -arch=win32 ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0PBGI@Z @ stub -arch=win64 ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@000@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@II@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0AEBV12@@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@III_W@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0PEB_W1@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_W@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0PEB_W@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_WI@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0PEB_W_K@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@000@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0_K_W@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0ABV12@@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K00_W@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0I_W@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0PB_W1@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0PB_W@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W0@Z -@ stub -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0PB_WI@Z -@ stub -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W@Z -@ stub -arch=win32 ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z -@ stub -arch=win64 ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@@Z(ptr long long ptr) basic_string_wchar_replace +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@000@Z(ptr ptr ptr ptr ptr) basic_string_wchar_replace_iter_iter +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@II@Z(ptr long long ptr long long) basic_string_wchar_replace_substr +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0AEBV12@@Z(ptr ptr ptr ptr ptr ptr) basic_string_wchar_replace_iter_bstr +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@III_W@Z(ptr long long long long) basic_string_wchar_replace_ch +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0PEB_W1@Z(ptr ptr ptr ptr ptr) basic_string_wchar_replace_iter_ptr_ptr +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_W@Z(ptr long long ptr) basic_string_wchar_replace_cstr +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0PEB_W@Z(ptr ptr ptr wstr) basic_string_wchar_replace_iter_cstr +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_WI@Z(ptr long long ptr long) basic_string_wchar_replace_cstr_len +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0PEB_W_K@Z(ptr ptr ptr wstr long) basic_string_wchar_replace_iter_cstr_len +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@000@Z(ptr ptr ptr ptr ptr ptr ptr ptr ptr) basic_string_wchar_replace_iter_iter +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0_K_W@Z(ptr ptr ptr ptr ptr long long) basic_string_wchar_replace_iter_ch +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0ABV12@@Z(ptr ptr ptr ptr ptr ptr) basic_string_wchar_replace_iter_bstr +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K00_W@Z(ptr long long ptr long long) basic_string_wchar_replace_substr +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0I_W@Z(ptr ptr ptr ptr ptr long long) basic_string_wchar_replace_iter_ch +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z(ptr long long ptr long long) basic_string_wchar_replace_substr +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0PB_W1@Z(ptr ptr ptr ptr ptr ptr ptr) basic_string_wchar_replace_iter_ptr_ptr +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@@Z(ptr long long ptr) basic_string_wchar_replace +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0PB_W@Z(ptr ptr ptr ptr ptr wstr) basic_string_wchar_replace_iter_cstr +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W0@Z(ptr long long ptr long) basic_string_wchar_replace_cstr_len +@ thiscall -arch=win32 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0PB_WI@Z(ptr ptr ptr ptr ptr wstr long) basic_string_wchar_replace_iter_cstr_len +@ cdecl -arch=win64 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W@Z(ptr long long ptr) basic_string_wchar_replace_cstr +@ thiscall -arch=win32 ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z(ptr long) MSVCP_basic_string_char_reserve +@ cdecl -arch=win64 ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z(ptr long) MSVCP_basic_string_char_reserve @ stub -arch=win32 ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z @ stub -arch=win64 ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z -@ stub -arch=win32 ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z -@ stub -arch=win64 ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z +@ thiscall -arch=win32 ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z(ptr long) MSVCP_basic_string_wchar_reserve +@ cdecl -arch=win64 ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z(ptr long) MSVCP_basic_string_wchar_reserve @ stub ?resetiosflags@std@@YA?AU?$_Smanip@H@1@H@Z @ thiscall -arch=win32 ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z(ptr long) MSVCP_basic_string_char_resize @ cdecl -arch=win64 ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z(ptr long) MSVCP_basic_string_char_resize @@ -5186,14 +5186,14 @@ @ cdecl -arch=win64 ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z(ptr long) MSVCP_basic_string_wchar_resize @ thiscall -arch=win32 ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI_W@Z(ptr long long) MSVCP_basic_string_wchar_resize_ch @ cdecl -arch=win64 ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K_W@Z(ptr long long) MSVCP_basic_string_wchar_resize_ch -@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z -@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z -@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z -@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z -@ stub -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z -@ stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z(ptr ptr long) MSVCP_basic_string_char_rfind_off +@ cdecl -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) MSVCP_basic_string_char_rfind_off +@ thiscall -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z(ptr ptr long) MSVCP_basic_string_char_rfind_ch +@ cdecl -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z(ptr ptr long) MSVCP_basic_string_char_rfind_ch +@ thiscall -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z(ptr str long) MSVCP_basic_string_char_rfind_cstr_off +@ cdecl -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z(ptr str long long) MSVCP_basic_string_char_rfind_cstr_substr +@ thiscall -arch=win32 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z(ptr str long long) MSVCP_basic_string_char_rfind_cstr_substr +@ cdecl -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z(ptr str long) MSVCP_basic_string_char_rfind_cstr_off @ stub -arch=win32 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z @ stub -arch=win64 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z @ stub -arch=win32 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z @@ -5202,14 +5202,14 @@ @ stub -arch=win64 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z @ stub -arch=win32 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z @ stub -arch=win64 ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z -@ stub -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z -@ stub -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z -@ stub -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z -@ stub -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z -@ stub -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z -@ stub -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z -@ stub -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z -@ stub -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z +@ thiscall -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z(ptr ptr long) MSVCP_basic_string_wchar_rfind_off +@ cdecl -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z(ptr ptr long) MSVCP_basic_string_wchar_rfind_off +@ thiscall -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z(ptr wstr long) MSVCP_basic_string_wchar_rfind_cstr_off +@ cdecl -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z(ptr wstr long long) MSVCP_basic_string_wchar_rfind_cstr_substr +@ thiscall -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z(ptr wstr long long) MSVCP_basic_string_wchar_rfind_cstr_substr +@ cdecl -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z(ptr wstr long) MSVCP_basic_string_wchar_rfind_cstr_off +@ thiscall -arch=win32 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z(ptr long long) MSVCP_basic_string_wchar_rfind_ch +@ cdecl -arch=win64 ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z(ptr long long) MSVCP_basic_string_wchar_rfind_ch @ cdecl ?round_error@?$numeric_limits@C@std@@SACXZ() std_numeric_limits_signed_char_round_error @ cdecl ?round_error@?$numeric_limits@D@std@@SADXZ() std_numeric_limits_char_round_error @ cdecl ?round_error@?$numeric_limits@E@std@@SAEXZ() std_numeric_limits_unsigned_char_round_error diff -Nru wine1.3-1.3.30/dlls/msvcp90/string.c wine1.3-1.3.31/dlls/msvcp90/string.c --- wine1.3-1.3.30/dlls/msvcp90/string.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msvcp90/string.c 2011-10-21 18:38:36.000000000 +0000 @@ -22,6 +22,7 @@ #include "msvcp90.h" #include "stdio.h" +#include "assert.h" #include "windef.h" #include "winbase.h" @@ -41,6 +42,15 @@ } String_iterator_wchar; typedef String_iterator_wchar String_reverse_iterator_wchar; +/* size_t_noverify structure */ +typedef struct { + MSVCP_size_t val; +} size_t_noverify; + +/* allocator class */ +typedef struct { +} allocator; + /* char_traits */ /* ?assign@?$char_traits@D@std@@SAXAADABD@Z */ /* ?assign@?$char_traits@D@std@@SAXAEADAEBD@Z */ @@ -597,7 +607,7 @@ if(new_res/3 < this->res/2) new_res = this->res + this->res/2; - ptr = MSVCP_allocator_char_allocate(this->allocator, new_res); + ptr = MSVCP_allocator_char_allocate(this->allocator, new_res+1); if(!ptr) ptr = MSVCP_allocator_char_allocate(this->allocator, new_size+1); else @@ -623,6 +633,30 @@ return (new_size>0); } +/* ?_Pdif@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@KAIV?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z */ +/* ?_Pdif@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@KA_KV?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z */ +MSVCP_size_t __cdecl MSVCP_basic_string_char_Pdif(String_iterator_char i1, String_iterator_char i2) +{ + TRACE("(%p %p) (%p %p)\n", i1.bstr, i1.pos, i2.bstr, i2.pos); + + if((!i1.bstr && i1.pos) || i1.bstr!=i2.bstr) { + _invalid_parameter(NULL, NULL, NULL, 0, 0); + return 0; + } + + return !i1.pos ? 0 : i1.pos-i2.pos; +} + +/* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ */ +/* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ */ +DEFINE_THISCALL_WRAPPER_RETPTR(basic_string_char_get_allocator, 4) +allocator __thiscall basic_string_char_get_allocator(const basic_string_char *this) +{ + allocator ret; + TRACE("%p\n", this); + return ret; +} + /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@II@Z */ /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_erase, 12) @@ -631,10 +665,8 @@ { TRACE("%p %lu %lu\n", this, pos, len); - if(pos > this->size) { + if(pos > this->size) MSVCP__String_base_Xran(); - return NULL; - } if(len > this->size-pos) len = this->size-pos; @@ -649,6 +681,38 @@ return this; } +/* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z */ +/* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z */ +DEFINE_THISCALL_WRAPPER_RETPTR(basic_string_char_erase_iter_range, 20) +String_iterator_char __thiscall basic_string_char_erase_iter_range(basic_string_char *this, + String_iterator_char beg, String_iterator_char end) +{ + String_iterator_char iter = { this, basic_string_char_ptr(this) }; + MSVCP_size_t off = MSVCP_basic_string_char_Pdif(beg, iter); + + MSVCP_basic_string_char_erase(this, off, MSVCP_basic_string_char_Pdif(end, beg)); + + iter.bstr = this; + iter.pos = basic_string_char_ptr(this)+off; + return iter; +} + +/* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */ +/* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */ +DEFINE_THISCALL_WRAPPER_RETPTR(basic_string_char_erase_iter, 12) +String_iterator_char __thiscall basic_string_char_erase_iter( + basic_string_char *this, String_iterator_char pos) +{ + String_iterator_char iter = { this, basic_string_char_ptr(this) }; + MSVCP_size_t off = MSVCP_basic_string_char_Pdif(pos, iter); + + MSVCP_basic_string_char_erase(this, off, 1); + + iter.bstr = this; + iter.pos = basic_string_char_ptr(this)+off; + return iter; +} + /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */ /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_substr, 16) @@ -658,10 +722,8 @@ { TRACE("%p %p %lu %lu\n", this, assign, pos, len); - if(assign->size < pos) { + if(assign->size < pos) MSVCP__String_base_Xran(); - return NULL; - } if(len > assign->size-pos) len = assign->size-pos; @@ -731,6 +793,38 @@ MSVCP_char_traits_char_length(str)); } +/* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z */ +/* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assignn, 12) +basic_string_char* __thiscall MSVCP_basic_string_char_assignn( + basic_string_char *this, MSVCP_size_t count, char ch) +{ + TRACE("%p %ld %c\n", this, count, ch); + + basic_string_char_grow(this, count, FALSE); + MSVCP_char_traits_char_assignn(basic_string_char_ptr(this), count, ch); + basic_string_char_eos(this, count); + return this; +} + +/* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z */ +/* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_ptr_ptr, 12) +basic_string_char* __thiscall MSVCP_basic_string_char_assign_ptr_ptr( + basic_string_char *this, const char *first, const char *last) +{ + return MSVCP_basic_string_char_assign_cstr_len(this, first, last-first); +} + +/* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z */ +/* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_iter, 20) +basic_string_char* __thiscall MSVCP_basic_string_char_assign_iter(basic_string_char *this, + String_iterator_char beg, String_iterator_char end) +{ + return MSVCP_basic_string_char_assign_ptr_ptr(this, beg.pos, end.pos+1); +} + /* ?_Chassign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXIID@Z */ /* ?_Chassign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_K0D@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_Chassign, 16) @@ -780,6 +874,23 @@ return this->res; } +/* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */ +/* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_reserve, 8) +void __thiscall MSVCP_basic_string_char_reserve(basic_string_char *this, MSVCP_size_t size) +{ + MSVCP_size_t len; + + TRACE("%p %ld\n", this, size); + + len = this->size; + if(len > size) + return; + + basic_string_char_grow(this, size, FALSE); + basic_string_char_eos(this, len); +} + /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ */ /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor, 4) @@ -817,19 +928,37 @@ return this; } +/* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z */ +/* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBDAEBV?$allocator@D@1@@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_alloc, 12) +basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr_alloc( + basic_string_char *this, const char *str, const void *alloc) +{ + return MSVCP_basic_string_char_ctor_cstr(this, str); +} + /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDI@Z */ /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_K@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_len, 12) basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr_len( basic_string_char *this, const char *str, MSVCP_size_t len) { - TRACE("%p %s %ld\n", this, str, len); + TRACE("%p %s %ld\n", this, debugstr_a(str), len); basic_string_char_tidy(this, FALSE, 0); MSVCP_basic_string_char_assign_cstr_len(this, str, len); return this; } +/* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z */ +/* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_len_alloc, 16) +basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr_len_alloc( + basic_string_char *this, const char *str, MSVCP_size_t len, const void *alloc) +{ + return MSVCP_basic_string_char_ctor_cstr_len(this, str, len); +} + /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@II@Z */ /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_substr, 16) @@ -844,6 +973,16 @@ return this; } +/* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z */ +/* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_substr_alloc, 20) +basic_string_char* __thiscall MSVCP_basic_string_char_ctor_substr_alloc( + basic_string_char *this, const basic_string_char *assign, + MSVCP_size_t pos, MSVCP_size_t len, const void *alloc) +{ + return MSVCP_basic_string_char_ctor_substr(this, assign, pos, len); +} + /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$allocator@D@1@@Z */ /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$allocator@D@1@@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_alloc, 8) @@ -856,6 +995,46 @@ return this; } +/* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z */ +/* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KD@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ch, 12) +basic_string_char* __thiscall MSVCP_basic_string_char_ctor_ch(basic_string_char *this, + MSVCP_size_t count, char ch) +{ + TRACE("%p %ld %c\n", this, count, ch); + + basic_string_char_tidy(this, FALSE, 0); + MSVCP_basic_string_char_assignn(this, count, ch); + return this; +} + +/* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z */ +/* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ch_alloc, 16) +basic_string_char* __thiscall MSVCP_basic_string_char_ctor_ch_alloc(basic_string_char *this, + MSVCP_size_t count, char ch, const void *alloc) +{ + return MSVCP_basic_string_char_ctor_ch(this, count, ch); +} + +/* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0@Z */ +/* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ptr_ptr, 12) +basic_string_char* __thiscall MSVCP_basic_string_char_ctor_ptr_ptr(basic_string_char *this, + const char *first, const char *last) +{ + return MSVCP_basic_string_char_ctor_cstr_len(this, first, last-first); +} + +/* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@1@0@Z */ +/* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@1@0@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_iter, 20) +basic_string_char* __thiscall MSVCP_basic_string_char_ctor_iter(basic_string_char *this, + String_iterator_char beg, String_iterator_char end) +{ + return MSVCP_basic_string_char_ctor_cstr_len(this, beg.pos, end.pos-beg.pos+1); +} + /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ */ /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_dtor, 4) @@ -876,6 +1055,15 @@ return this->size; } +/* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */ +/* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */ +DEFINE_THISCALL_WRAPPER(basic_string_char_max_size, 4) +MSVCP_size_t __thiscall basic_string_char_max_size(const basic_string_char *this) +{ + TRACE("%p\n", this); + return MSVCP_allocator_char_max_size(this->allocator)-1; +} + /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE_NXZ */ /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_NXZ */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_empty, 4) @@ -964,7 +1152,7 @@ basic_string_char* __thiscall MSVCP_basic_string_char_append_cstr_len( basic_string_char *this, const char *append, MSVCP_size_t count) { - TRACE("%p %s %lu\n", this, append, count); + TRACE("%p %s %lu\n", this, debugstr_a(append), count); if(basic_string_char_inside(this, append)) return MSVCP_basic_string_char_append_substr(this, this, @@ -1047,7 +1235,7 @@ basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_bstr_cstr(basic_string_char *ret, const basic_string_char *left, const char *right) { - TRACE("%p %s\n", left, right); + TRACE("%p %s\n", left, debugstr_a(right)); MSVCP_basic_string_char_copy_ctor(ret, left); MSVCP_basic_string_char_append_cstr(ret, right); @@ -1059,7 +1247,7 @@ basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_cstr_bstr(basic_string_char *ret, const char *left, const basic_string_char *right) { - TRACE("%s %p\n", left, right); + TRACE("%s %p\n", debugstr_a(left), right); MSVCP_basic_string_char_ctor_cstr(ret, left); MSVCP_basic_string_char_append(ret, right); @@ -1078,6 +1266,30 @@ return ret; } +/* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@D@Z */ +/* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@D@Z */ +basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_bstr_ch(basic_string_char *ret, + const basic_string_char *left, char right) +{ + TRACE("%p %c\n", left, right); + + MSVCP_basic_string_char_copy_ctor(ret, left); + MSVCP_basic_string_char_append_ch(ret, right); + return ret; +} + +/* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DABV10@@Z */ +/* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DAEBV10@@Z */ +basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_ch_bstr(basic_string_char *ret, + char left, const basic_string_char *right) +{ + TRACE("%c %p\n", left, right); + + MSVCP_basic_string_char_ctor_cstr_len(ret, &left, 1); + MSVCP_basic_string_char_append(ret, right); + return ret; +} + /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBDI@Z */ /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD0@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr_len, 20) @@ -1087,7 +1299,7 @@ { int ans; - TRACE("%p %lu %lu %s %lu\n", this, pos, num, str, count); + TRACE("%p %lu %lu %s %lu\n", this, pos, num, debugstr_a(str), count); if(this->size < pos) MSVCP__String_base_Xran(); @@ -1239,6 +1451,78 @@ return MSVCP_basic_string_char_compare_cstr(right, left) > 0; } +/* ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */ +/* ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */ +MSVCP_bool __cdecl MSVCP_basic_string_char_leq( + const basic_string_char *left, const basic_string_char *right) +{ + return MSVCP_basic_string_char_compare(left, right) <= 0; +} + +/* ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */ +/* ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */ +MSVCP_bool __cdecl MSVCP_basic_string_char_leq_bstr_cstr( + const basic_string_char *left, const char *right) +{ + return MSVCP_basic_string_char_compare_cstr(left, right) <= 0; +} + +/* ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */ +/* ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */ +MSVCP_bool __cdecl MSVCP_basic_string_char_leq_cstr_bstr( + const char *left, const basic_string_char *right) +{ + return MSVCP_basic_string_char_compare_cstr(right, left) >= 0; +} + +/* ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */ +/* ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */ +MSVCP_bool __cdecl MSVCP_basic_string_char_greater( + const basic_string_char *left, const basic_string_char *right) +{ + return MSVCP_basic_string_char_compare(left, right) > 0; +} + +/* ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */ +/* ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */ +MSVCP_bool __cdecl MSVCP_basic_string_char_greater_bstr_cstr( + const basic_string_char *left, const char *right) +{ + return MSVCP_basic_string_char_compare_cstr(left, right) > 0; +} + +/* ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */ +/* ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */ +MSVCP_bool __cdecl MSVCP_basic_string_char_greater_cstr_bstr( + const char *left, const basic_string_char *right) +{ + return MSVCP_basic_string_char_compare_cstr(right, left) < 0; +} + +/* ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */ +/* ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */ +MSVCP_bool __cdecl MSVCP_basic_string_char_geq( + const basic_string_char *left, const basic_string_char *right) +{ + return MSVCP_basic_string_char_compare(left, right) >= 0; +} + +/* ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */ +/* ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */ +MSVCP_bool __cdecl MSVCP_basic_string_char_geq_bstr_cstr( + const basic_string_char *left, const char *right) +{ + return MSVCP_basic_string_char_compare_cstr(left, right) >= 0; +} + +/* ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */ +/* ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */ +MSVCP_bool __cdecl MSVCP_basic_string_char_geq_cstr_bstr( + const char *left, const basic_string_char *right) +{ + return MSVCP_basic_string_char_compare_cstr(right, left) <= 0; +} + /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */ /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_cstr_substr, 16) @@ -1247,7 +1531,7 @@ { const char *p, *end; - TRACE("%p %s %lu %lu\n", this, find, pos, len); + TRACE("%p %s %lu %lu\n", this, debugstr_a(find), pos, len); if(len==0 && pos<=this->size) return pos; @@ -1294,6 +1578,62 @@ return MSVCP_basic_string_char_find_cstr_substr(this, &ch, pos, 1); } +/* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */ +/* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_cstr_substr, 16) +MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_cstr_substr( + const basic_string_char *this, const char *find, MSVCP_size_t pos, MSVCP_size_t len) +{ + const char *p, *end; + + TRACE("%p %s %lu %lu\n", this, debugstr_a(find), pos, len); + + if(len==0) + return possize ? pos : this->size; + + if(len > this->size) + return MSVCP_basic_string_char_npos; + + if(pos > this->size-len+1) + pos = this->size-len+1; + end = basic_string_char_const_ptr(this); + for(p=end+pos-1; p>=end; p--) { + if(*p==*find && !MSVCP_char_traits_char_compare(p, find, len)) + return p-basic_string_char_const_ptr(this); + } + + return MSVCP_basic_string_char_npos; +} + +/* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */ +/* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_cstr_off, 12) +MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_cstr_off( + const basic_string_char *this, const char *find, MSVCP_size_t pos) +{ + return MSVCP_basic_string_char_rfind_cstr_substr(this, find, pos, + MSVCP_char_traits_char_length(find)); +} + +/* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */ +/* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_off, 12) +MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_off( + const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off) +{ + return MSVCP_basic_string_char_rfind_cstr_substr(this, + basic_string_char_const_ptr(find), off, find->size); +} + +/* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */ +/* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_ch, 12) +MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_ch( + const basic_string_char *this, char ch, MSVCP_size_t pos) +{ + return MSVCP_basic_string_char_find_cstr_substr(this, &ch, pos, 1); +} + /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */ /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_cstr_substr, 16) @@ -1343,6 +1683,55 @@ return MSVCP_basic_string_char_find_first_of_cstr_substr(this, &ch, off, 1); } +/* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */ +/* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_cstr_substr, 16) +MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_not_of_cstr_substr( + const basic_string_char *this, const char *find, MSVCP_size_t off, MSVCP_size_t len) +{ + const char *p, *end; + + TRACE("%p %p %lu %lu\n", this, find, off, len); + + if(offsize) { + end = basic_string_char_const_ptr(this)+this->size; + for(p=basic_string_char_const_ptr(this)+off; psize); +} + +/* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */ +/* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_cstr, 12) +MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_not_of_cstr( + const basic_string_char *this, const char *find, MSVCP_size_t off) +{ + return MSVCP_basic_string_char_find_first_not_of_cstr_substr( + this, find, off, MSVCP_char_traits_char_length(find)); +} + +/* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */ +/* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_ch, 12) +MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_not_of_ch( + const basic_string_char *this, char ch, MSVCP_size_t off) +{ + return MSVCP_basic_string_char_find_first_not_of_cstr_substr(this, &ch, off, 1); +} + /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */ /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_cstr_substr, 16) @@ -1353,7 +1742,6 @@ TRACE("%p %p %lu %lu\n", this, find, off, len); - if(len>0 && this->size>0) { if(off >= this->size) off = this->size-1; @@ -1396,10 +1784,104 @@ return MSVCP_basic_string_char_find_last_of_cstr_substr(this, &ch, off, 1); } -/* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */ -/* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */ +/* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */ +/* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_cstr_substr, 16) +MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of_cstr_substr( + const basic_string_char *this, const char *find, MSVCP_size_t off, MSVCP_size_t len) +{ + const char *p, *beg; + + TRACE("%p %p %lu %lu\n", this, find, off, len); + + if(len>0 && this->size>0) { + if(off >= this->size) + off = this->size-1; + + beg = basic_string_char_const_ptr(this); + for(p=beg+off; p>=beg; p--) + if(!MSVCP_char_traits_char_find(find, len, p)) + return p-beg; + } + + return MSVCP_basic_string_char_npos; +} + +/* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */ +/* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of, 12) +MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of( + const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off) +{ + return MSVCP_basic_string_char_find_last_not_of_cstr_substr(this, + basic_string_char_const_ptr(find), off, find->size); +} + +/* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */ +/* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_cstr, 12) +MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of_cstr( + const basic_string_char *this, const char *find, MSVCP_size_t off) +{ + return MSVCP_basic_string_char_find_last_not_of_cstr_substr( + this, find, off, MSVCP_char_traits_char_length(find)); +} + +/* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */ +/* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_ch, 12) +MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of_ch( + const basic_string_char *this, char ch, MSVCP_size_t off) +{ + return MSVCP_basic_string_char_find_last_not_of_cstr_substr(this, &ch, off, 1); +} + /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */ /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_at, 8) +char* __thiscall MSVCP_basic_string_char_operator_at( + basic_string_char *this, MSVCP_size_t pos) +{ + TRACE("%p %lu\n", this, pos); + + assert(this->size >= pos); + return basic_string_char_ptr(this)+pos; +} + +/* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */ +/* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_const_operator_at, 8) +const char* __thiscall MSVCP_basic_string_char_const_operator_at( + const basic_string_char *this, MSVCP_size_t pos) +{ + TRACE("%p %lu\n", this, pos); + + assert(this->size >= pos); + return basic_string_char_const_ptr(this)+pos; +} + +/* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADU_Size_type_nosscl@01@@Z */ +/* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEADU_Size_type_nosscl@01@@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_at_noverify, 8) +char* __thiscall MSVCP_basic_string_char_operator_at_noverify( + basic_string_char *this, size_t_noverify pos) +{ + TRACE("%p %lu\n", this, pos.val); + return basic_string_char_ptr(this)+pos.val; +} + +/* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDU_Size_type_nosscl@01@@Z */ +/* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBDU_Size_type_nosscl@01@@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_const_at_noverify, 8) +const char* __thiscall MSVCP_basic_string_char_operator_const_at_noverify( + const basic_string_char *this, size_t_noverify pos) +{ + TRACE("%p %lu\n", this, pos.val); + return basic_string_char_const_ptr(this)+pos.val; +} + +/* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */ +/* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_at, 8) char* __thiscall MSVCP_basic_string_char_at( basic_string_char *this, MSVCP_size_t pos) @@ -1414,8 +1896,6 @@ /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */ /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */ -/* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */ -/* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_const_at, 8) const char* __thiscall MSVCP_basic_string_char_const_at( const basic_string_char *this, MSVCP_size_t pos) @@ -1428,19 +1908,207 @@ return basic_string_char_const_ptr(this)+pos; } -/* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXID@Z */ -/* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_KD@Z */ -DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize_ch, 12) -void __thiscall MSVCP_basic_string_char_resize_ch( - basic_string_char *this, MSVCP_size_t size, char ch) +/* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z */ +/* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr_len, 20) +basic_string_char* __thiscall basic_string_char_replace_cstr_len(basic_string_char *this, + MSVCP_size_t off, MSVCP_size_t len, const char *str, MSVCP_size_t str_len) { - TRACE("%p %lu %c\n", this, size, ch); + MSVCP_size_t inside_pos = -1; + char *ptr = basic_string_char_ptr(this); - if(size <= this->size) - MSVCP_basic_string_char_erase(this, size, this->size); - else - MSVCP_basic_string_char_append_len_ch(this, size-this->size, ch); -} + TRACE("%p %ld %ld %p %ld\n", this, off, len, str, str_len); + + if(this->size < off) + MSVCP__String_base_Xran(); + + if(off+len > this->size) + len = this->size-off; + + if(MSVCP_basic_string_char_npos-str_len <= this->size-len) + MSVCP__String_base_Xlen(); + + if(basic_string_char_inside(this, str)) + inside_pos = str-ptr; + + if(len < str_len) + basic_string_char_grow(this, this->size-len+str_len, FALSE); + + if(inside_pos == -1) { + memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(char)); + memcpy(ptr+off, str, str_len*sizeof(char)); + } else if(len >= str_len) { + memmove(ptr+off, ptr+inside_pos, str_len*sizeof(char)); + memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(char)); + } else { + MSVCP_size_t size; + + memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(char)); + + if(inside_pos < off+len) { + size = off+len-inside_pos; + if(size > str_len) + size = str_len; + memmove(ptr+off, ptr+inside_pos, size*sizeof(char)); + } else { + size = 0; + } + + if(str_len > size) + memmove(ptr+off+size, ptr+off+str_len, (str_len-size)*sizeof(char)); + } + + basic_string_char_eos(this, this->size-len+str_len); + return this; +} + +/* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z */ +/* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr, 16) +basic_string_char* __thiscall basic_string_char_replace_cstr(basic_string_char *this, + MSVCP_size_t off, MSVCP_size_t len, const char *str) +{ + return basic_string_char_replace_cstr_len(this, off, len, str, + MSVCP_char_traits_char_length(str)); +} + +/* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z */ +/* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_char_replace_substr, 24) +basic_string_char* __thiscall basic_string_char_replace_substr(basic_string_char *this, MSVCP_size_t off, + MSVCP_size_t len, const basic_string_char *str, MSVCP_size_t str_off, MSVCP_size_t str_len) +{ + if(str->size < str_off) + MSVCP__String_base_Xran(); + + if(str_off+str_len > str->size) + str_len = str->size-str_off; + + return basic_string_char_replace_cstr_len(this, off, len, + basic_string_char_const_ptr(str)+str_off, str_len); +} + +/* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z */ +/* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_char_replace, 16) +basic_string_char* __thiscall basic_string_char_replace(basic_string_char *this, + MSVCP_size_t off, MSVCP_size_t len, const basic_string_char *str) +{ + return basic_string_char_replace_cstr_len(this, off, len, + basic_string_char_const_ptr(str), str->size); +} + +/* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z */ +/* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_char_replace_ch, 20) +basic_string_char* __thiscall basic_string_char_replace_ch(basic_string_char *this, + MSVCP_size_t off, MSVCP_size_t len, MSVCP_size_t count, char ch) +{ + char *ptr = basic_string_char_ptr(this); + + TRACE("%p %ld %ld %ld %c\n", this, off, len, count, ch); + + if(this->size < off) + MSVCP__String_base_Xran(); + + if(off+len > this->size) + len = this->size-off; + + if(MSVCP_basic_string_char_npos-count <= this->size-len) + MSVCP__String_base_Xlen(); + + if(len < count) + basic_string_char_grow(this, this->size-len+count, FALSE); + + memmove(ptr+off+count, ptr+off+len, (this->size-off-len)*sizeof(char)); + MSVCP_char_traits_char_assignn(ptr+off, count, ch); + basic_string_char_eos(this, this->size-len+count); + + return this; +} + +/* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@000@Z */ +/* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@000@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_iter, 36) +basic_string_char* __thiscall basic_string_char_replace_iter_iter(basic_string_char *this, + String_iterator_char beg, String_iterator_char end, + String_iterator_char res_beg, String_iterator_char res_end) +{ + String_iterator_char begin = { this, basic_string_char_ptr(this) }; + return basic_string_char_replace_cstr_len(this, + MSVCP_basic_string_char_Pdif(beg, begin), MSVCP_basic_string_char_Pdif(end, beg), + res_beg.pos, MSVCP_basic_string_char_Pdif(res_end, res_beg)); +} + +/* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0ABV12@@Z */ +/* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0AEBV12@@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_bstr, 24) +basic_string_char* __thiscall basic_string_char_replace_iter_bstr(basic_string_char *this, + String_iterator_char beg, String_iterator_char end, const basic_string_char *str) +{ + String_iterator_char begin = { this, basic_string_char_ptr(this) }; + return basic_string_char_replace(this, MSVCP_basic_string_char_Pdif(beg, begin), + MSVCP_basic_string_char_Pdif(end, begin), str); +} + +/* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0ID@Z */ +/* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0_KD@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_ch, 28) +basic_string_char* __thiscall basic_string_char_replace_iter_ch(basic_string_char *this, + String_iterator_char beg, String_iterator_char end, MSVCP_size_t count, char ch) +{ + String_iterator_char begin = { this, basic_string_char_ptr(this) }; + return basic_string_char_replace_ch(this, MSVCP_basic_string_char_Pdif(beg, begin), + MSVCP_basic_string_char_Pdif(end, begin), count, ch); +} + +/* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PBD1@Z */ +/* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PEBD1@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_ptr_ptr, 28) +basic_string_char* __thiscall basic_string_char_replace_iter_ptr_ptr(basic_string_char *this, + String_iterator_char beg, String_iterator_char end, + const char *res_beg, const char *res_end) +{ + String_iterator_char begin = { this, basic_string_char_ptr(this) }; + return basic_string_char_replace_cstr_len(this, MSVCP_basic_string_char_Pdif(beg, begin), + MSVCP_basic_string_char_Pdif(end, begin), res_beg, res_end-res_beg); +} + +/* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PBD@Z */ +/* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PEBD@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr, 24) +basic_string_char* __thiscall basic_string_char_replace_iter_cstr(basic_string_char *this, + String_iterator_char beg, String_iterator_char end, const char *str) +{ + String_iterator_char begin = { this, basic_string_char_ptr(this) }; + return basic_string_char_replace_cstr(this, MSVCP_basic_string_char_Pdif(beg, begin), + MSVCP_basic_string_char_Pdif(end, begin), str); +} + +/* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PBDI@Z */ +/* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PEBD_K@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr_len, 28) +basic_string_char* __thiscall basic_string_char_replace_iter_cstr_len(basic_string_char *this, + String_iterator_char beg, String_iterator_char end, const char *str, MSVCP_size_t len) +{ + String_iterator_char begin = { this, basic_string_char_ptr(this) }; + return basic_string_char_replace_cstr_len(this, MSVCP_basic_string_char_Pdif(beg, begin), + MSVCP_basic_string_char_Pdif(end, begin), str, len); +} + +/* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXID@Z */ +/* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_KD@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize_ch, 12) +void __thiscall MSVCP_basic_string_char_resize_ch( + basic_string_char *this, MSVCP_size_t size, char ch) +{ + TRACE("%p %lu %c\n", this, size, ch); + + if(size <= this->size) + MSVCP_basic_string_char_erase(this, size, this->size); + else + MSVCP_basic_string_char_append_len_ch(this, size-this->size, ch); +} /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */ /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */ @@ -1523,20 +2191,6 @@ return ret; } -/* ?_Pdif@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@KAIV?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z */ -/* ?_Pdif@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@KA_KV?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z */ -MSVCP_size_t __cdecl MSVCP_basic_string_char_Pdif(String_iterator_char i1, String_iterator_char i2) -{ - TRACE("(%p %p) (%p %p)\n", i1.bstr, i1.pos, i2.bstr, i2.pos); - - if((!i1.bstr && i1.pos) || i1.bstr!=i2.bstr) { - _invalid_parameter(NULL, NULL, NULL, 0, 0); - return 0; - } - - return !i1.pos ? 0 : i1.pos-i2.pos; -} - /* basic_string, allocator> */ /* ?npos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@2IB */ /* ?npos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@2_KB */ @@ -1617,7 +2271,7 @@ if(new_res/3 < this->res/2) new_res = this->res + this->res/2; - ptr = MSVCP_allocator_wchar_allocate(this->allocator, new_res); + ptr = MSVCP_allocator_wchar_allocate(this->allocator, new_res+1); if(!ptr) ptr = MSVCP_allocator_wchar_allocate(this->allocator, new_size+1); else @@ -1643,6 +2297,30 @@ return (new_size>0); } +/* ?_Pdif@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@KAIV?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z */ +/* ?_Pdif@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@KA_KV?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z */ +MSVCP_size_t __cdecl MSVCP_basic_string_wchar_Pdif(String_iterator_wchar i1, String_iterator_wchar i2) +{ + TRACE("(%p %p) (%p %p)\n", i1.bstr, i1.pos, i2.bstr, i2.pos); + + if((!i1.bstr && i1.pos) || i1.bstr!=i2.bstr) { + _invalid_parameter(NULL, NULL, NULL, 0, 0); + return 0; + } + + return !i1.pos ? 0 : i1.pos-i2.pos; +} + +/* ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$allocator@_W@2@XZ */ +/* ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$allocator@_W@2@XZ */ +DEFINE_THISCALL_WRAPPER(basic_string_wchar_get_allocator, 4) +allocator __thiscall basic_string_wchar_get_allocator(const basic_string_wchar *this) +{ + allocator ret; + TRACE("%p\n", this); + return ret; +} + /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@II@Z */ /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_erase, 12) @@ -1651,10 +2329,8 @@ { TRACE("%p %lu %lu\n", this, pos, len); - if(pos > this->size) { + if(pos > this->size) MSVCP__String_base_Xran(); - return NULL; - } if(len > this->size-pos) len = this->size-pos; @@ -1669,6 +2345,38 @@ return this; } +/* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z */ +/* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z */ +DEFINE_THISCALL_WRAPPER_RETPTR(basic_string_wchar_erase_iter_range, 20) +String_iterator_wchar __thiscall basic_string_wchar_erase_iter_range(basic_string_wchar *this, + String_iterator_wchar beg, String_iterator_wchar end) +{ + String_iterator_wchar iter = { this, basic_string_wchar_ptr(this) }; + MSVCP_size_t off = MSVCP_basic_string_wchar_Pdif(beg, iter); + + MSVCP_basic_string_wchar_erase(this, off, MSVCP_basic_string_wchar_Pdif(end, beg)); + + iter.bstr = this; + iter.pos = basic_string_wchar_ptr(this)+off; + return iter; +} + +/* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */ +/* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */ +DEFINE_THISCALL_WRAPPER_RETPTR(basic_string_wchar_erase_iter, 12) +String_iterator_wchar __thiscall basic_string_wchar_erase_iter( + basic_string_wchar *this, String_iterator_wchar pos) +{ + String_iterator_wchar iter = { this, basic_string_wchar_ptr(this) }; + MSVCP_size_t off = MSVCP_basic_string_wchar_Pdif(pos, iter); + + MSVCP_basic_string_wchar_erase(this, off, 1); + + iter.bstr = this; + iter.pos = basic_string_wchar_ptr(this)+off; + return iter; +} + /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@II@Z */ /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_substr, 16) @@ -1678,10 +2386,8 @@ { TRACE("%p %p %lu %lu\n", this, assign, pos, len); - if(assign->size < pos) { + if(assign->size < pos) MSVCP__String_base_Xran(); - return NULL; - } if(len > assign->size-pos) len = assign->size-pos; @@ -1736,7 +2442,7 @@ basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_ch( basic_string_wchar *this, wchar_t ch) { - return MSVCP_basic_string_wchar_assign_cstr_len(this, &ch, 1); + return MSVCP_basic_string_wchar_assign_cstr_len(this, &ch, 1); } /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W@Z */ @@ -1751,6 +2457,38 @@ MSVCP_char_traits_wchar_length(str)); } +/* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z */ +/* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assignn, 12) +basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assignn( + basic_string_wchar *this, MSVCP_size_t count, wchar_t ch) +{ + TRACE("%p %ld %c\n", this, count, ch); + + basic_string_wchar_grow(this, count, FALSE); + MSVCP_char_traits_wchar_assignn(basic_string_wchar_ptr(this), count, ch); + basic_string_wchar_eos(this, count); + return this; +} + +/* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z */ +/* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_ptr_ptr, 12) +basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_ptr_ptr( + basic_string_wchar *this, const wchar_t *first, const wchar_t *last) +{ + return MSVCP_basic_string_wchar_assign_cstr_len(this, first, last-first); +} + +/* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z */ +/* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_iter, 20) +basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_iter(basic_string_wchar *this, + String_iterator_wchar beg, String_iterator_wchar end) +{ + return MSVCP_basic_string_wchar_assign_ptr_ptr(this, beg.pos, end.pos+1); +} + /* ?_Chassign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXII_W@Z */ /* ?_Chassign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_K0_W@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_Chassign, 16) @@ -1800,6 +2538,23 @@ return this->res; } +/* ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z */ +/* ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_reserve, 8) +void __thiscall MSVCP_basic_string_wchar_reserve(basic_string_wchar *this, MSVCP_size_t size) +{ + MSVCP_size_t len; + + TRACE("%p %ld\n", this, size); + + len = this->size; + if(len > size) + return; + + basic_string_wchar_grow(this, size, FALSE); + basic_string_wchar_eos(this, len); +} + /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ */ /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@XZ */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor, 4) @@ -1837,6 +2592,15 @@ return this; } +/* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WABV?$allocator@_W@1@@Z */ +/* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_WAEBV?$allocator@_W@1@@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_alloc, 12) +basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr_alloc( + basic_string_wchar *this, const wchar_t *str, const void *alloc) +{ + return MSVCP_basic_string_wchar_ctor_cstr(this, str); +} + /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WI@Z */ /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_K@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_len, 12) @@ -1850,6 +2614,15 @@ return this; } +/* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WIABV?$allocator@_W@1@@Z */ +/* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_KAEBV?$allocator@_W@1@@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_len_alloc, 16) +basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr_len_alloc( + basic_string_wchar *this, const wchar_t *str, MSVCP_size_t len, const void *alloc) +{ + return MSVCP_basic_string_wchar_ctor_cstr_len(this, str, len); +} + /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@II@Z */ /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_substr, 16) @@ -1864,6 +2637,16 @@ return this; } +/* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@IIABV?$allocator@_W@1@@Z */ +/* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@_W@1@@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_substr_alloc, 20) +basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_substr_alloc( + basic_string_wchar *this, const basic_string_wchar *assign, + MSVCP_size_t pos, MSVCP_size_t len, const void *alloc) +{ + return MSVCP_basic_string_wchar_ctor_substr(this, assign, pos, len); +} + /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV?$allocator@_W@1@@Z */ /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV?$allocator@_W@1@@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_alloc, 8) @@ -1876,6 +2659,46 @@ return this; } +/* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_W@Z */ +/* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_W@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ch, 12) +basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_ch(basic_string_wchar *this, + MSVCP_size_t count, wchar_t ch) +{ + TRACE("%p %ld %c\n", this, count, ch); + + basic_string_wchar_tidy(this, FALSE, 0); + MSVCP_basic_string_wchar_assignn(this, count, ch); + return this; +} + +/* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_WABV?$allocator@_W@1@@Z */ +/* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_WAEBV?$allocator@_W@1@@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ch_alloc, 16) +basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_ch_alloc(basic_string_wchar *this, + MSVCP_size_t count, wchar_t ch, const void *alloc) +{ + return MSVCP_basic_string_wchar_ctor_ch(this, count, ch); +} + +/* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W0@Z */ +/* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W0@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ptr_ptr, 12) +basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_ptr_ptr(basic_string_wchar *this, + const wchar_t *first, const wchar_t *last) +{ + return MSVCP_basic_string_wchar_ctor_cstr_len(this, first, last-first); +} + +/* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0@Z */ +/* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_iter, 20) +basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_iter(basic_string_wchar *this, + String_iterator_wchar beg, String_iterator_wchar end) +{ + return MSVCP_basic_string_wchar_ctor_cstr_len(this, beg.pos, end.pos-beg.pos+1); +} + /* ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ */ /* ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@XZ */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_dtor, 4) @@ -1896,6 +2719,15 @@ return this->size; } +/* ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */ +/* ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */ +DEFINE_THISCALL_WRAPPER(basic_string_wchar_max_size, 4) +MSVCP_size_t __thiscall basic_string_wchar_max_size(const basic_string_wchar *this) +{ + TRACE("%p\n", this); + return MSVCP_allocator_wchar_max_size(this->allocator)-1; +} + /* ?empty@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE_NXZ */ /* ?empty@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_NXZ */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_empty, 4) @@ -2098,6 +2930,34 @@ return ret; } +/* ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@_W@Z */ +/* ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@AEBV10@_W@Z */ +basic_string_wchar __cdecl MSVCP_basic_string_wchar_concatenate_bstr_ch( + const basic_string_wchar *left, wchar_t right) +{ + basic_string_wchar ret = { 0 }; + + TRACE("%p %c\n", left, right); + + MSVCP_basic_string_wchar_copy_ctor(&ret, left); + MSVCP_basic_string_wchar_append_ch(&ret, right); + return ret; +} + +/* ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_WABV10@@Z */ +/* ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_WAEBV10@@Z */ +basic_string_wchar __cdecl MSVCP_basic_string_wchar_concatenate_ch_bstr( + wchar_t left, const basic_string_wchar *right) +{ + basic_string_wchar ret = { 0 }; + + TRACE("%c %p\n", left, right); + + MSVCP_basic_string_wchar_ctor_cstr_len(&ret, &left, 1); + MSVCP_basic_string_wchar_append(&ret, right); + return ret; +} + /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIPB_WI@Z */ /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0PEB_W0@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_cstr_len, 20) @@ -2259,6 +3119,78 @@ return MSVCP_basic_string_wchar_compare_cstr(right, left) > 0; } +/* ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */ +/* ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */ +MSVCP_bool __cdecl MSVCP_basic_string_wchar_leq( + const basic_string_wchar *left, const basic_string_wchar *right) +{ + return MSVCP_basic_string_wchar_compare(left, right) <= 0; +} + +/* ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z */ +/* ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z */ +MSVCP_bool __cdecl MSVCP_basic_string_wchar_leq_bstr_cstr( + const basic_string_wchar *left, const wchar_t *right) +{ + return MSVCP_basic_string_wchar_compare_cstr(left, right) <= 0; +} + +/* ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */ +/* ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */ +MSVCP_bool __cdecl MSVCP_basic_string_wchar_leq_cstr_bstr( + const wchar_t *left, const basic_string_wchar *right) +{ + return MSVCP_basic_string_wchar_compare_cstr(right, left) >= 0; +} + +/* ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */ +/* ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */ +MSVCP_bool __cdecl MSVCP_basic_string_wchar_greater( + const basic_string_wchar *left, const basic_string_wchar *right) +{ + return MSVCP_basic_string_wchar_compare(left, right) > 0; +} + +/* ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z */ +/* ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z */ +MSVCP_bool __cdecl MSVCP_basic_string_wchar_greater_bstr_cstr( + const basic_string_wchar *left, const wchar_t *right) +{ + return MSVCP_basic_string_wchar_compare_cstr(left, right) > 0; +} + +/* ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */ +/* ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */ +MSVCP_bool __cdecl MSVCP_basic_string_wchar_greater_cstr_bstr( + const wchar_t *left, const basic_string_wchar *right) +{ + return MSVCP_basic_string_wchar_compare_cstr(right, left) < 0; +} + +/* ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */ +/* ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */ +MSVCP_bool __cdecl MSVCP_basic_string_wchar_geq( + const basic_string_wchar *left, const basic_string_wchar *right) +{ + return MSVCP_basic_string_wchar_compare(left, right) >= 0; +} + +/* ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z */ +/* ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z */ +MSVCP_bool __cdecl MSVCP_basic_string_wchar_geq_bstr_cstr( + const basic_string_wchar *left, const wchar_t *right) +{ + return MSVCP_basic_string_wchar_compare_cstr(left, right) >= 0; +} + +/* ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */ +/* ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */ +MSVCP_bool __cdecl MSVCP_basic_string_wchar_geq_cstr_bstr( + const wchar_t *left, const basic_string_wchar *right) +{ + return MSVCP_basic_string_wchar_compare_cstr(right, left) <= 0; +} + /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */ /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_cstr_substr, 16) @@ -2314,6 +3246,62 @@ return MSVCP_basic_string_wchar_find_cstr_substr(this, &ch, pos, 1); } +/* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */ +/* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_cstr_substr, 16) +MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_cstr_substr( + const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t pos, MSVCP_size_t len) +{ + const wchar_t *p, *end; + + TRACE("%p %s %lu %lu\n", this, debugstr_w(find), pos, len); + + if(len==0) + return possize ? pos : this->size; + + if(len > this->size) + return MSVCP_basic_string_wchar_npos; + + if(pos > this->size-len+1) + pos = this->size-len+1; + end = basic_string_wchar_const_ptr(this); + for(p=end+pos-1; p>=end; p--) { + if(*p==*find && !MSVCP_char_traits_wchar_compare(p, find, len)) + return p-basic_string_wchar_const_ptr(this); + } + + return MSVCP_basic_string_wchar_npos; +} + +/* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */ +/* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_cstr_off, 12) +MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_cstr_off( + const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t pos) +{ + return MSVCP_basic_string_wchar_rfind_cstr_substr(this, find, pos, + MSVCP_char_traits_wchar_length(find)); +} + +/* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */ +/* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_off, 12) +MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_off( + const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off) +{ + return MSVCP_basic_string_wchar_rfind_cstr_substr(this, + basic_string_wchar_const_ptr(find), off, find->size); +} + +/* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */ +/* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_ch, 12) +MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_ch( + const basic_string_wchar *this, wchar_t ch, MSVCP_size_t pos) +{ + return MSVCP_basic_string_wchar_find_cstr_substr(this, &ch, pos, 1); +} + /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */ /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_cstr_substr, 16) @@ -2363,6 +3351,55 @@ return MSVCP_basic_string_wchar_find_first_of_cstr_substr(this, &ch, off, 1); } +/* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */ +/* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_cstr_substr, 16) +MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of_cstr_substr( + const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off, MSVCP_size_t len) +{ + const wchar_t *p, *end; + + TRACE("%p %p %lu %lu\n", this, find, off, len); + + if(offsize) { + end = basic_string_wchar_const_ptr(this)+this->size; + for(p=basic_string_wchar_const_ptr(this)+off; psize); +} + +/* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */ +/* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_cstr, 12) +MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of_cstr( + const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off) +{ + return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr( + this, find, off, MSVCP_char_traits_wchar_length(find)); +} + +/* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */ +/* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_ch, 12) +MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of_ch( + const basic_string_wchar *this, wchar_t ch, MSVCP_size_t off) +{ + return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(this, &ch, off, 1); +} + /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */ /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_cstr_substr, 16) @@ -2416,10 +3453,292 @@ return MSVCP_basic_string_wchar_find_last_of_cstr_substr(this, &ch, off, 1); } -/* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WI@Z */ -/* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_W_K@Z */ +/* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */ +/* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_cstr_substr, 16) +MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of_cstr_substr( + const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off, MSVCP_size_t len) +{ + const wchar_t *p, *beg; + + TRACE("%p %p %lu %lu\n", this, find, off, len); + + if(len>0 && this->size>0) { + if(off >= this->size) + off = this->size-1; + + beg = basic_string_wchar_const_ptr(this); + for(p=beg+off; p>=beg; p--) + if(!MSVCP_char_traits_wchar_find(find, len, p)) + return p-beg; + } + + return MSVCP_basic_string_wchar_npos; +} + +/* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */ +/* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of, 12) +MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of( + const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off) +{ + return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(this, + basic_string_wchar_const_ptr(find), off, find->size); +} + +/* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */ +/* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_cstr, 12) +MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of_cstr( + const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off) +{ + return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr( + this, find, off, MSVCP_char_traits_wchar_length(find)); +} + +/* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */ +/* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_ch, 12) +MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of_ch( + const basic_string_wchar *this, wchar_t ch, MSVCP_size_t off) +{ + return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(this, &ch, off, 1); +} + +/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_WI@Z */ +/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W0@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr_len, 20) +basic_string_wchar* __thiscall basic_string_wchar_replace_cstr_len(basic_string_wchar *this, + MSVCP_size_t off, MSVCP_size_t len, const wchar_t *str, MSVCP_size_t str_len) +{ + MSVCP_size_t inside_pos = -1; + wchar_t *ptr = basic_string_wchar_ptr(this); + + TRACE("%p %ld %ld %p %ld\n", this, off, len, str, str_len); + + if(this->size < off) + MSVCP__String_base_Xran(); + + if(off+len > this->size) + len = this->size-off; + + if(MSVCP_basic_string_wchar_npos-str_len <= this->size-len) + MSVCP__String_base_Xlen(); + + if(basic_string_wchar_inside(this, str)) + inside_pos = str-ptr; + + if(len < str_len) + basic_string_wchar_grow(this, this->size-len+str_len, FALSE); + + if(inside_pos == -1) { + memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(wchar_t)); + memcpy(ptr+off, str, str_len*sizeof(wchar_t)); + } else if(len >= str_len) { + memmove(ptr+off, ptr+inside_pos, str_len*sizeof(wchar_t)); + memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(wchar_t)); + } else { + MSVCP_size_t size; + + memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(wchar_t)); + + if(inside_pos < off+len) { + size = off+len-inside_pos; + if(size > str_len) + size = str_len; + memmove(ptr+off, ptr+inside_pos, size*sizeof(wchar_t)); + } else { + size = 0; + } + + if(str_len > size) + memmove(ptr+off+size, ptr+off+str_len, (str_len-size)*sizeof(wchar_t)); + } + + basic_string_wchar_eos(this, this->size-len+str_len); + return this; +} + +/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_W@Z */ +/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr, 16) +basic_string_wchar* __thiscall basic_string_wchar_replace_cstr(basic_string_wchar *this, + MSVCP_size_t off, MSVCP_size_t len, const wchar_t *str) +{ + return basic_string_wchar_replace_cstr_len(this, off, len, str, + MSVCP_char_traits_wchar_length(str)); +} + +/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@II@Z */ +/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_substr, 24) +basic_string_wchar* __thiscall basic_string_wchar_replace_substr(basic_string_wchar *this, MSVCP_size_t off, + MSVCP_size_t len, const basic_string_wchar *str, MSVCP_size_t str_off, MSVCP_size_t str_len) +{ + if(str->size < str_off) + MSVCP__String_base_Xran(); + + if(str_off+str_len > str->size) + str_len = str->size-str_off; + + return basic_string_wchar_replace_cstr_len(this, off, len, + basic_string_wchar_const_ptr(str)+str_off, str_len); +} + +/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@@Z */ +/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace, 16) +basic_string_wchar* __thiscall basic_string_wchar_replace(basic_string_wchar *this, + MSVCP_size_t off, MSVCP_size_t len, const basic_string_wchar *str) +{ + return basic_string_wchar_replace_cstr_len(this, off, len, + basic_string_wchar_const_ptr(str), str->size); +} + +/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@III_W@Z */ +/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K00_W@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_ch, 20) +basic_string_wchar* __thiscall basic_string_wchar_replace_ch(basic_string_wchar *this, + MSVCP_size_t off, MSVCP_size_t len, MSVCP_size_t count, wchar_t ch) +{ + wchar_t *ptr = basic_string_wchar_ptr(this); + + TRACE("%p %ld %ld %ld %c\n", this, off, len, count, ch); + + if(this->size < off) + MSVCP__String_base_Xran(); + + if(off+len > this->size) + len = this->size-off; + + if(MSVCP_basic_string_wchar_npos-count <= this->size-len) + MSVCP__String_base_Xlen(); + + if(len < count) + basic_string_wchar_grow(this, this->size-len+count, FALSE); + + memmove(ptr+off+count, ptr+off+len, (this->size-off-len)*sizeof(wchar_t)); + MSVCP_char_traits_wchar_assignn(ptr+off, count, ch); + basic_string_wchar_eos(this, this->size-len+count); + + return this; +} + +/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@000@Z */ +/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@000@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_iter, 36) +basic_string_wchar* __thiscall basic_string_wchar_replace_iter_iter(basic_string_wchar *this, + String_iterator_wchar beg, String_iterator_wchar end, + String_iterator_wchar res_beg, String_iterator_wchar res_end) +{ + String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) }; + return basic_string_wchar_replace_cstr_len(this, + MSVCP_basic_string_wchar_Pdif(beg, begin), MSVCP_basic_string_wchar_Pdif(end, begin), + res_beg.pos, MSVCP_basic_string_wchar_Pdif(res_end, res_beg)); +} + +/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0ABV12@@Z */ +/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0AEBV12@@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_bstr, 24) +basic_string_wchar* __thiscall basic_string_wchar_replace_iter_bstr(basic_string_wchar *this, + String_iterator_wchar beg, String_iterator_wchar end, const basic_string_wchar *str) +{ + String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) }; + return basic_string_wchar_replace(this, MSVCP_basic_string_wchar_Pdif(beg, begin), + MSVCP_basic_string_wchar_Pdif(end, begin), str); +} + +/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0I_W@Z */ +/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0_K_W@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_ch, 28) +basic_string_wchar* __thiscall basic_string_wchar_replace_iter_ch(basic_string_wchar *this, + String_iterator_wchar beg, String_iterator_wchar end, MSVCP_size_t count, wchar_t ch) +{ + String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) }; + return basic_string_wchar_replace_ch(this, MSVCP_basic_string_wchar_Pdif(beg, begin), + MSVCP_basic_string_wchar_Pdif(end, begin), count, ch); +} + +/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0PB_W1@Z */ +/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0PEB_W1@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_ptr_ptr, 28) +basic_string_wchar* __thiscall basic_string_wchar_replace_iter_ptr_ptr(basic_string_wchar *this, + String_iterator_wchar beg, String_iterator_wchar end, + const wchar_t *res_beg, const wchar_t *res_end) +{ + String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) }; + return basic_string_wchar_replace_cstr_len(this, MSVCP_basic_string_wchar_Pdif(beg, begin), + MSVCP_basic_string_wchar_Pdif(end, begin), res_beg, res_end-res_beg); +} + +/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0PB_W@Z */ +/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0PEB_W@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr, 24) +basic_string_wchar* __thiscall basic_string_wchar_replace_iter_cstr(basic_string_wchar *this, + String_iterator_wchar beg, String_iterator_wchar end, const wchar_t *str) +{ + String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) }; + return basic_string_wchar_replace_cstr(this, MSVCP_basic_string_wchar_Pdif(beg, begin), + MSVCP_basic_string_wchar_Pdif(end, begin), str); +} + +/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0PB_WI@Z */ +/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0PEB_W_K@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr_len, 28) +basic_string_wchar* __thiscall basic_string_wchar_replace_iter_cstr_len(basic_string_wchar *this, + String_iterator_wchar beg, String_iterator_wchar end, const wchar_t *str, MSVCP_size_t len) +{ + String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) }; + return basic_string_wchar_replace_cstr_len(this, MSVCP_basic_string_wchar_Pdif(beg, begin), + MSVCP_basic_string_wchar_Pdif(end, begin), str, len); +} + /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WI@Z */ /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_W_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_at, 8) +wchar_t* __thiscall MSVCP_basic_string_wchar_operator_at( + basic_string_wchar *this, MSVCP_size_t pos) +{ + TRACE("%p %lu\n", this, pos); + + assert(this->size >= pos); + return basic_string_wchar_ptr(this)+pos; +} + +/* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WI@Z */ +/* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_W_K@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_const_operator_at, 8) +const wchar_t* __thiscall MSVCP_basic_string_wchar_const_operator_at( + const basic_string_wchar *this, MSVCP_size_t pos) +{ + TRACE("%p %lu\n", this, pos); + + assert(this->size >= pos); + return basic_string_wchar_const_ptr(this)+pos; +} + +/* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WU_Size_type_nosscl@01@@Z */ +/* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_WU_Size_type_nosscl@01@@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_at_noverify, 8) +wchar_t* __thiscall MSVCP_basic_string_wchar_operator_at_noverify( + basic_string_wchar *this, size_t_noverify pos) +{ + TRACE("%p %lu\n", this, pos.val); + return basic_string_wchar_ptr(this)+pos.val; +} + +/* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WU_Size_type_nosscl@01@@Z */ +/* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_WU_Size_type_nosscl@01@@Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_const_at_noverify, 8) +const wchar_t* __thiscall MSVCP_basic_string_wchar_operator_const_at_noverify( + const basic_string_wchar *this, size_t_noverify pos) +{ + TRACE("%p %lu\n", this, pos.val); + return basic_string_wchar_const_ptr(this)+pos.val; +} + +/* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WI@Z */ +/* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_W_K@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_at, 8) wchar_t* __thiscall MSVCP_basic_string_wchar_at( basic_string_wchar *this, MSVCP_size_t pos) @@ -2434,8 +3753,6 @@ /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WI@Z */ /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_W_K@Z */ -/* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WI@Z */ -/* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_W_K@Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_const_at, 8) const wchar_t* __thiscall MSVCP_basic_string_wchar_const_at( const basic_string_wchar *this, MSVCP_size_t pos) @@ -2543,16 +3860,42 @@ return ret; } -/* ?_Pdif@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@KAIV?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z */ -/* ?_Pdif@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@KA_KV?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z */ -MSVCP_size_t __cdecl MSVCP_basic_string_wchar_Pdif(String_iterator_wchar i1, String_iterator_wchar i2) +/* _String_val class */ +/* ??_F?$_String_val@DV?$allocator@D@std@@@std@@QAEXXZ */ +/* ??_F?$_String_val@DV?$allocator@D@std@@@std@@QEAAXXZ */ +/* ??_F?$_String_val@GV?$allocator@G@std@@@std@@QAEXXZ */ +/* ??_F?$_String_val@GV?$allocator@G@std@@@std@@QEAAXXZ */ +/* ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QAEXXZ */ +/* ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAXXZ */ +DEFINE_THISCALL_WRAPPER(_String_val_ctor, 4) +void* __thiscall _String_val_ctor(void *this) { - TRACE("(%p %p) (%p %p)\n", i1.bstr, i1.pos, i2.bstr, i2.pos); - - if((!i1.bstr && i1.pos) || i1.bstr!=i2.bstr) { - _invalid_parameter(NULL, NULL, NULL, 0, 0); - return 0; - } + TRACE("%p\n", this); + return this; +} - return !i1.pos ? 0 : i1.pos-i2.pos; +/* ??0?$_String_val@DV?$allocator@D@std@@@std@@IAE@V?$allocator@D@1@@Z */ +/* ??0?$_String_val@DV?$allocator@D@std@@@std@@IEAA@V?$allocator@D@1@@Z */ +/* ??0?$_String_val@GV?$allocator@G@std@@@std@@IAE@V?$allocator@G@1@@Z */ +/* ??0?$_String_val@GV?$allocator@G@std@@@std@@IEAA@V?$allocator@G@1@@Z */ +/* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IAE@V?$allocator@_W@1@@Z */ +/* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IEAA@V?$allocator@_W@1@@Z */ +/* ??0?$_String_val@DV?$allocator@D@std@@@std@@QAE@ABV01@@Z */ +/* ??0?$_String_val@DV?$allocator@D@std@@@std@@QEAA@AEBV01@@Z */ +/* ??0?$_String_val@GV?$allocator@G@std@@@std@@QAE@ABV01@@Z */ +/* ??0?$_String_val@GV?$allocator@G@std@@@std@@QEAA@AEBV01@@Z */ +/* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QAE@ABV01@@Z */ +/* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QEAA@AEBV01@@Z */ +/* ??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z */ +/* ??4?$_String_val@DV?$allocator@D@std@@@std@@QEAAAEAV01@AEBV01@@Z */ +/* ??4?$_String_val@GV?$allocator@G@std@@@std@@QAEAAV01@ABV01@@Z */ +/* ??4?$_String_val@GV?$allocator@G@std@@@std@@QEAAAEAV01@AEBV01@@Z */ +/* ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QAEAAV01@ABV01@@Z */ +/* ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAAEAV01@AEBV01@@Z */ +/* ??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z */ +DEFINE_THISCALL_WRAPPER(_String_val_null_ctor, 8) +void* __thiscall _String_val_null_ctor(void *this, const void *misc) +{ + TRACE("%p %p\n", this, misc); + return this; } diff -Nru wine1.3-1.3.30/dlls/msvcr100/msvcr100.spec wine1.3-1.3.31/dlls/msvcr100/msvcr100.spec --- wine1.3-1.3.30/dlls/msvcr100/msvcr100.spec 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msvcr100/msvcr100.spec 2011-10-21 18:38:36.000000000 +0000 @@ -1004,7 +1004,7 @@ @ stub _mbsupr_l @ cdecl _mbsupr_s(str long) msvcrt._mbsupr_s @ stub _mbsupr_s_l -@ stub _mbtowc_l +@ cdecl _mbtowc_l(ptr str long ptr) msvcrt._mbtowc_l @ cdecl _memccpy(ptr ptr long long) msvcrt._memccpy @ cdecl _memicmp(str str long) msvcrt._memicmp @ stub _memicmp_l diff -Nru wine1.3-1.3.30/dlls/msvcr80/msvcr80.spec wine1.3-1.3.31/dlls/msvcr80/msvcr80.spec --- wine1.3-1.3.30/dlls/msvcr80/msvcr80.spec 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msvcr80/msvcr80.spec 2011-10-21 18:38:36.000000000 +0000 @@ -850,7 +850,7 @@ @ stub _mbsupr_l @ cdecl _mbsupr_s(str long) msvcrt._mbsupr_s @ stub _mbsupr_s_l -@ stub _mbtowc_l +@ cdecl _mbtowc_l(ptr str long ptr) msvcrt._mbtowc_l @ cdecl _memccpy(ptr ptr long long) msvcrt._memccpy @ cdecl _memicmp(str str long) msvcrt._memicmp @ stub _memicmp_l diff -Nru wine1.3-1.3.30/dlls/msvcr90/msvcr90.spec wine1.3-1.3.31/dlls/msvcr90/msvcr90.spec --- wine1.3-1.3.30/dlls/msvcr90/msvcr90.spec 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msvcr90/msvcr90.spec 2011-10-21 18:38:36.000000000 +0000 @@ -375,6 +375,7 @@ @ cdecl _controlfp(long long) msvcrt._controlfp @ cdecl _controlfp_s(ptr long long) msvcrt._controlfp_s @ cdecl _copysign(double double) msvcrt._copysign +# stub -arch=win64 _copysignf(float float) @ varargs _cprintf(str) msvcrt._cprintf @ stub _cprintf_l @ stub _cprintf_p @@ -459,10 +460,12 @@ @ cdecl _findnext64(long ptr) msvcrt._findnext64 @ cdecl _findnext64i32(long ptr) msvcrt._findnext64i32 @ cdecl _finite(double) msvcrt._finite +# stub -arch=win64 _finitef(float) @ cdecl _flsbuf(long ptr) msvcrt._flsbuf @ cdecl _flushall() msvcrt._flushall @ extern _fmode msvcrt._fmode @ cdecl _fpclass(double) msvcrt._fpclass +# stub -arch=win64 _fpclassf(float) @ cdecl _fpieee_flt(long ptr ptr) msvcrt._fpieee_flt @ cdecl _fpreset() msvcrt._fpreset @ stub _fprintf_l @@ -648,6 +651,7 @@ @ cdecl _ismbstrail(ptr ptr) msvcrt._ismbstrail @ stub _ismbstrail_l @ cdecl _isnan(double) msvcrt._isnan +# stub -arch=win64 _isnanf(float) @ cdecl _isprint_l(long ptr) msvcrt._isprint_l @ stub _ispunct_l @ cdecl _isspace_l(long ptr) msvcrt._isspace_l @@ -689,6 +693,7 @@ @ cdecl _lock_file(ptr) msvcrt._lock_file @ cdecl _locking(long long long) msvcrt._locking @ cdecl _logb(double) msvcrt._logb +# stub _logbf(float) @ cdecl -i386 _longjmpex(ptr long) msvcrt._longjmpex @ cdecl _lrotl(long long) msvcrt._lrotl @ cdecl _lrotr(long long) msvcrt._lrotr @@ -838,7 +843,7 @@ @ stub _mbsupr_l @ cdecl _mbsupr_s(str long) msvcrt._mbsupr_s @ stub _mbsupr_s_l -@ stub _mbtowc_l +@ cdecl _mbtowc_l(ptr str long ptr) msvcrt._mbtowc_l @ cdecl _memccpy(ptr ptr long long) msvcrt._memccpy @ cdecl _memicmp(str str long) msvcrt._memicmp @ stub _memicmp_l @@ -851,6 +856,7 @@ @ cdecl _mktime64(ptr) msvcrt._mktime64 @ cdecl _msize(ptr) msvcrt._msize @ cdecl _nextafter(double double) msvcrt._nextafter +# stub -arch=win64 _nextafterf(float float) @ cdecl _onexit(ptr) msvcrt._onexit @ varargs _open(str long) msvcrt._open @ cdecl _open_osfhandle(long long) msvcrt._open_osfhandle @@ -892,6 +898,7 @@ @ cdecl -arch=i386 _safe_fprem() msvcrt._safe_fprem @ cdecl -arch=i386 _safe_fprem1() msvcrt._safe_fprem1 @ cdecl _scalb(double long) msvcrt._scalb +@ cdecl -arch=x86_64 _scalbf(float long) msvcrt._scalbf @ varargs _scanf_l(str ptr) msvcrt._scanf_l @ varargs _scanf_s_l(str ptr) msvcrt._scanf_s_l @ varargs _scprintf(str) msvcrt._scprintf @@ -1263,11 +1270,15 @@ @ cdecl abort() msvcrt.abort @ cdecl abs(long) msvcrt.abs @ cdecl acos(double) msvcrt.acos +@ cdecl -arch=x86_64 acosf(float) msvcrt.acosf @ cdecl asctime(ptr) msvcrt.asctime @ stub asctime_s @ cdecl asin(double) msvcrt.asin @ cdecl atan(double) msvcrt.atan @ cdecl atan2(double double) msvcrt.atan2 +@ cdecl -arch=x86_64 asinf(float) msvcrt.asinf +@ cdecl -arch=x86_64 atan2f(float float) msvcrt.atan2f +@ cdecl -arch=x86_64 atanf(float) msvcrt.atanf @ cdecl atexit(ptr) msvcrt.atexit @ cdecl atof(str) msvcrt.atof @ cdecl atoi(str) msvcrt.atoi @@ -1277,14 +1288,18 @@ @ cdecl btowc(long) msvcrt.btowc @ cdecl calloc(long long) msvcrt.calloc @ cdecl ceil(double) msvcrt.ceil +@ cdecl -arch=x86_64 ceilf(float) msvcrt.ceilf @ cdecl clearerr(ptr) msvcrt.clearerr @ stub clearerr_s @ cdecl clock() msvcrt.clock @ cdecl cos(double) msvcrt.cos @ cdecl cosh(double) msvcrt.cosh +@ cdecl -arch=x86_64 cosf(float) msvcrt.cosf +@ cdecl -arch=x86_64 coshf(float) msvcrt.coshf @ cdecl -ret64 div(long long) msvcrt.div @ cdecl exit(long) msvcrt.exit @ cdecl exp(double) msvcrt.exp +@ cdecl -arch=x86_64 expf(float) msvcrt.expf @ cdecl fabs(double) msvcrt.fabs @ cdecl fclose(ptr) msvcrt.fclose @ cdecl feof(ptr) msvcrt.feof @@ -1296,7 +1311,9 @@ @ cdecl fgetwc(ptr) msvcrt.fgetwc @ cdecl fgetws(ptr long ptr) msvcrt.fgetws @ cdecl floor(double) msvcrt.floor +@ cdecl -arch=x86_64 floorf(float) msvcrt.floorf @ cdecl fmod(double double) msvcrt.fmod +@ cdecl -arch=x86_64 fmodf(float float) msvcrt.fmodf @ cdecl fopen(str str) msvcrt.fopen @ cdecl fopen_s(ptr str str) msvcrt.fopen_s @ varargs fprintf(ptr str) msvcrt.fprintf @@ -1361,6 +1378,8 @@ @ cdecl localeconv() msvcrt.localeconv @ cdecl log(double) msvcrt.log @ cdecl log10(double) msvcrt.log10 +@ cdecl -arch=x86_64 log10f(float) msvcrt.log10f +@ cdecl -arch=x86_64 logf(float) msvcrt.logf @ cdecl -arch=i386,x86_64 longjmp(ptr long) msvcrt.longjmp @ cdecl malloc(long) msvcrt.malloc @ cdecl mblen(ptr long) msvcrt.mblen @@ -1379,8 +1398,10 @@ @ cdecl memmove_s(ptr long ptr long) msvcrt.memmove_s @ cdecl memset(ptr long long) msvcrt.memset @ cdecl modf(double ptr) msvcrt.modf +@ cdecl -arch=x86_64 modff(float ptr) msvcrt.modff @ cdecl perror(str) msvcrt.perror @ cdecl pow(double double) msvcrt.pow +@ cdecl -arch=x86_64 powf(float float) msvcrt.powf @ varargs printf(str) msvcrt.printf @ varargs printf_s(str) msvcrt.printf_s @ cdecl putc(long ptr) msvcrt.putc @@ -1400,14 +1421,18 @@ @ varargs scanf(str) msvcrt.scanf @ varargs scanf_s(str) msvcrt.scanf_s @ cdecl setbuf(ptr ptr) msvcrt.setbuf +@ cdecl -arch=x86_64 -norelay -private setjmp(ptr) msvcrt.setjmp @ cdecl setlocale(long str) msvcrt.setlocale @ cdecl setvbuf(ptr str long long) msvcrt.setvbuf @ cdecl signal(long long) msvcrt.signal @ cdecl sin(double) msvcrt.sin @ cdecl sinh(double) msvcrt.sinh +@ cdecl -arch=x86_64 sinf(float) msvcrt.sinf +@ cdecl -arch=x86_64 sinhf(float) msvcrt.sinhf @ varargs sprintf(ptr str) msvcrt.sprintf @ varargs sprintf_s(ptr long str) msvcrt.sprintf_s @ cdecl sqrt(double) msvcrt.sqrt +@ cdecl -arch=x86_64 sqrtf(float) msvcrt.sqrtf @ cdecl srand(long) msvcrt.srand @ varargs sscanf(str str) msvcrt.sscanf @ varargs sscanf_s(str str) msvcrt.sscanf_s @@ -1444,7 +1469,9 @@ @ varargs swscanf_s(wstr wstr) msvcrt.swscanf_s @ cdecl system(str) msvcrt.system @ cdecl tan(double) msvcrt.tan +@ cdecl -arch=x86_64 tanf(float) msvcrt.tanf @ cdecl tanh(double) msvcrt.tanh +@ cdecl -arch=x86_64 tanhf(float) msvcrt.tanhf @ cdecl tmpfile() msvcrt.tmpfile @ stub tmpfile_s @ cdecl tmpnam(ptr) msvcrt.tmpnam diff -Nru wine1.3-1.3.30/dlls/msvcrt/ctype.c wine1.3-1.3.31/dlls/msvcrt/ctype.c --- wine1.3-1.3.30/dlls/msvcrt/ctype.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msvcrt/ctype.c 2011-10-21 18:38:36.000000000 +0000 @@ -51,13 +51,6 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; -/* pctype is used by macros in the Win32 headers. It must point - * To a table of flags exactly like ctype. To allow locale - * changes to affect ctypes (i.e. isleadbyte), we use a second table - * and update its flags whenever the current locale changes. - */ -unsigned short *MSVCRT__pctype = NULL; - /********************************************************************* * __p__pctype (MSVCRT.@) */ diff -Nru wine1.3-1.3.30/dlls/msvcrt/dir.c wine1.3-1.3.31/dlls/msvcrt/dir.c --- wine1.3-1.3.30/dlls/msvcrt/dir.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msvcrt/dir.c 2011-10-21 18:38:36.000000000 +0000 @@ -983,7 +983,7 @@ /****************************************************************** * _splitpath_s (MSVCRT.@) */ -int _splitpath_s(const char* inpath, +int CDECL _splitpath_s(const char* inpath, char* drive, MSVCRT_size_t sz_drive, char* dir, MSVCRT_size_t sz_dir, char* fname, MSVCRT_size_t sz_fname, @@ -1075,7 +1075,7 @@ * * Secure version of _wsplitpath */ -int _wsplitpath_s(const MSVCRT_wchar_t* inpath, +int CDECL _wsplitpath_s(const MSVCRT_wchar_t* inpath, MSVCRT_wchar_t* drive, MSVCRT_size_t sz_drive, MSVCRT_wchar_t* dir, MSVCRT_size_t sz_dir, MSVCRT_wchar_t* fname, MSVCRT_size_t sz_fname, diff -Nru wine1.3-1.3.30/dlls/msvcrt/exit.c wine1.3-1.3.31/dlls/msvcrt/exit.c --- wine1.3-1.3.30/dlls/msvcrt/exit.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msvcrt/exit.c 2011-10-21 18:38:36.000000000 +0000 @@ -83,7 +83,7 @@ if (++len <= 0) return NULL; - tmp = MSVCRT_realloc(*start, len * sizeof(tmp)); + tmp = MSVCRT_realloc(*start, len * sizeof(*tmp)); if (!tmp) return NULL; *start = tmp; diff -Nru wine1.3-1.3.30/dlls/msvcrt/locale.c wine1.3-1.3.31/dlls/msvcrt/locale.c --- wine1.3-1.3.30/dlls/msvcrt/locale.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msvcrt/locale.c 2011-10-21 18:38:36.000000000 +0000 @@ -41,9 +41,11 @@ #define MAX_ELEM_LEN 64 /* Max length of country/language/CP string */ #define MAX_LOCALE_LENGTH 256 MSVCRT__locale_t MSVCRT_locale = NULL; +unsigned short *MSVCRT__pctype = NULL; int MSVCRT___lc_codepage = 0; int MSVCRT___lc_collate_cp = 0; LCID MSVCRT___lc_handle[MSVCRT_LC_MAX - MSVCRT_LC_MIN + 1] = { 0 }; +int MSVCRT___mb_cur_max = 1; static unsigned char charmax = CHAR_MAX; /* MT */ @@ -100,7 +102,7 @@ if (!strcasecmp(_country_synonyms[i],name)) { TRACE(":Mapping synonym %s to %s\n",name,_country_synonyms[i+1]); - memcpy(name, _country_synonyms[i+1], sizeof(_country_synonyms[i+1])); + strcpy(name, _country_synonyms[i+1]); return; } } @@ -209,7 +211,7 @@ extern int atoi(const char *); /* Internal: Find the LCID for a locale specification */ -static LCID MSVCRT_locale_to_LCID(const char *locale) +LCID MSVCRT_locale_to_LCID(const char *locale) { LCID lcid; locale_search_t search; @@ -230,7 +232,7 @@ if(cp) { lstrcpynA(search.search_codepage, cp+1, MAX_ELEM_LEN); - if(cp-region-1 < MAX_ELEM_LEN) + if(region && cp-region-1have_locale) @@ -653,7 +655,7 @@ } /* _create_locale - not exported in native msvcrt */ -MSVCRT__locale_t MSVCRT__create_locale(int category, const char *locale) +MSVCRT__locale_t CDECL MSVCRT__create_locale(int category, const char *locale) { static const char collate[] = "COLLATE="; static const char ctype[] = "CTYPE="; @@ -745,7 +747,6 @@ } memset(loc->locinfo, 0, sizeof(MSVCRT_threadlocinfo)); - memset(loc->mbcinfo, 0, sizeof(MSVCRT_threadmbcinfo)); loc->locinfo->lconv = MSVCRT_malloc(sizeof(struct MSVCRT_lconv)); if(!loc->locinfo->lconv) { @@ -804,6 +805,9 @@ for(i=1; i<257; i++) { buf[0] = i-1; + /* builtin GetStringTypeA doesn't set output to 0 on invalid input */ + loc->locinfo->ctype1[i] = 0; + GetStringTypeA(lcid[MSVCRT_LC_CTYPE], CT_CTYPE1, buf, 1, loc->locinfo->ctype1+i); } @@ -838,18 +842,7 @@ } } - loc->mbcinfo->refcount = 1; - loc->mbcinfo->mbcodepage = loc->locinfo->lc_id[MSVCRT_LC_CTYPE].wCodePage; - - for(i=0; i<256; i++) { - if(loc->locinfo->pclmap[i] != i) { - loc->mbcinfo->mbctype[i+1] |= 0x10; - loc->mbcinfo->mbcasemap[i] = loc->locinfo->pclmap[i]; - } else if(loc->locinfo->pcumap[i] != i) { - loc->mbcinfo->mbctype[i+1] |= 0x20; - loc->mbcinfo->mbcasemap[i] = loc->locinfo->pcumap[i]; - } - } + _setmbcp_l(loc->locinfo->lc_id[MSVCRT_LC_CTYPE].wCodePage, loc->mbcinfo); if(lcid[MSVCRT_LC_MONETARY] && (category==MSVCRT_LC_ALL || category==MSVCRT_LC_MONETARY)) { if(update_threadlocinfo_category(lcid[MSVCRT_LC_MONETARY], loc, MSVCRT_LC_MONETARY)) { @@ -1172,8 +1165,6 @@ swap_pointers((void**)&locinfo->pclmap, (void**)&loc->locinfo->pclmap); swap_pointers((void**)&locinfo->pcumap, (void**)&loc->locinfo->pcumap); - memcpy(get_mbcinfo(), loc->mbcinfo, sizeof(MSVCRT_threadmbcinfo)); - if(category != MSVCRT_LC_ALL) break; /* fall through */ @@ -1323,5 +1314,6 @@ MSVCRT__pctype = MSVCRT_locale->locinfo->pctype; for(i=MSVCRT_LC_MIN; i<=MSVCRT_LC_MAX; i++) MSVCRT___lc_handle[i] = MSVCRT_locale->locinfo->lc_handle[i]; + _setmbcp(_MB_CP_ANSI); return TRUE; } diff -Nru wine1.3-1.3.30/dlls/msvcrt/main.c wine1.3-1.3.31/dlls/msvcrt/main.c --- wine1.3-1.3.30/dlls/msvcrt/main.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msvcrt/main.c 2011-10-21 18:38:36.000000000 +0000 @@ -110,7 +110,6 @@ msvcrt_init_console(); msvcrt_init_args(); msvcrt_init_signals(); - _setmbcp(_MB_CP_LOCALE); /* don't allow unloading msvcrt, we can't setup file handles twice */ LdrAddRefDll( 0, hinstDLL ); TRACE("finished process init\n"); diff -Nru wine1.3-1.3.30/dlls/msvcrt/math.c wine1.3-1.3.31/dlls/msvcrt/math.c --- wine1.3-1.3.30/dlls/msvcrt/math.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msvcrt/math.c 2011-10-21 18:38:36.000000000 +0000 @@ -1351,7 +1351,7 @@ /* handle cases with zero ndigits or less */ prec = ndigits; if( prec < 1) prec = 2; - result = (char*)MSVCRT_malloc(prec + 7); + result = MSVCRT_malloc(prec + 7); if( number < 0) { *sign = TRUE; diff -Nru wine1.3-1.3.30/dlls/msvcrt/mbcs.c wine1.3-1.3.31/dlls/msvcrt/mbcs.c --- wine1.3-1.3.30/dlls/msvcrt/mbcs.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msvcrt/mbcs.c 2011-10-21 18:38:36.000000000 +0000 @@ -23,6 +23,8 @@ * populated correctly and the ismb* functions should reference it. */ +#include + #include "msvcrt.h" #include "wine/unicode.h" #include "wine/debug.h" @@ -30,9 +32,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(msvcrt); unsigned char MSVCRT_mbctype[257] = { 0 }; -static int g_mbcp_is_multibyte = 0; - -int MSVCRT___mb_cur_max = 1; /* It seems that the data about valid trail bytes is not available from kernel32 * so we have to store is here. The format is the same as for lead bytes in CPINFO */ @@ -85,7 +84,7 @@ mbch[1] = ch & 0xff; n_chars = 2; } - if (!MultiByteToWideChar(get_locinfo()->lc_codepage, 0, mbch, n_chars, &chW, 1)) + if (!MultiByteToWideChar(get_mbcinfo()->mbcodepage, 0, mbch, n_chars, &chW, 1)) { WARN("MultiByteToWideChar failed on %x\n", ch); return 0; @@ -158,7 +157,7 @@ */ unsigned char* CDECL __p__mbctype(void) { - return MSVCRT_mbctype; + return get_mbcinfo()->mbctype; } /********************************************************************* @@ -183,22 +182,25 @@ } /********************************************************************* - * _setmbcp (MSVCRT.@) + * INTERNAL: _setmbcp_l */ -int CDECL _setmbcp(int cp) +int _setmbcp_l(int cp, MSVCRT_pthreadmbcinfo mbcinfo) { - MSVCRT_pthreadlocinfo locinfo = get_locinfo(); + const char format[] = ".%d"; + int newcp; CPINFO cpi; BYTE *bytes; WORD chartypes[256]; - WORD *curr_type; char bufA[256]; WCHAR bufW[256]; int charcount; int ret; int i; + if(!mbcinfo) + mbcinfo = get_mbcinfo(); + switch (cp) { case _MB_CP_ANSI: @@ -208,8 +210,10 @@ newcp = GetOEMCP(); break; case _MB_CP_LOCALE: - newcp = locinfo->lc_codepage; - break; + newcp = get_locinfo()->lc_codepage; + if(newcp) + break; + /* fall through (C locale) */ case _MB_CP_SBCS: newcp = 20127; /* ASCII */ break; @@ -218,6 +222,14 @@ break; } + sprintf(bufA, format, newcp); + mbcinfo->mblcid = MSVCRT_locale_to_LCID(bufA); + if(mbcinfo->mblcid == -1) + { + WARN("Can't assign LCID to codepage (%d)\n", mbcinfo->mblcid); + mbcinfo->mblcid = 0; + } + if (!GetCPInfo(newcp, &cpi)) { WARN("Codepage %d not found\n", newcp); @@ -226,13 +238,14 @@ } /* setup the _mbctype */ - memset(MSVCRT_mbctype, 0, sizeof(MSVCRT_mbctype)); + memset(mbcinfo->mbctype, 0, sizeof(unsigned char[257])); + memset(mbcinfo->mbcasemap, 0, sizeof(unsigned char[256])); bytes = cpi.LeadByte; while (bytes[0] || bytes[1]) { for (i = bytes[0]; i <= bytes[1]; i++) - MSVCRT_mbctype[i + 1] |= _M1; + mbcinfo->mbctype[i + 1] |= _M1; bytes += 2; } @@ -241,7 +254,7 @@ /* trail bytes not available through kernel32 but stored in a structure in msvcrt */ struct cp_extra_info_t *cpextra = g_cpextrainfo; - g_mbcp_is_multibyte = 1; + mbcinfo->ismbcodepage = 1; while (TRUE) { if (cpextra->cp == 0 || cpextra->cp == newcp) @@ -253,7 +266,7 @@ while (bytes[0] || bytes[1]) { for (i = bytes[0]; i <= bytes[1]; i++) - MSVCRT_mbctype[i + 1] |= _M2; + mbcinfo->mbctype[i + 1] |= _M2; bytes += 2; } break; @@ -262,13 +275,13 @@ } } else - g_mbcp_is_multibyte = 0; + mbcinfo->ismbcodepage = 0; /* we can't use GetStringTypeA directly because we don't have a locale - only a code page */ charcount = 0; for (i = 0; i < 256; i++) - if (!(MSVCRT_mbctype[i + 1] & _M1)) + if (!(mbcinfo->mbctype[i + 1] & _M1)) bufA[charcount++] = i; ret = MultiByteToWideChar(newcp, 0, bufA, charcount, bufW, charcount); @@ -277,17 +290,38 @@ GetStringTypeW(CT_CTYPE1, bufW, charcount, chartypes); - curr_type = chartypes; + charcount = 0; for (i = 0; i < 256; i++) - if (!(MSVCRT_mbctype[i + 1] & _M1)) + if (!(mbcinfo->mbctype[i + 1] & _M1)) { - if ((*curr_type) & C1_UPPER) - MSVCRT_mbctype[i + 1] |= _SBUP; - if ((*curr_type) & C1_LOWER) - MSVCRT_mbctype[i + 1] |= _SBLOW; - curr_type++; + if (chartypes[charcount] & C1_UPPER) + { + mbcinfo->mbctype[i + 1] |= _SBUP; + bufW[charcount] = tolowerW(bufW[charcount]); + } + else if (chartypes[charcount] & C1_LOWER) + { + mbcinfo->mbctype[i + 1] |= _SBLOW; + bufW[charcount] = toupperW(bufW[charcount]); + } + charcount++; } + ret = WideCharToMultiByte(newcp, 0, bufW, charcount, bufA, charcount, NULL, NULL); + if (ret != charcount) + ERR("WideCharToMultiByte failed for cp %d, ret=%d (exp %d), error=%d\n", newcp, ret, charcount, GetLastError()); + + charcount = 0; + for (i = 0; i < 256; i++) + { + if(!(mbcinfo->mbctype[i + 1] & _M1)) + { + if(mbcinfo->mbctype[i] & (C1_UPPER|C1_LOWER)) + mbcinfo->mbcasemap[i] = bufA[charcount]; + charcount++; + } + } + if (newcp == 932) /* CP932 only - set _MP and _MS */ { /* On Windows it's possible to calculate the _MP and _MS from CT_CTYPE1 @@ -296,24 +330,32 @@ * also faster execution. */ for (i = 161; i <= 165; i++) - MSVCRT_mbctype[i + 1] |= _MP; + mbcinfo->mbctype[i + 1] |= _MP; for (i = 166; i <= 223; i++) - MSVCRT_mbctype[i + 1] |= _MS; + mbcinfo->mbctype[i + 1] |= _MS; } - locinfo->lc_collate_cp = newcp; - locinfo->lc_codepage = newcp; - TRACE("(%d) -> %d\n", cp, locinfo->lc_codepage); + mbcinfo->mbcodepage = newcp; + if(MSVCRT_locale && mbcinfo == MSVCRT_locale->mbcinfo) + memcpy(MSVCRT_mbctype, MSVCRT_locale->mbcinfo->mbctype, sizeof(MSVCRT_mbctype)); + return 0; } /********************************************************************* + * _setmbcp (MSVCRT.@) + */ +int CDECL _setmbcp(int cp) +{ + return _setmbcp_l(cp, NULL); +} + +/********************************************************************* * _getmbcp (MSVCRT.@) */ int CDECL _getmbcp(void) { - /* FIXME: get_mbcinfo()->mbcodepage should be used here */ - return get_locinfo()->lc_codepage; + return get_mbcinfo()->mbcodepage; } /********************************************************************* @@ -331,7 +373,7 @@ */ unsigned int CDECL _mbctolower(unsigned int c) { - if (MSVCRT_isleadbyte(c)) + if (_ismbblead(c)) { FIXME("Handle MBC chars\n"); return c; @@ -344,7 +386,7 @@ */ unsigned int CDECL _mbctoupper(unsigned int c) { - if (MSVCRT_isleadbyte(c)) + if (_ismbblead(c)) { FIXME("Handle MBC chars\n"); return c; @@ -359,7 +401,7 @@ { unsigned int value; - if(get_locinfo()->lc_codepage == 932) + if(get_mbcinfo()->mbcodepage == 932) { if(c >= 0x829f && c <= 0x82f1) /* Hiragana */ return mbctombb_932_kana[c - 0x829f]; @@ -391,7 +433,7 @@ { /* Conversion takes place only when codepage is 932. In all other cases, c is returned unchanged */ - if(get_locinfo()->lc_codepage == 932) + if(get_mbcinfo()->mbcodepage == 932) { if(HIBYTE(c) >= 0x21 && HIBYTE(c) <= 0x7e && LOBYTE(c) >= 0x21 && LOBYTE(c) <= 0x7e) @@ -421,7 +463,7 @@ */ unsigned char* CDECL _mbsdec(const unsigned char* start, const unsigned char* cur) { - if(get_locinfo()->mb_cur_max > 1) + if(get_mbcinfo()->ismbcodepage) return (unsigned char *)(_ismbstrail(start,cur-1) ? cur - 2 : cur -1); return (unsigned char *)cur - 1; /* ASCII CP or SB char */ @@ -507,7 +549,7 @@ unsigned char* ret = dst; if(!n) return dst; - if (g_mbcp_is_multibyte) + if (get_mbcinfo()->ismbcodepage) { while (*src && n) { @@ -559,7 +601,7 @@ if(!n) return 0; - if(g_mbcp_is_multibyte) + if(get_mbcinfo()->ismbcodepage) { int is_lead = 0; while (*src && n) @@ -615,7 +657,7 @@ unsigned char* ret = dst; if(!n) return dst; - if(g_mbcp_is_multibyte) + if(get_mbcinfo()->ismbcodepage) { int is_lead = 0; while (*src && n) @@ -645,7 +687,7 @@ */ int CDECL _mbscmp(const unsigned char* str, const unsigned char* cmp) { - if(get_locinfo()->mb_cur_max > 1) + if(get_mbcinfo()->ismbcodepage) { unsigned int strc, cmpc; do { @@ -670,7 +712,7 @@ */ int CDECL _mbsicoll(const unsigned char* str, const unsigned char* cmp) { - if(get_locinfo()->mb_cur_max > 1) + if(get_mbcinfo()->ismbcodepage) { unsigned int strc, cmpc; do { @@ -698,7 +740,7 @@ */ int CDECL _mbscoll(const unsigned char* str, const unsigned char* cmp) { - if(get_locinfo()->mb_cur_max > 1) + if(get_mbcinfo()->ismbcodepage) { unsigned int strc, cmpc; do { @@ -723,7 +765,7 @@ */ int CDECL _mbsicmp(const unsigned char* str, const unsigned char* cmp) { - if(get_locinfo()->mb_cur_max > 1) + if(get_mbcinfo()->ismbcodepage) { unsigned int strc, cmpc; do { @@ -750,7 +792,7 @@ if(!len) return 0; - if(get_locinfo()->mb_cur_max > 1) + if(get_mbcinfo()->ismbcodepage) { unsigned int strc, cmpc; while(len--) @@ -780,7 +822,7 @@ { if (!len) return 0; - if(get_locinfo()->mb_cur_max > 1) + if(get_mbcinfo()->ismbcodepage) { unsigned int strc, cmpc; while (len) @@ -790,7 +832,7 @@ return *cmp ? -1 : 0; if(!*cmp) return 1; - if (MSVCRT_isleadbyte(*str)) + if (_ismbblead(*str)) { strc=(len>=2)?_mbsnextc(str):0; clen=2; @@ -800,7 +842,7 @@ strc=*str; clen=1; } - if (MSVCRT_isleadbyte(*cmp)) + if (_ismbblead(*cmp)) cmpc=(len>=2)?_mbsnextc(cmp):0; else cmpc=*str; @@ -823,7 +865,7 @@ int CDECL _mbsnicmp(const unsigned char* str, const unsigned char* cmp, MSVCRT_size_t len) { /* FIXME: No tolower() for mb strings yet */ - if(get_locinfo()->mb_cur_max > 1) + if(get_mbcinfo()->ismbcodepage) { unsigned int strc, cmpc; while(len--) @@ -851,7 +893,7 @@ { if (!len) return 0; - if(get_locinfo()->mb_cur_max > 1) + if(get_mbcinfo()->ismbcodepage) { unsigned int strc, cmpc; while (len) @@ -861,7 +903,7 @@ return *cmp ? -1 : 0; if(!*cmp) return 1; - if (MSVCRT_isleadbyte(*str)) + if (_ismbblead(*str)) { strc=(len>=2)?_mbsnextc(str):0; clen=2; @@ -871,7 +913,7 @@ strc=*str; clen=1; } - if (MSVCRT_isleadbyte(*cmp)) + if (_ismbblead(*cmp)) cmpc=(len>=2)?_mbsnextc(cmp):0; else cmpc=*str; @@ -921,7 +963,7 @@ */ unsigned char* CDECL _mbschr(const unsigned char* s, unsigned int x) { - if(get_locinfo()->mb_cur_max > 1) + if(get_mbcinfo()->ismbcodepage) { unsigned int c; while (1) @@ -942,7 +984,7 @@ */ unsigned char* CDECL _mbsrchr(const unsigned char* s, unsigned int x) { - if(get_locinfo()->mb_cur_max > 1) + if(get_mbcinfo()->ismbcodepage) { unsigned int c; unsigned char* match=NULL; @@ -970,7 +1012,7 @@ thread_data_t *data = msvcrt_get_thread_data(); unsigned char *ret; - if(get_locinfo()->mb_cur_max > 1) + if(get_mbcinfo()->ismbcodepage) { unsigned int c; @@ -996,33 +1038,11 @@ } /********************************************************************* - * mbtowc(MSVCRT.@) - */ -int CDECL MSVCRT_mbtowc(MSVCRT_wchar_t *dst, const char* str, MSVCRT_size_t n) -{ - /* temp var needed because MultiByteToWideChar wants non NULL destination */ - MSVCRT_wchar_t tmpdst = '\0'; - - if(n <= 0 || !str) - return 0; - if(!MultiByteToWideChar(CP_ACP, 0, str, n, &tmpdst, 1)) - return -1; - if(dst) - *dst = tmpdst; - /* return the number of bytes from src that have been used */ - if(!*str) - return 0; - if(n >= 2 && MSVCRT_isleadbyte(*str) && str[1]) - return 2; - return 1; -} - -/********************************************************************* * _mbbtombc(MSVCRT.@) */ unsigned int CDECL _mbbtombc(unsigned int c) { - if(get_locinfo()->mb_cur_max > 1 && + if(get_mbcinfo()->ismbcodepage && ((c >= 0x20 && c <=0x7e) ||(c >= 0xa1 && c <= 0xdf))) { /* FIXME: I can't get this function to return anything @@ -1063,7 +1083,7 @@ int CDECL _ismbbkana(unsigned int c) { /* FIXME: use lc_ctype when supported, not lc_all */ - if(get_locinfo()->lc_codepage == 932) + if(get_mbcinfo()->mbcodepage == 932) { /* Japanese/Katakana, CP 932 */ return (c >= 0xa1 && c <= 0xdf); @@ -1173,7 +1193,7 @@ int CDECL _ismbchira(unsigned int c) { /* FIXME: use lc_ctype when supported, not lc_all */ - if(get_locinfo()->lc_codepage == 932) + if(get_mbcinfo()->mbcodepage == 932) { /* Japanese/Hiragana, CP 932 */ return (c >= 0x829f && c <= 0x82f1); @@ -1187,7 +1207,7 @@ int CDECL _ismbckata(unsigned int c) { /* FIXME: use lc_ctype when supported, not lc_all */ - if(get_locinfo()->lc_codepage == 932) + if(get_mbcinfo()->mbcodepage == 932) { if(c < 256) return _ismbbkana(c); @@ -1202,7 +1222,7 @@ */ int CDECL _ismbblead(unsigned int c) { - return (MSVCRT_mbctype[(c&0xff) + 1] & _M1) != 0; + return (get_mbcinfo()->mbctype[(c&0xff) + 1] & _M1) != 0; } @@ -1211,7 +1231,7 @@ */ int CDECL _ismbbtrail(unsigned int c) { - return (MSVCRT_mbctype[(c&0xff) + 1] & _M2) != 0; + return (get_mbcinfo()->mbctype[(c&0xff) + 1] & _M2) != 0; } /********************************************************************* @@ -1229,7 +1249,7 @@ { int lead = 0; - if(!g_mbcp_is_multibyte) + if(!get_mbcinfo()->ismbcodepage) return 0; /* Lead bytes can also be trail bytes so we need to analyse the string @@ -1264,7 +1284,6 @@ { int lead = 0; const unsigned char *end = str + count; - int mbcp = g_mbcp_is_multibyte; /* Lead bytes can also be trail bytes so we need to analyse the string. * Also we must return _MBC_ILLEGAL for chars past the end of the string @@ -1273,7 +1292,7 @@ { if (!*str) return _MBC_ILLEGAL; - lead = mbcp && !lead && _ismbblead(*str); + lead = get_mbcinfo()->ismbcodepage && !lead && _ismbblead(*str); str++; } @@ -1296,7 +1315,7 @@ { unsigned char* ret = str; - if(get_locinfo()->mb_cur_max == 1 || c < 256) + if(!get_mbcinfo()->ismbcodepage || c < 256) return u__strset(str, c); /* ASCII CP or SB char */ c &= 0xffff; /* Strip high bits */ @@ -1322,7 +1341,7 @@ if(!len) return ret; - if(get_locinfo()->mb_cur_max == 1 || c < 256) + if(!get_mbcinfo()->ismbcodepage || c < 256) return u__strnset(str, c, len); /* ASCII CP or SB char */ c &= 0xffff; /* Strip high bits */ @@ -1352,7 +1371,7 @@ if(!len) return ret; - if(get_locinfo()->mb_cur_max == 1 || c < 256) + if(!get_mbcinfo()->ismbcodepage || c < 256) return u__strnset(str, c, len); /* ASCII CP or SB char */ c &= 0xffff; /* Strip high bits */ @@ -1375,12 +1394,12 @@ MSVCRT_size_t CDECL _mbsnccnt(const unsigned char* str, MSVCRT_size_t len) { MSVCRT_size_t ret; - if(get_locinfo()->mb_cur_max > 1) + if(get_mbcinfo()->ismbcodepage) { ret=0; while(*str && len-- > 0) { - if(MSVCRT_isleadbyte(*str)) + if(_ismbblead(*str)) { if (!len) break; @@ -1403,12 +1422,12 @@ MSVCRT_size_t CDECL _mbsnbcnt(const unsigned char* str, MSVCRT_size_t len) { MSVCRT_size_t ret; - if(get_locinfo()->mb_cur_max > 1) + if(get_mbcinfo()->ismbcodepage) { const unsigned char* xstr = str; while(*xstr && len-- > 0) { - if (MSVCRT_isleadbyte(*xstr++)) + if (_ismbblead(*xstr++)) xstr++; } return xstr-str; @@ -1422,11 +1441,11 @@ */ unsigned char* CDECL _mbsnbcat(unsigned char* dst, const unsigned char* src, MSVCRT_size_t len) { - if(get_locinfo()->mb_cur_max > 1) + if(get_mbcinfo()->ismbcodepage) { unsigned char *res = dst; while (*dst) { - if (MSVCRT_isleadbyte(*dst++)) { + if (_ismbblead(*dst++)) { if (*dst) { dst++; } else { @@ -1473,7 +1492,7 @@ /* If necessary, check that the character preceding the null terminator is * a lead byte and move the pointer back by one for later overwrite. */ - if (ptr != dst && get_locinfo()->mb_cur_max > 1 && MSVCRT_isleadbyte(*(ptr - 1))) + if (ptr != dst && get_mbcinfo()->ismbcodepage && _ismbblead(*(ptr - 1))) size++, ptr--; for (i = 0; *src && i < len; i++) @@ -1498,18 +1517,18 @@ */ unsigned char* CDECL _mbsncat(unsigned char* dst, const unsigned char* src, MSVCRT_size_t len) { - if(get_locinfo()->mb_cur_max > 1) + if(get_mbcinfo()->ismbcodepage) { unsigned char *res = dst; while (*dst) { - if (MSVCRT_isleadbyte(*dst++)) + if (_ismbblead(*dst++)) dst++; } while (*src && len--) { *dst++ = *src; - if(MSVCRT_isleadbyte(*src++)) + if(_ismbblead(*src++)) *dst++ = *src++; } *dst = '\0'; @@ -1527,7 +1546,7 @@ unsigned char *ret = s; if (!s) return NULL; - if (get_locinfo()->mb_cur_max > 1) + if (get_mbcinfo()->ismbcodepage) { unsigned int c; while (*s) @@ -1561,7 +1580,7 @@ *MSVCRT__errno() = MSVCRT_EINVAL; return MSVCRT_EINVAL; } - if (get_locinfo()->mb_cur_max > 1) + if (get_mbcinfo()->ismbcodepage) { unsigned int c; for ( ; *s && len > 0; len--) @@ -1595,7 +1614,7 @@ unsigned char *ret = s; if (!s) return NULL; - if (get_locinfo()->mb_cur_max > 1) + if (get_mbcinfo()->ismbcodepage) { unsigned int c; while (*s) @@ -1629,7 +1648,7 @@ *MSVCRT__errno() = MSVCRT_EINVAL; return MSVCRT_EINVAL; } - if (get_locinfo()->mb_cur_max > 1) + if (get_mbcinfo()->ismbcodepage) { unsigned int c; for ( ; *s && len > 0; len--) @@ -1664,7 +1683,7 @@ for (p = string; *p; p++) { - if (MSVCRT_isleadbyte(*p)) + if (_ismbblead(*p)) { for (q = set; *q; q++) { @@ -1696,7 +1715,7 @@ for (p = string; *p; p++) { - if (MSVCRT_isleadbyte(*p)) + if (_ismbblead(*p)) { for (q = set; *q; q++) { @@ -1726,7 +1745,7 @@ */ MSVCRT_size_t CDECL _mbscspn(const unsigned char* str, const unsigned char* cmp) { - if (get_locinfo()->mb_cur_max > 1) + if (get_mbcinfo()->ismbcodepage) FIXME("don't handle double character case\n"); return u_strcspn(str, cmp); } @@ -1746,7 +1765,7 @@ p=str; for(i=0; i=0; i--) { - if(MSVCRT_isleadbyte(temp[i*2])) + if(_ismbblead(temp[i*2])) { *p++=temp[i*2]; *p++=temp[i*2+1]; @@ -1787,13 +1806,13 @@ while(*str) { - for(p = accept; *p; p += (MSVCRT_isleadbyte(*p)?2:1) ) + for(p = accept; *p; p += (_ismbblead(*p)?2:1) ) { if (*p == *str) - if( !MSVCRT_isleadbyte(*p) || ( *(p+1) == *(str+1) ) ) + if( !_ismbblead(*p) || ( *(p+1) == *(str+1) ) ) return (unsigned char*)str; } - str += (MSVCRT_isleadbyte(*str)?2:1); + str += (_ismbblead(*str)?2:1); } return NULL; } @@ -1857,6 +1876,41 @@ } /********************************************************************* + * _mbtowc_l(MSVCRT.@) + */ +int CDECL MSVCRT_mbtowc_l(MSVCRT_wchar_t *dst, const char* str, MSVCRT_size_t n, MSVCRT__locale_t locale) +{ + MSVCRT_pthreadlocinfo locinfo; + MSVCRT_wchar_t tmpdst = '\0'; + + if(!locale) + locinfo = get_locinfo(); + else + locinfo = locale->locinfo; + + if(n <= 0 || !str) + return 0; + if(!MultiByteToWideChar(locinfo->lc_codepage, 0, str, n, &tmpdst, 1)) + return -1; + if(dst) + *dst = tmpdst; + /* return the number of bytes from src that have been used */ + if(!*str) + return 0; + if(n >= 2 && MSVCRT__isleadbyte_l(*str, locale) && str[1]) + return 2; + return 1; +} + +/********************************************************************* + * mbtowc(MSVCRT.@) + */ +int CDECL MSVCRT_mbtowc(MSVCRT_wchar_t *dst, const char* str, MSVCRT_size_t n) +{ + return MSVCRT_mbtowc_l(dst, str, n, NULL); +} + +/********************************************************************* * _mbstowcs_l(MSVCRT.@) */ MSVCRT_size_t CDECL MSVCRT__mbstowcs_l(MSVCRT_wchar_t *wcstr, const char *mbstr, diff -Nru wine1.3-1.3.30/dlls/msvcrt/msvcrt.h wine1.3-1.3.31/dlls/msvcrt/msvcrt.h --- wine1.3-1.3.30/dlls/msvcrt/msvcrt.h 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msvcrt/msvcrt.h 2011-10-21 18:38:36.000000000 +0000 @@ -140,8 +140,8 @@ int ismbcodepage; int mblcid; unsigned short mbulinfo[6]; - char mbctype[257]; - char mbcasemap[256]; + unsigned char mbctype[257]; + unsigned char mbcasemap[256]; } MSVCRT_threadmbcinfo; typedef struct MSVCRT_threadlocaleinfostruct *MSVCRT_pthreadlocinfo; @@ -197,11 +197,11 @@ extern thread_data_t *msvcrt_get_thread_data(void); +LCID MSVCRT_locale_to_LCID(const char *); +extern MSVCRT__locale_t MSVCRT_locale; extern int MSVCRT___lc_codepage; extern int MSVCRT___lc_collate_cp; -extern int MSVCRT___mb_cur_max; extern WORD MSVCRT__ctype [257]; -extern unsigned short *MSVCRT__pctype; void msvcrt_set_errno(int); @@ -850,6 +850,7 @@ int __cdecl MSVCRT_iswspace(MSVCRT_wint_t); int __cdecl MSVCRT_iswdigit(MSVCRT_wint_t); int __cdecl MSVCRT_isleadbyte(int); +int __cdecl MSVCRT__isleadbyte_l(int, MSVCRT__locale_t); void __cdecl MSVCRT__lock_file(MSVCRT_FILE*); void __cdecl MSVCRT__unlock_file(MSVCRT_FILE*); @@ -883,9 +884,11 @@ extern MSVCRT__locale_t MSVCRT_locale; MSVCRT_pthreadlocinfo get_locinfo(void); +MSVCRT_pthreadmbcinfo get_mbcinfo(void); void __cdecl MSVCRT__free_locale(MSVCRT__locale_t); void free_locinfo(MSVCRT_pthreadlocinfo); void free_mbcinfo(MSVCRT_pthreadmbcinfo); +int _setmbcp_l(int, MSVCRT_pthreadmbcinfo); #ifndef __WINE_MSVCRT_TEST int __cdecl MSVCRT__write(int,const void*,unsigned int); diff -Nru wine1.3-1.3.30/dlls/msvcrt/msvcrt.spec wine1.3-1.3.31/dlls/msvcrt/msvcrt.spec --- wine1.3-1.3.30/dlls/msvcrt/msvcrt.spec 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msvcrt/msvcrt.spec 2011-10-21 18:38:36.000000000 +0000 @@ -792,7 +792,7 @@ # stub _mbsupr_l(str ptr) @ cdecl _mbsupr_s(str long) # stub _mbsupr_s_l(str long ptr) -# stub _mbtowc_l(ptr str long ptr) +@ cdecl _mbtowc_l(ptr str long ptr) MSVCRT_mbtowc_l @ cdecl _memccpy(ptr ptr long long) ntdll._memccpy @ cdecl _memicmp(str str long) ntdll._memicmp # stub _memicmp_l(str str long ptr) diff -Nru wine1.3-1.3.30/dlls/msvcrt/tests/string.c wine1.3-1.3.31/dlls/msvcrt/tests/string.c --- wine1.3-1.3.30/dlls/msvcrt/tests/string.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/msvcrt/tests/string.c 2011-10-21 18:38:36.000000000 +0000 @@ -1993,8 +1993,7 @@ _setmbcp(1250); ret = p_wctob(0x81); - /* wctob should not be affected by _setmbcp */ - todo_wine ok(ret == EOF, "ret = %x\n", ret); + ok(ret == EOF, "ret = %x\n", ret); setlocale(LC_ALL, "C"); ret = p_wctob(0x8141); diff -Nru wine1.3-1.3.30/dlls/ntdll/actctx.c wine1.3-1.3.31/dlls/ntdll/actctx.c --- wine1.3-1.3.30/dlls/ntdll/actctx.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ntdll/actctx.c 2011-10-21 18:38:36.000000000 +0000 @@ -1823,7 +1823,7 @@ static const WCHAR lookup_fmtW[] = {'%','s','_','%','s','_','%','s','_','%','u','.','%','u','.','*','.','*','_', '%','s','_','*','.','m','a','n','i','f','e','s','t',0}; - static const WCHAR wine_trailerW[] = {'d','e','a','d','b','e','e','f','.','m','a','n','i','f','e','s','t',0}; + static const WCHAR wine_trailerW[] = {'d','e','a','d','b','e','e','f','.','m','a','n','i','f','e','s','t'}; WCHAR *lookup, *ret = NULL; UNICODE_STRING lookup_us; @@ -1869,7 +1869,7 @@ if (dir_info->NextEntryOffset) data_pos += dir_info->NextEntryOffset; else data_pos = data_len; - tmp = (WCHAR *)dir_info->FileName + (strchrW(lookup, '*') - lookup); + tmp = dir_info->FileName + (strchrW(lookup, '*') - lookup); build = atoiW(tmp); if (build < min_build) continue; tmp = strchrW(tmp, '.') + 1; @@ -1877,7 +1877,8 @@ if (build == min_build && revision < min_revision) continue; tmp = strchrW(tmp, '_') + 1; tmp = strchrW(tmp, '_') + 1; - if (!strcmpiW( tmp, wine_trailerW )) + if (dir_info->FileNameLength - (tmp - dir_info->FileName) * sizeof(WCHAR) == sizeof(wine_trailerW) && + !memicmpW( tmp, wine_trailerW, sizeof(wine_trailerW) / sizeof(WCHAR) )) { /* prefer a non-Wine manifest if we already have one */ /* we'll still load the builtin dll if specified through DllOverrides */ diff -Nru wine1.3-1.3.30/dlls/ntdll/directory.c wine1.3-1.3.31/dlls/ntdll/directory.c --- wine1.3-1.3.30/dlls/ntdll/directory.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ntdll/directory.c 2011-10-21 18:38:36.000000000 +0000 @@ -2134,43 +2134,43 @@ int fd = open( unix_name, O_RDONLY | O_DIRECTORY ); if (fd != -1) { - KERNEL_DIRENT *de; + KERNEL_DIRENT *kde; RtlEnterCriticalSection( &dir_section ); - if ((de = start_vfat_ioctl( fd ))) + if ((kde = start_vfat_ioctl( fd ))) { unix_name[pos - 1] = '/'; - while (de[0].d_reclen) + while (kde[0].d_reclen) { /* make sure names are null-terminated to work around an x86-64 kernel bug */ - size_t len = min(de[0].d_reclen, sizeof(de[0].d_name) - 1 ); - de[0].d_name[len] = 0; - len = min(de[1].d_reclen, sizeof(de[1].d_name) - 1 ); - de[1].d_name[len] = 0; + size_t len = min(kde[0].d_reclen, sizeof(kde[0].d_name) - 1 ); + kde[0].d_name[len] = 0; + len = min(kde[1].d_reclen, sizeof(kde[1].d_name) - 1 ); + kde[1].d_name[len] = 0; - if (de[1].d_name[0]) + if (kde[1].d_name[0]) { - ret = ntdll_umbstowcs( 0, de[1].d_name, strlen(de[1].d_name), + ret = ntdll_umbstowcs( 0, kde[1].d_name, strlen(kde[1].d_name), buffer, MAX_DIR_ENTRY_LEN ); if (ret == length && !memicmpW( buffer, name, length)) { - strcpy( unix_name + pos, de[1].d_name ); + strcpy( unix_name + pos, kde[1].d_name ); RtlLeaveCriticalSection( &dir_section ); close( fd ); goto success; } } - ret = ntdll_umbstowcs( 0, de[0].d_name, strlen(de[0].d_name), + ret = ntdll_umbstowcs( 0, kde[0].d_name, strlen(kde[0].d_name), buffer, MAX_DIR_ENTRY_LEN ); if (ret == length && !memicmpW( buffer, name, length)) { strcpy( unix_name + pos, - de[1].d_name[0] ? de[1].d_name : de[0].d_name ); + kde[1].d_name[0] ? kde[1].d_name : kde[0].d_name ); RtlLeaveCriticalSection( &dir_section ); close( fd ); goto success; } - if (ioctl( fd, VFAT_IOCTL_READDIR_BOTH, (long)de ) == -1) + if (ioctl( fd, VFAT_IOCTL_READDIR_BOTH, (long)kde ) == -1) { RtlLeaveCriticalSection( &dir_section ); close( fd ); diff -Nru wine1.3-1.3.30/dlls/ntdll/heap.c wine1.3-1.3.31/dlls/ntdll/heap.c --- wine1.3-1.3.30/dlls/ntdll/heap.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ntdll/heap.c 2011-10-21 18:38:36.000000000 +0000 @@ -655,8 +655,9 @@ if (((char *)pFree == (char *)subheap->base + subheap->headerSize) && (subheap != &subheap->heap->subheap)) { - SIZE_T size = 0; void *addr = subheap->base; + + size = 0; /* Remove the free block from the list */ list_remove( &pFree->entry ); /* Remove the subheap from the list */ diff -Nru wine1.3-1.3.30/dlls/ntdll/nt.c wine1.3-1.3.31/dlls/ntdll/nt.c --- wine1.3-1.3.30/dlls/ntdll/nt.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ntdll/nt.c 2011-10-21 18:38:36.000000000 +0000 @@ -348,7 +348,7 @@ groups->GroupCount = tg->count; memcpy( sids, (char *)buffer + non_sid_portion, - reply->user_len - non_sid_portion - FIELD_OFFSET( TOKEN_GROUPS, Groups[tg->count] )); + reply->user_len - FIELD_OFFSET( TOKEN_GROUPS, Groups[tg->count] )); for (i = 0; i < tg->count; i++) { @@ -1280,6 +1280,7 @@ if (strstr(buffer, "SSE2")) user_shared_data->ProcessorFeatures[PF_XMMI64_INSTRUCTIONS_AVAILABLE] = TRUE; if (strstr(buffer, "SSE3")) user_shared_data->ProcessorFeatures[PF_SSE3_INSTRUCTIONS_AVAILABLE] = TRUE; if (strstr(buffer, "PAE")) user_shared_data->ProcessorFeatures[PF_PAE_ENABLED] = TRUE; + if (strstr(buffer, "HTT")) cached_sci.FeatureSet |= CPU_FEATURE_HTT; } break; /* CPU_TYPE_I386 */ default: break; diff -Nru wine1.3-1.3.30/dlls/ntdll/ntdll_misc.h wine1.3-1.3.31/dlls/ntdll/ntdll_misc.h --- wine1.3-1.3.30/dlls/ntdll/ntdll_misc.h 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ntdll/ntdll_misc.h 2011-10-21 18:38:36.000000000 +0000 @@ -224,6 +224,10 @@ int wait_fd[2]; /* 1ec/300 fd for sleeping server requests */ BOOL wow64_redir; /* 1f4/308 Wow64 filesystem redirection flag */ pthread_t pthread_id; /* 1f8/310 pthread thread id */ +#ifdef __i386__ + WINE_VM86_TEB_INFO vm86; /* 1fc vm86 private data */ + void *exit_frame; /* 204 exit frame pointer */ +#endif }; static inline struct ntdll_thread_data *ntdll_get_thread_data(void) diff -Nru wine1.3-1.3.30/dlls/ntdll/relay.c wine1.3-1.3.31/dlls/ntdll/relay.c --- wine1.3-1.3.30/dlls/ntdll/relay.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ntdll/relay.c 2011-10-21 18:38:36.000000000 +0000 @@ -119,15 +119,15 @@ (count+1) * sizeof(WCHAR*) + (strlenW(buffer)+1) * sizeof(WCHAR) ))) { WCHAR *str = (WCHAR *)(ret + count + 1); - WCHAR *p = str; + WCHAR *q = str; strcpyW( str, buffer ); count = 0; for (;;) { - ret[count++] = p; - if (!(p = strchrW( p, ';' ))) break; - *p++ = 0; + ret[count++] = q; + if (!(q = strchrW( q, ';' ))) break; + *q++ = 0; } ret[count++] = NULL; } diff -Nru wine1.3-1.3.30/dlls/ntdll/serial.c wine1.3-1.3.31/dlls/ntdll/serial.c --- wine1.3-1.3.30/dlls/ntdll/serial.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ntdll/serial.c 2011-10-21 18:38:36.000000000 +0000 @@ -785,6 +785,7 @@ typedef struct serial_irq_info { int rx , tx, frame, overrun, parity, brk, buf_overrun; + DWORD temt; }serial_irq_info; /*********************************************************************** @@ -806,7 +807,6 @@ */ static NTSTATUS get_irq_info(int fd, serial_irq_info *irq_info) { - NTSTATUS status = STATUS_NOT_IMPLEMENTED; #ifdef TIOCGICOUNT struct serial_icounter_struct einfo; if (!ioctl(fd, TIOCGICOUNT, &einfo)) @@ -818,13 +818,38 @@ irq_info->parity = einfo.parity; irq_info->brk = einfo.brk; irq_info->buf_overrun = einfo.buf_overrun; - return STATUS_SUCCESS; } - TRACE("TIOCGICOUNT err %s\n", strerror(errno)); - status = FILE_GetNtStatus(); -#endif + else + { + TRACE("TIOCGICOUNT err %s\n", strerror(errno)); + memset(irq_info,0, sizeof(serial_irq_info)); + return FILE_GetNtStatus(); + } +#else memset(irq_info,0, sizeof(serial_irq_info)); - return status; + return STATUS_NOT_IMPLEMENTED; +#endif + irq_info->temt = 0; + /* Generate a single TX_TXEMPTY event when the TX Buffer turns empty*/ +#ifdef TIOCSERGETLSR /* prefer to log the state TIOCSERGETLSR */ + if (ioctl(fd, TIOCSERGETLSR, &irq_info->temt)) + { + TRACE("TIOCSERGETLSR err %s\n", strerror(errno)); + return FILE_GetNtStatus(); + } +#elif defined(TIOCOUTQ) /* otherwise we log when the out queue gets empty */ + if (ioctl(fd, TIOCOUTQ, &irq_info->temt)) + { + TRACE("TIOCOUTQ err %s\n", strerror(errno)); + return FILE_GetNtStatus(); + } + else + { + if (irq_info->temt == 0) + irq_info->temt = 1; + } +#endif + return STATUS_SUCCESS; } @@ -862,21 +887,8 @@ } if (mask & EV_TXEMPTY) { - queue = 0; -/* We really want to know when all characters have gone out of the transmitter */ -#if defined(TIOCSERGETLSR) - if (ioctl(fd, TIOCSERGETLSR, &queue)) - WARN("TIOCSERGETLSR returned error\n"); - if (queue) -/* TIOCOUTQ only checks for an empty buffer */ -#elif defined(TIOCOUTQ) - if (ioctl(fd, TIOCOUTQ, &queue)) - WARN("TIOCOUTQ returned error\n"); - if (!queue) -#endif - ret |= EV_TXEMPTY; - TRACE("OUTQUEUE %d, Transmitter %sempty\n", - queue, (ret & EV_TXEMPTY) ? "" : "not "); + if (!old->temt && new->temt) + ret |= EV_TXEMPTY; } return ret & mask; } diff -Nru wine1.3-1.3.30/dlls/ntdll/signal_i386.c wine1.3-1.3.31/dlls/ntdll/signal_i386.c --- wine1.3-1.3.30/dlls/ntdll/signal_i386.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ntdll/signal_i386.c 2011-10-21 18:38:36.000000000 +0000 @@ -2473,9 +2473,41 @@ } +extern void DECLSPEC_NORETURN call_thread_entry_point( LPTHREAD_START_ROUTINE entry, void *arg ); +__ASM_GLOBAL_FUNC( call_thread_entry_point, + "pushl %ebp\n\t" + __ASM_CFI(".cfi_adjust_cfa_offset 4\n\t") + __ASM_CFI(".cfi_rel_offset %ebp,0\n\t") + "movl %esp,%ebp\n\t" + __ASM_CFI(".cfi_def_cfa_register %ebp\n\t") + "pushl %ebx\n\t" + __ASM_CFI(".cfi_rel_offset %ebx,-4\n\t") + "pushl %esi\n\t" + __ASM_CFI(".cfi_rel_offset %esi,-8\n\t") + "pushl %edi\n\t" + __ASM_CFI(".cfi_rel_offset %edi,-12\n\t") + "pushl %ebp\n\t" + "pushl 12(%ebp)\n\t" + "pushl 8(%ebp)\n\t" + "call " __ASM_NAME("call_thread_func") ); + +extern void DECLSPEC_NORETURN call_thread_exit_func( int status, void (*func)(int), void *frame ); +__ASM_GLOBAL_FUNC( call_thread_exit_func, + "movl 4(%esp),%eax\n\t" + "movl 8(%esp),%ecx\n\t" + "movl 12(%esp),%ebp\n\t" + __ASM_CFI(".cfi_def_cfa %ebp,4\n\t") + __ASM_CFI(".cfi_rel_offset %ebp,0\n\t") + __ASM_CFI(".cfi_rel_offset %ebx,-4\n\t") + __ASM_CFI(".cfi_rel_offset %esi,-8\n\t") + __ASM_CFI(".cfi_rel_offset %edi,-12\n\t") + "leal -20(%ebp),%esp\n\t" + "pushl %eax\n\t" + "call *%ecx" ); + /* wrapper for apps that don't declare the thread function correctly */ -extern void DECLSPEC_NORETURN call_thread_func( LPTHREAD_START_ROUTINE entry, void *arg ); -__ASM_GLOBAL_FUNC(call_thread_func, +extern void DECLSPEC_NORETURN call_thread_func_wrapper( LPTHREAD_START_ROUTINE entry, void *arg ); +__ASM_GLOBAL_FUNC(call_thread_func_wrapper, "pushl %ebp\n\t" __ASM_CFI(".cfi_adjust_cfa_offset 4\n\t") __ASM_CFI(".cfi_rel_offset %ebp,0\n\t") @@ -2490,13 +2522,14 @@ "int $3" ) /*********************************************************************** - * call_thread_entry_point + * call_thread_func */ -void call_thread_entry_point( LPTHREAD_START_ROUTINE entry, void *arg ) +void call_thread_func( LPTHREAD_START_ROUTINE entry, void *arg, void *frame ) { + ntdll_get_thread_data()->exit_frame = frame; __TRY { - call_thread_func( entry, arg ); + call_thread_func_wrapper( entry, arg ); } __EXCEPT(unhandled_exception_filter) { @@ -2511,7 +2544,8 @@ */ void WINAPI RtlExitUserThread( ULONG status ) { - exit_thread( status ); + if (!ntdll_get_thread_data()->exit_frame) exit_thread( status ); + call_thread_exit_func( status, exit_thread, ntdll_get_thread_data()->exit_frame ); } /*********************************************************************** @@ -2519,7 +2553,8 @@ */ void abort_thread( int status ) { - terminate_thread( status ); + if (!ntdll_get_thread_data()->exit_frame) terminate_thread( status ); + call_thread_exit_func( status, terminate_thread, ntdll_get_thread_data()->exit_frame ); } /********************************************************************** diff -Nru wine1.3-1.3.30/dlls/ntdll/tests/atom.c wine1.3-1.3.31/dlls/ntdll/tests/atom.c --- wine1.3-1.3.30/dlls/ntdll/tests/atom.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ntdll/tests/atom.c 2011-10-21 18:38:36.000000000 +0000 @@ -443,7 +443,7 @@ ok(!res, "Added atom (%x)\n", res); - memset(abi->Name, 0xcc, 255 * sizeof(WCHAR)); + memset( ptr, 0xcc, sizeof(ptr) ); res = pNtQueryInformationAtom( atom, AtomBasicInformation, (void*)ptr, ptr_size, NULL ); ok(!res, "atom lookup\n"); ok(!lstrcmpW(abi->Name, testAtom1), "ok strings\n"); @@ -457,7 +457,7 @@ ok(abi->NameLength == lstrlenW(testAtom1) * sizeof(WCHAR) || broken(abi->NameLength == sizeof(WCHAR)), /* nt4 */ "string length %u\n",abi->NameLength); - memset(abi->Name, 0xcc, lstrlenW(testAtom1) * sizeof(WCHAR)); + memset( ptr, 0xcc, sizeof(ptr) ); ptr_size = sizeof(ATOM_BASIC_INFORMATION) + lstrlenW(testAtom1) * sizeof(WCHAR); res = pNtQueryInformationAtom( atom, AtomBasicInformation, (void*)ptr, ptr_size, NULL ); ok(!res, "atom lookup %x\n", res); @@ -466,8 +466,8 @@ ok(abi->Name[lstrlenW(testAtom1)] == 0, "buffer overwrite %x\n", abi->Name[lstrlenW(testAtom1)]); ok(abi->Name[lstrlenW(testAtom1) + 1] == 0xcccc, "buffer overwrite %x\n", abi->Name[lstrlenW(testAtom1) + 1]); + memset( ptr, 0xcc, sizeof(ptr) ); ptr_size = sizeof(ATOM_BASIC_INFORMATION) + 4 * sizeof(WCHAR); - abi->Name[0] = abi->Name[1] = abi->Name[2] = abi->Name[3] = '\0'; res = pNtQueryInformationAtom( atom, AtomBasicInformation, (void*)ptr, ptr_size, NULL ); ok(!res, "couldn't find atom\n"); ok(abi->NameLength == 8, "wrong string length %u\n", abi->NameLength); diff -Nru wine1.3-1.3.30/dlls/ntdll/tests/pipe.c wine1.3-1.3.31/dlls/ntdll/tests/pipe.c --- wine1.3-1.3.30/dlls/ntdll/tests/pipe.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ntdll/tests/pipe.c 2011-10-21 18:38:36.000000000 +0000 @@ -147,6 +147,20 @@ timeout.QuadPart = -100000000000ll; +/* create a pipe with FILE_OVERWRITE */ + res = pNtCreateNamedPipeFile(&handle, FILE_READ_ATTRIBUTES | SYNCHRONIZE, &attr, &iosb, FILE_SHARE_READ, 4 /*FILE_OVERWRITE*/, + 0, 1, 0, 0, 0xFFFFFFFF, 500, 500, &timeout); + todo_wine ok(res == STATUS_INVALID_PARAMETER, "NtCreateNamedPipeFile returned %x\n", res); + if (!res) + CloseHandle(handle); + +/* create a pipe with FILE_OVERWRITE_IF */ + res = pNtCreateNamedPipeFile(&handle, FILE_READ_ATTRIBUTES | SYNCHRONIZE, &attr, &iosb, FILE_SHARE_READ, 5 /*FILE_OVERWRITE_IF*/, + 0, 1, 0, 0, 0xFFFFFFFF, 500, 500, &timeout); + todo_wine ok(res == STATUS_INVALID_PARAMETER, "NtCreateNamedPipeFile returned %x\n", res); + if (!res) + CloseHandle(handle); + /* create a pipe with sharing = 0 */ res = pNtCreateNamedPipeFile(&handle, FILE_READ_ATTRIBUTES | SYNCHRONIZE, &attr, &iosb, 0, 2 /*FILE_CREATE*/, 0, 1, 0, 0, 0xFFFFFFFF, 500, 500, &timeout); diff -Nru wine1.3-1.3.30/dlls/ntdll/tests/string.c wine1.3-1.3.31/dlls/ntdll/tests/string.c --- wine1.3-1.3.30/dlls/ntdll/tests/string.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ntdll/tests/string.c 2011-10-21 18:38:36.000000000 +0000 @@ -1165,7 +1165,7 @@ ok(p_wcsupr((LPWSTR)constemptyW) == constemptyW, "p_wcsupr returned different string\n"); } -static __cdecl int intcomparefunc(const void *a, const void *b) +static int __cdecl intcomparefunc(const void *a, const void *b) { const int *p = a, *q = b; @@ -1174,7 +1174,7 @@ return *p - *q; } -static __cdecl int charcomparefunc(const void *a, const void *b) +static int __cdecl charcomparefunc(const void *a, const void *b) { const char *p = a, *q = b; @@ -1183,7 +1183,7 @@ return *p - *q; } -static __cdecl int strcomparefunc(const void *a, const void *b) +static int __cdecl strcomparefunc(const void *a, const void *b) { const char * const *p = a; const char * const *q = b; diff -Nru wine1.3-1.3.30/dlls/ntdll/time.c wine1.3-1.3.31/dlls/ntdll/time.c --- wine1.3-1.3.30/dlls/ntdll/time.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ntdll/time.c 2011-10-21 18:38:36.000000000 +0000 @@ -728,18 +728,20 @@ static int init_tz_info(RTL_TIME_ZONE_INFORMATION *tzi) { static RTL_TIME_ZONE_INFORMATION cached_tzi; - static int current_year = -1; + static int current_year = -1, current_bias = 65535; struct tm *tm; time_t year_start, year_end, tmp, dlt = 0, std = 0; - int is_dst, current_is_dst; + int is_dst, current_is_dst, bias; RtlEnterCriticalSection( &TIME_tz_section ); year_start = time(NULL); - tm = localtime(&year_start); + tm = gmtime(&year_start); + bias = (LONG)(mktime(tm) - year_start) / 60; + tm = localtime(&year_start); current_is_dst = tm->tm_isdst; - if (current_year == tm->tm_year) + if (current_year == tm->tm_year && current_bias == bias) { *tzi = cached_tzi; RtlLeaveCriticalSection( &TIME_tz_section ); @@ -748,8 +750,11 @@ memset(tzi, 0, sizeof(*tzi)); - TRACE("tz data will be valid through year %d\n", tm->tm_year + 1900); + TRACE("tz data will be valid through year %d, bias %d\n", tm->tm_year + 1900, bias); current_year = tm->tm_year; + current_bias = bias; + + tzi->Bias = bias; tm->tm_isdst = 0; tm->tm_mday = 1; @@ -764,10 +769,6 @@ year_end = mktime(tm); TRACE("year_end: %s", ctime(&year_end)); - tm = gmtime(&year_start); - tzi->Bias = (LONG)(mktime(tm) - year_start) / 60; - TRACE("bias: %d\n", tzi->Bias); - tmp = find_dst_change(year_start, year_end, &is_dst); if (is_dst) dlt = tmp; diff -Nru wine1.3-1.3.30/dlls/ntdll/version.c wine1.3-1.3.31/dlls/ntdll/version.c --- wine1.3-1.3.30/dlls/ntdll/version.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ntdll/version.c 2011-10-21 18:38:36.000000000 +0000 @@ -147,8 +147,8 @@ }, /* WIN2K8 */ { - sizeof(RTL_OSVERSIONINFOEXW), 6, 0, 0x1771, VER_PLATFORM_WIN32_NT, - {'S','e','r','v','i','c','e',' ','P','a','c','k',' ','1',0}, + sizeof(RTL_OSVERSIONINFOEXW), 6, 0, 0x1772, VER_PLATFORM_WIN32_NT, + {'S','e','r','v','i','c','e',' ','P','a','c','k',' ','2',0}, 0, 0, VER_SUITE_SINGLEUSERTS, VER_NT_SERVER, 0 }, /* WIN7 */ @@ -157,7 +157,7 @@ {'S','e','r','v','i','c','e',' ','P','a','c','k',' ','1',0}, 1, 0, VER_SUITE_SINGLEUSERTS, VER_NT_WORKSTATION, 0 }, - /* WIN2K8 */ + /* WIN2K8R2 */ { sizeof(RTL_OSVERSIONINFOEXW), 6, 1, 0x1DB1, VER_PLATFORM_WIN32_NT, {'S','e','r','v','i','c','e',' ','P','a','c','k',' ','1',0}, diff -Nru wine1.3-1.3.30/dlls/ntdll/virtual.c wine1.3-1.3.31/dlls/ntdll/virtual.c --- wine1.3-1.3.30/dlls/ntdll/virtual.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ntdll/virtual.c 2011-10-21 18:38:36.000000000 +0000 @@ -187,9 +187,9 @@ if ((vprot & VPROT_COMMITTED) && !(vprot & VPROT_GUARD)) { if (vprot & VPROT_READ) prot |= PROT_READ; - if (vprot & VPROT_WRITE) prot |= PROT_WRITE; - if (vprot & VPROT_WRITECOPY) prot |= PROT_WRITE; - if (vprot & VPROT_EXEC) prot |= PROT_EXEC; + if (vprot & VPROT_WRITE) prot |= PROT_WRITE | PROT_READ; + if (vprot & VPROT_WRITECOPY) prot |= PROT_WRITE | PROT_READ; + if (vprot & VPROT_EXEC) prot |= PROT_EXEC | PROT_READ; if (vprot & VPROT_WRITEWATCH) prot &= ~PROT_WRITE; } if (!prot) prot = PROT_NONE; @@ -1345,9 +1345,9 @@ if (sec->Characteristics & IMAGE_SCN_MEM_WRITE) { if (sec->Characteristics & IMAGE_SCN_CNT_UNINITIALIZED_DATA) - vprot |= VPROT_READ | VPROT_WRITE; + vprot |= VPROT_WRITE; else - vprot |= VPROT_READ | VPROT_WRITECOPY; + vprot |= VPROT_WRITECOPY; } /* Dumb game crack lets the AOEP point into a data section. Adjust. */ diff -Nru wine1.3-1.3.30/dlls/setupx.dll16/virtcopy.c wine1.3-1.3.31/dlls/setupx.dll16/virtcopy.c --- wine1.3-1.3.30/dlls/setupx.dll16/virtcopy.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/setupx.dll16/virtcopy.c 2011-10-21 18:38:36.000000000 +0000 @@ -224,10 +224,10 @@ vn_num += 20; if (pvnlist) pvnlist = HeapReAlloc(heap, HEAP_ZERO_MEMORY, pvnlist, - sizeof(LPVIRTNODE *) * vn_num); + sizeof(*pvnlist) * vn_num); else pvnlist = HeapAlloc(heap, HEAP_ZERO_MEMORY, - sizeof(LPVIRTNODE *) * vn_num); + sizeof(*pvnlist) * vn_num); } pvnlist[vn_last] = HeapAlloc(heap, HEAP_ZERO_MEMORY, sizeof(VIRTNODE)); lpvn = pvnlist[vn_last]; diff -Nru wine1.3-1.3.30/dlls/shdocvw/shdocvw_main.c wine1.3-1.3.31/dlls/shdocvw/shdocvw_main.c --- wine1.3-1.3.30/dlls/shdocvw/shdocvw_main.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/shdocvw/shdocvw_main.c 2011-10-21 18:38:36.000000000 +0000 @@ -117,7 +117,9 @@ */ DWORD WINAPI IEWinMain(LPSTR szCommandLine, int nShowWindow) { - DWORD (WINAPI *pIEWinMain)(LPSTR,int); + DWORD (WINAPI *pIEWinMain)(const WCHAR*,int); + WCHAR *cmdline; + DWORD ret, len; TRACE("%s %d\n", debugstr_a(szCommandLine), nShowWindow); @@ -125,7 +127,16 @@ if(!pIEWinMain) ExitProcess(1); - return pIEWinMain(szCommandLine, nShowWindow); + len = MultiByteToWideChar(CP_ACP, 0, szCommandLine, -1, NULL, 0); + cmdline = heap_alloc(len*sizeof(WCHAR)); + if(!cmdline) + ExitProcess(1); + MultiByteToWideChar(CP_ACP, 0, szCommandLine, -1, cmdline, len); + + ret = pIEWinMain(cmdline, nShowWindow); + + heap_free(cmdline); + return ret; } /************************************************************************* diff -Nru wine1.3-1.3.30/dlls/shell32/brsfolder.c wine1.3-1.3.31/dlls/shell32/brsfolder.c --- wine1.3-1.3.30/dlls/shell32/brsfolder.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/shell32/brsfolder.c 2011-10-21 18:38:36.000000000 +0000 @@ -1068,10 +1068,7 @@ bi.hwndOwner = lpbi->hwndOwner; bi.pidlRoot = lpbi->pidlRoot; if (lpbi->pszDisplayName) - { bi.pszDisplayName = HeapAlloc( GetProcessHeap(), 0, MAX_PATH * sizeof(WCHAR) ); - MultiByteToWideChar( CP_ACP, 0, lpbi->pszDisplayName, -1, bi.pszDisplayName, MAX_PATH ); - } else bi.pszDisplayName = NULL; diff -Nru wine1.3-1.3.30/dlls/shell32/classes.c wine1.3-1.3.31/dlls/shell32/classes.c --- wine1.3-1.3.30/dlls/shell32/classes.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/shell32/classes.c 2011-10-21 18:38:36.000000000 +0000 @@ -129,7 +129,7 @@ TRACE("%p %s %p\n", hkeyClass, debugstr_w(szVerb), szDest); - if (szVerb) + if (szVerb && *szVerb) { lstrcpynW(szDest, szVerb, len); return TRUE; diff -Nru wine1.3-1.3.30/dlls/shell32/shell32_Ca.rc wine1.3-1.3.31/dlls/shell32/shell32_Ca.rc --- wine1.3-1.3.30/dlls/shell32/shell32_Ca.rc 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/shell32/shell32_Ca.rc 2011-10-21 18:38:36.000000000 +0000 @@ -20,18 +20,64 @@ LANGUAGE LANG_CATALAN, SUBLANG_DEFAULT +SHBRSFORFOLDER_MSGBOX DIALOG 15, 40, 188, 192 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK +CAPTION "Navegar per Carpeta" +FONT 8, "MS Shell Dlg" +{ + DEFPUSHBUTTON "D'acord", 1, 80, 176, 50, 12, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cancella", 2, 134, 176, 50, 12, WS_GROUP | WS_TABSTOP + LTEXT "", IDD_TITLE, 4, 4, 180, 12 + LTEXT "", IDD_STATUS, 4, 25, 180, 12 + CONTROL "", IDD_TREEVIEW, "SysTreeView32", + TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | + WS_BORDER | WS_TABSTOP, + 4, 40, 180, 120 +} + +SHNEWBRSFORFOLDER_MSGBOX DIALOG 15, 40, 218, 196 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | WS_SIZEBOX | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK +CAPTION "Navegar per Carpeta" +FONT 8, "MS Shell Dlg" +{ + LTEXT "", IDD_TITLE, 10, 8, 198, 24 + LTEXT "", IDD_STATUS, 10, 25, 198, 12 + LTEXT "Carpeta:", IDD_FOLDER, 10, 156, 40, 12 + CONTROL "", IDD_TREEVIEW, "SysTreeView32", + TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | + WS_BORDER | WS_TABSTOP, + 12, 38, 194, 105 + EDITTEXT IDD_FOLDERTEXT, 46, 150, 160, 14, WS_BORDER | WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Fer Una Nova Carpeta", IDD_MAKENEWFOLDER, 12, 174, 70, 14, WS_GROUP | WS_TABSTOP + DEFPUSHBUTTON "D'acord", IDOK, 102, 174, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Cancella", IDCANCEL, 156, 174, 50, 14, WS_GROUP | WS_TABSTOP +} + +SHELL_YESTOALL_MSGBOX DIALOG 200, 100, 280, 90 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Missatge" +FONT 8, "MS Shell Dlg" +{ + DEFPUSHBUTTON "&S", IDYES, 34, 69, 53, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "S a &tots", IDD_YESTOALL, 92, 69, 65, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&No", IDNO, 162, 69, 53, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Cancella", IDCANCEL, 220, 69, 53, 14, WS_GROUP | WS_TABSTOP + ICON "", IDD_ICON, 10, 10, 16, 16 + LTEXT "", IDD_MESSAGE, 40, 10, 238, 52, 0 +} + SHELL_ABOUT_MSGBOX DIALOG 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, 60, 12, WS_TABSTOP - PUSHBUTTON "Wine &license", IDC_ABOUT_LICENSE, 153, 113, 60, 12, WS_TABSTOP + DEFPUSHBUTTON "D'acord", IDOK, 153, 133, 60, 12, WS_TABSTOP + PUSHBUTTON "&Llicencia de Wine", 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 "Running on %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10 + LTEXT "Executant en %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10 LTEXT "Wine ha estat construit per:", IDC_ABOUT_WINE_TEXT, 8, 54, 204, 10 } @@ -40,11 +86,11 @@ CAPTION "" FONT 8, "MS Shell Dlg" { - ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE - LTEXT "Type the name of a program, folder, document, or Internet resource, and Wine will open it for you.", 12289, 36, 11, 182, 18 - LTEXT "&Open:", 12305, 7, 39, 24, 10 - CONTROL "", 12298, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100 - DEFPUSHBUTTON "OK", IDOK, 62, 63, 50, 14, WS_TABSTOP - PUSHBUTTON "Cancel", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP - PUSHBUTTON "&Browse...", 12288, 170, 63, 50, 14, WS_TABSTOP + ICON "", IDC_RUNDLG_ICON, 7, 11, 18, 20, WS_VISIBLE + LTEXT "Introdueix el nom d'un programa, carpeta, document, o recurs de web, i Wine el obrir per vs.", IDC_RUNDLG_DESCRIPTION, 36, 11, 182, 18 + LTEXT "&Open:", IDC_RUNDLG_LABEL, 7, 39, 24, 10 + CONTROL "", IDC_RUNDLG_EDITPATH, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100 + DEFPUSHBUTTON "D'acord", IDOK, 62, 63, 50, 14, WS_TABSTOP + PUSHBUTTON "Cancella", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP + PUSHBUTTON "&Navega...", IDC_RUNDLG_BROWSE, 170, 63, 50, 14, WS_TABSTOP } diff -Nru wine1.3-1.3.30/dlls/shell32/shfldr_unixfs.c wine1.3-1.3.31/dlls/shell32/shfldr_unixfs.c --- wine1.3-1.3.30/dlls/shell32/shfldr_unixfs.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/shell32/shfldr_unixfs.c 2011-10-21 18:38:36.000000000 +0000 @@ -2440,6 +2440,7 @@ !UNIXFS_is_pidl_of_type(rgelt[i], This->m_fFilter)) { SHFree(rgelt[i]); + rgelt[i] = NULL; continue; } memset(((PBYTE)rgelt[i])+rgelt[i]->mkid.cb, 0, sizeof(USHORT)); diff -Nru wine1.3-1.3.30/dlls/shell32/shlexec.c wine1.3-1.3.31/dlls/shell32/shlexec.c --- wine1.3-1.3.30/dlls/shell32/shlexec.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/shell32/shlexec.c 2011-10-21 18:38:36.000000000 +0000 @@ -788,14 +788,25 @@ WCHAR * exec; DWORD ddeInst = 0; DWORD tid; - DWORD resultLen; + DWORD resultLen, endkeyLen; HSZ hszApp, hszTopic; HCONV hConv; HDDEDATA hDdeData; unsigned ret = SE_ERR_NOASSOC; BOOL unicode = !(GetVersion() & 0x80000000); + if (strlenW(key) + 1 > sizeof(regkey) / sizeof(regkey[0])) + { + FIXME("input parameter %s larger than buffer\n", debugstr_w(key)); + return 2; + } strcpyW(regkey, key); + endkeyLen = sizeof(regkey) / sizeof(regkey[0]) - (endkey - regkey); + if (strlenW(wApplication) + 1 > endkeyLen) + { + FIXME("endkey %s overruns buffer\n", debugstr_w(wApplication)); + return 2; + } strcpyW(endkey, wApplication); applen = sizeof(app); if (RegQueryValueW(HKEY_CLASSES_ROOT, regkey, app, &applen) != ERROR_SUCCESS) @@ -809,6 +820,12 @@ /* Get application command from start string and find filename of application */ if (*start == '"') { + if (strlenW(start + 1) + 1 > sizeof(command) / sizeof(command[0])) + { + FIXME("size of input parameter %s larger than buffer\n", + debugstr_w(start + 1)); + return 2; + } strcpyW(command, start+1); if ((ptr = strchrW(command, '"'))) *ptr = 0; @@ -835,6 +852,11 @@ ERR("Unable to find application path for command %s\n", debugstr_w(start)); return ERROR_ACCESS_DENIED; } + if (strlenW(ptr) + 1 > sizeof(app) / sizeof(app[0])) + { + FIXME("size of found path %s larger than buffer\n", debugstr_w(ptr)); + return 2; + } strcpyW(app, ptr); /* Remove extensions (including .so) */ @@ -848,6 +870,11 @@ *ptr = 0; } + if (strlenW(wTopic) + 1 > endkeyLen) + { + FIXME("endkey %s overruns buffer\n", debugstr_w(wTopic)); + return 2; + } strcpyW(endkey, wTopic); topiclen = sizeof(topic); if (RegQueryValueW(HKEY_CLASSES_ROOT, regkey, topic, &topiclen) != ERROR_SUCCESS) @@ -890,6 +917,11 @@ SetLastError(ERROR_DDE_FAIL); return 30; /* whatever */ } + if (strlenW(wIfexec) + 1 > endkeyLen) + { + FIXME("endkey %s overruns buffer\n", debugstr_w(wIfexec)); + return 2; + } strcpyW(endkey, wIfexec); ifexeclen = sizeof(ifexec); if (RegQueryValueW(HKEY_CLASSES_ROOT, regkey, ifexec, &ifexeclen) == ERROR_SUCCESS) @@ -1485,7 +1517,7 @@ TRACE("Got URL: %s\n", debugstr_w(lpFile)); /* Looking for ...protocol\shell\lpOperation\command */ len = iSize + lstrlenW(wShell) + lstrlenW(wCommand) + 1; - if (psei->lpVerb) + if (psei->lpVerb && *psei->lpVerb) len += lstrlenW(psei->lpVerb); else len += lstrlenW(wszOpen); @@ -1493,7 +1525,7 @@ memcpy(lpstrProtocol, lpFile, iSize*sizeof(WCHAR)); lpstrProtocol[iSize] = '\0'; strcatW(lpstrProtocol, wShell); - strcatW(lpstrProtocol, psei->lpVerb? psei->lpVerb: wszOpen); + strcatW(lpstrProtocol, psei->lpVerb && *psei->lpVerb ? psei->lpVerb: wszOpen); strcatW(lpstrProtocol, wCommand); /* Remove File Protocol from lpFile */ @@ -1765,6 +1797,7 @@ /* terminate previous command string after the quote character */ *end = '\0'; + lpFile = wfileName; } else { @@ -1795,12 +1828,10 @@ } } - lstrcpynW(wfileName, sei_tmp.lpFile,sizeof(wfileName)/sizeof(WCHAR)); + lpFile = sei_tmp.lpFile; } } else - lstrcpynW(wfileName, sei_tmp.lpFile,sizeof(wfileName)/sizeof(WCHAR)); - - lpFile = wfileName; + lpFile = sei_tmp.lpFile; wcmd = wcmdBuffer; len = lstrlenW(wszApplicationName) + 1; diff -Nru wine1.3-1.3.30/dlls/shell32/tests/brsfolder.c wine1.3-1.3.31/dlls/shell32/tests/brsfolder.c --- wine1.3-1.3.30/dlls/shell32/tests/brsfolder.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/shell32/tests/brsfolder.c 2011-10-21 18:38:36.000000000 +0000 @@ -200,7 +200,7 @@ bi.ulFlags = BIF_NEWDIALOGSTYLE; bi.lpfn = create_new_folder_callback; /* Use test folder as the root folder for dialog box */ - MultiByteToWideChar(CP_UTF8, 0, test_folder_path, MAX_PATH, + MultiByteToWideChar(CP_UTF8, 0, test_folder_path, -1, test_folder_pathW, MAX_PATH); hr = SHGetDesktopFolder(&test_folder_object); ok (SUCCEEDED(hr), "SHGetDesktopFolder failed with hr 0x%08x\n", hr); diff -Nru wine1.3-1.3.30/dlls/shell32/tests/shlexec.c wine1.3-1.3.31/dlls/shell32/tests/shlexec.c --- wine1.3-1.3.30/dlls/shell32/tests/shlexec.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/shell32/tests/shlexec.c 2011-10-21 18:38:36.000000000 +0000 @@ -92,7 +92,10 @@ static char shell_call[2048]=""; static int shell_execute(LPCSTR operation, LPCSTR file, LPCSTR parameters, LPCSTR directory) { - INT_PTR rc; + INT_PTR rc, rcEmpty = 0; + + if(!operation) + rcEmpty = shell_execute("", file, parameters, directory); strcpy(shell_call, "ShellExecute("); strcat_param(shell_call, operation); @@ -139,6 +142,10 @@ if (rc > 32) dump_child(); + if(!operation) + ok(rc == rcEmpty || broken(rc > 32 && rcEmpty == SE_ERR_NOASSOC) /* NT4 */, + "Got different return value with empty string: %lu %lu\n", rc, rcEmpty); + return rc; } diff -Nru wine1.3-1.3.30/dlls/shlwapi/shlwapi.rc wine1.3-1.3.31/dlls/shlwapi/shlwapi.rc --- wine1.3-1.3.30/dlls/shlwapi/shlwapi.rc 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/shlwapi/shlwapi.rc 2011-10-21 18:38:36.000000000 +0000 @@ -24,7 +24,7 @@ STRINGTABLE { - IDS_BYTES_FORMAT "%ld bytes" + IDS_BYTES_FORMAT "%d bytes" IDS_TIME_INTERVAL_HOURS "#msgctxt#time unit: hours# hr" IDS_TIME_INTERVAL_MINUTES "#msgctxt#time unit: minutes# min" IDS_TIME_INTERVAL_SECONDS "#msgctxt#time unit: seconds# sec" diff -Nru wine1.3-1.3.30/dlls/shlwapi/string.c wine1.3-1.3.31/dlls/shlwapi/string.c --- wine1.3-1.3.30/dlls/shlwapi/string.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/shlwapi/string.c 2011-10-21 18:38:36.000000000 +0000 @@ -2344,7 +2344,7 @@ { WCHAR wszBytesFormat[64]; LoadStringW(shlwapi_hInstance, IDS_BYTES_FORMAT, wszBytesFormat, 64); - snprintfW(lpszDest, cchMax, wszBytesFormat, (long)llBytes); + snprintfW(lpszDest, cchMax, wszBytesFormat, (int)llBytes); return lpszDest; } diff -Nru wine1.3-1.3.30/dlls/shlwapi/tests/ordinal.c wine1.3-1.3.31/dlls/shlwapi/tests/ordinal.c --- wine1.3-1.3.30/dlls/shlwapi/tests/ordinal.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/shlwapi/tests/ordinal.c 2011-10-21 18:38:36.000000000 +0000 @@ -2873,6 +2873,7 @@ return; } + size = sizeof(data); hres = pSKGetValueW(SHKEY_Root_HKLM, WineTestW, NULL, NULL, &data, &size); ok(hres == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), "hres = %x\n", hres); diff -Nru wine1.3-1.3.30/dlls/shlwapi/tests/url.c wine1.3-1.3.31/dlls/shlwapi/tests/url.c --- wine1.3-1.3.30/dlls/shlwapi/tests/url.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/shlwapi/tests/url.c 2011-10-21 18:38:36.000000000 +0000 @@ -882,16 +882,27 @@ ok(size == 1, "got %d, expected %d\n", size, 1); size = 1; + empty_string[0] = 127; ret = pUrlEscapeA("/woningplan/woonkamer basis.swf", empty_string, &size, URL_ESCAPE_SPACES_ONLY); ok(ret == E_POINTER, "got %x, expected %x\n", ret, E_POINTER); ok(size == 34, "got %d, expected %d\n", size, 34); + ok(empty_string[0] == 127, "String has changed, empty_string[0] = %d\n", empty_string[0]); if(pUrlEscapeW) { + WCHAR wc; + size = sizeof(overwrite)/sizeof(WCHAR); ret = pUrlEscapeW(overwrite, overwrite, &size, URL_ESCAPE_SPACES_ONLY); ok(ret == S_OK, "got %x, expected S_OK\n", ret); ok(size == 9, "got %d, expected 9\n", size); ok(!lstrcmpW(overwrite, out), "got %s, expected %s\n", wine_dbgstr_w(overwrite), wine_dbgstr_w(out)); + + size = 1; + wc = 127; + ret = pUrlEscapeW(overwrite, &wc, &size, URL_ESCAPE_SPACES_ONLY); + ok(ret == E_POINTER, "got %x, expected %x\n", ret, E_POINTER); + ok(size == 10, "got %d, expected 9\n", size); + ok(wc == 127, "String has changed, wc = %d\n", wc); } for(i=0; i len_htmW * sizeof(WCHAR)) { + else if (work - base.pszSuffix > len_htmW) { work -= len_htmW; if (strncmpiW(work, htmW, len_htmW) == 0) manual_search = TRUE; @@ -752,7 +752,7 @@ } if (!manual_search && - work - base.pszSuffix > len_htmlW * sizeof(WCHAR)) { + work - base.pszSuffix > len_htmlW) { work -= len_htmlW; if (strncmpiW(work, htmlW, len_htmlW) == 0) manual_search = TRUE; @@ -1072,7 +1072,7 @@ LPCWSTR src; DWORD needed = 0, ret; BOOL stop_escaping = FALSE; - WCHAR next[5], *dst = pszEscaped, *dst_ptr = NULL; + WCHAR next[5], *dst, *dst_ptr; INT len; PARSEDURLW parsed_url; DWORD int_flags; @@ -1091,11 +1091,9 @@ URL_ESCAPE_PERCENT)) FIXME("Unimplemented flags: %08x\n", dwFlags); - if(pszUrl == pszEscaped) { - dst_ptr = dst = HeapAlloc(GetProcessHeap(), 0, *pcchEscaped*sizeof(WCHAR)); - if(!dst) - return E_OUTOFMEMORY; - } + dst_ptr = dst = HeapAlloc(GetProcessHeap(), 0, *pcchEscaped*sizeof(WCHAR)); + if(!dst_ptr) + return E_OUTOFMEMORY; /* fix up flags */ if (dwFlags & URL_ESCAPE_SPACES_ONLY) @@ -1213,8 +1211,7 @@ if(needed < *pcchEscaped) { *dst = '\0'; - if(pszUrl == pszEscaped) - memcpy(pszEscaped, dst-needed, (needed+1)*sizeof(WCHAR)); + memcpy(pszEscaped, dst_ptr, (needed+1)*sizeof(WCHAR)); ret = S_OK; } else { @@ -1223,8 +1220,7 @@ } *pcchEscaped = needed; - if(pszUrl == pszEscaped) - HeapFree(GetProcessHeap(), 0, dst_ptr); + HeapFree(GetProcessHeap(), 0, dst_ptr); return ret; } diff -Nru wine1.3-1.3.30/dlls/url/url_main.c wine1.3-1.3.31/dlls/url/url_main.c --- wine1.3-1.3.30/dlls/url/url_main.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/url/url_main.c 2011-10-21 18:38:36.000000000 +0000 @@ -106,6 +106,15 @@ } /*********************************************************************** + * OpenURLA (URL.@) + * + */ +void WINAPI OpenURLA(HWND hwnd, HINSTANCE inst, LPCSTR cmdline, INT show) +{ + FIXME("(%p, %p, %s, %d): stub!\n", hwnd, inst, debugstr_a(cmdline), show); +} + +/*********************************************************************** * TelnetProtocolHandlerA (URL.@) * */ diff -Nru wine1.3-1.3.30/dlls/url/url.spec wine1.3-1.3.31/dlls/url/url.spec --- wine1.3-1.3.30/dlls/url/url.spec 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/url/url.spec 2011-10-21 18:38:36.000000000 +0000 @@ -1,7 +1,5 @@ @ stdcall AddMIMEFileTypesPS(ptr ptr) @ stub AutodialHookCallback -@ stub DllCanUnloadNow -@ stub DllGetClassObject @ stub DummyEntryPoint @ stub DummyEntryPointA @ stdcall FileProtocolHandler(long ptr str long) FileProtocolHandlerA @@ -13,8 +11,8 @@ @ stub MailToProtocolHandlerA @ stub NewsProtocolHandler @ stub NewsProtocolHandlerA -@ stub OpenURL -@ stub OpenURLA +@ stdcall OpenURL(long long str long) OpenURLA +@ stdcall OpenURLA(long long str long) @ stdcall TelnetProtocolHandler(long str) TelnetProtocolHandlerA @ stdcall TelnetProtocolHandlerA(long str) @ stub TranslateURLA diff -Nru wine1.3-1.3.30/dlls/urlmon/http.c wine1.3-1.3.31/dlls/urlmon/http.c --- wine1.3-1.3.30/dlls/urlmon/http.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/urlmon/http.c 2011-10-21 18:38:36.000000000 +0000 @@ -528,10 +528,8 @@ This->http_negotiate = NULL; } - if(This->full_header) { - heap_free(This->full_header); - This->full_header = NULL; - } + heap_free(This->full_header); + This->full_header = NULL; } static void HttpProtocol_on_error(Protocol *prot, DWORD error) diff -Nru wine1.3-1.3.30/dlls/urlmon/tests/url.c wine1.3-1.3.31/dlls/urlmon/tests/url.c --- wine1.3-1.3.30/dlls/urlmon/tests/url.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/urlmon/tests/url.c 2011-10-21 18:38:36.000000000 +0000 @@ -3622,15 +3622,17 @@ ok(hres == S_OK, "CreateAsyncBindCtx failed: %08x\n\n", hres); CHECK_CALLED(QueryInterface_IServiceProvider); - unk = (void*)0xdeadbeef; - hres = IMoniker_BindToStorage(mon, bctx, NULL, &IID_IStream, (void**)&unk); - ok(hres == MK_E_SYNTAX, "BindToStorage failed: %08x, expected MK_E_SYNTAX\n", hres); - ok(!unk, "unk = %p\n", unk); - - unk = (void*)0xdeadbeef; - hres = IMoniker_BindToObject(mon, bctx, NULL, &IID_IUnknown, (void**)&unk); - ok(hres == MK_E_SYNTAX, "BindToStorage failed: %08x, expected MK_E_SYNTAX\n", hres); - ok(!unk, "unk = %p\n", unk); + if(pCreateUri) { /* Skip these tests on old IEs */ + unk = (void*)0xdeadbeef; + hres = IMoniker_BindToStorage(mon, bctx, NULL, &IID_IStream, (void**)&unk); + ok(hres == MK_E_SYNTAX, "BindToStorage failed: %08x, expected MK_E_SYNTAX\n", hres); + ok(!unk, "unk = %p\n", unk); + + unk = (void*)0xdeadbeef; + hres = IMoniker_BindToObject(mon, bctx, NULL, &IID_IUnknown, (void**)&unk); + ok(hres == MK_E_SYNTAX, "BindToStorage failed: %08x, expected MK_E_SYNTAX\n", hres); + ok(!unk, "unk = %p\n", unk); + } IMoniker_Release(mon); } diff -Nru wine1.3-1.3.30/dlls/user32/edit.c wine1.3-1.3.31/dlls/user32/edit.c --- wine1.3-1.3.30/dlls/user32/edit.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/user32/edit.c 2011-10-21 18:38:36.000000000 +0000 @@ -53,6 +53,7 @@ #include "winnt.h" #include "win.h" #include "imm.h" +#include "usp10.h" #include "wine/unicode.h" #include "controls.h" #include "user_private.h" @@ -153,6 +154,11 @@ */ UINT composition_len; /* length of composition, 0 == no composition */ int composition_start; /* the character position for the composition */ + /* + * Uniscribe Data + */ + SCRIPT_LOGATTR *logAttr; + SCRIPT_STRING_ANALYSIS ssa; /* Uniscribe Data for single line controls */ } EDITSTATE; @@ -247,6 +253,14 @@ } +static inline UINT get_text_length(EDITSTATE *es) +{ + if(es->text_length == (UINT)-1) + es->text_length = strlenW(es->text); + return es->text_length; +} + + /********************************************************************* * * EDIT_WordBreakProc @@ -256,61 +270,51 @@ * allows to be called without linebreaks between s[0] up to * s[count - 1]. Remember it is only called * internally, so we can decide this for ourselves. + * Additional we will always be breaking the full string. * */ -static INT EDIT_WordBreakProc(LPWSTR s, INT index, INT count, INT action) +static INT EDIT_WordBreakProc(EDITSTATE *es, LPWSTR s, INT index, INT count, INT action) { - INT ret = 0; + INT ret = 0; - TRACE("s=%p, index=%d, count=%d, action=%d\n", s, index, count, action); + TRACE("s=%p, index=%d, count=%d, action=%d\n", s, index, count, action); - if(!s) return 0; + if(!s) return 0; - switch (action) { - case WB_LEFT: - if (!count) - break; - if (index) - index--; - if (s[index] == ' ') { - while (index && (s[index] == ' ')) - index--; - if (index) { - while (index && (s[index] != ' ')) - index--; - if (s[index] == ' ') - index++; - } - } else { - while (index && (s[index] != ' ')) - index--; - if (s[index] == ' ') - index++; - } - ret = index; - break; - case WB_RIGHT: - if (!count) - break; - if (index) - index--; - if (s[index] == ' ') - while ((index < count) && (s[index] == ' ')) index++; - else { - while (s[index] && (s[index] != ' ') && (index < count)) - index++; - while ((s[index] == ' ') && (index < count)) index++; - } - ret = index; - break; - case WB_ISDELIMITER: - ret = (s[index] == ' '); - break; - default: - ERR("unknown action code, please report !\n"); - break; - } - return ret; + if (!es->logAttr) + { + SCRIPT_ANALYSIS psa; + + memset(&psa,0,sizeof(SCRIPT_ANALYSIS)); + psa.eScript = SCRIPT_UNDEFINED; + + es->logAttr = HeapAlloc(GetProcessHeap(), 0, sizeof(SCRIPT_LOGATTR) * get_text_length(es)); + ScriptBreak(es->text, get_text_length(es), &psa, es->logAttr); + } + + switch (action) { + case WB_LEFT: + if (index) + index--; + while (index && !es->logAttr[index].fSoftBreak) + index--; + ret = index; + break; + case WB_RIGHT: + if (!count) + break; + while (s[index] && index < count && !es->logAttr[index].fSoftBreak) + index++; + ret = index; + break; + case WB_ISDELIMITER: + ret = es->logAttr[index].fWhiteSpace; + break; + default: + ERR("unknown action code, please report !\n"); + break; + } + return ret; } @@ -357,11 +361,53 @@ } } else - ret = EDIT_WordBreakProc(es->text + start, index, count, action); + ret = EDIT_WordBreakProc(es, es->text, index+start, count+start, action) - start; return ret; } +static inline void EDIT_InvalidateUniscribeData(EDITSTATE *es) +{ + if (es->ssa) + { + ScriptStringFree(&es->ssa); + es->ssa = NULL; + } +} + +static SCRIPT_STRING_ANALYSIS EDIT_UpdateUniscribeData(EDITSTATE *es, HDC dc, INT line) +{ + if (!(es->style & ES_MULTILINE)) + { + if (!es->ssa) + { + INT length = get_text_length(es); + HFONT old_font = NULL; + HDC udc = dc; + + if (!udc) + udc = GetDC(es->hwndSelf); + if (es->font) + old_font = SelectObject(udc, es->font); + + if (es->style & ES_PASSWORD) + ScriptStringAnalyse(udc, &es->password_char, length, (1.5*length+16), -1, SSA_LINK|SSA_FALLBACK|SSA_GLYPHS|SSA_PASSWORD, -1, NULL, NULL, NULL, NULL, NULL, &es->ssa); + else + ScriptStringAnalyse(udc, es->text, length, (1.5*length+16), -1, SSA_LINK|SSA_FALLBACK|SSA_GLYPHS, -1, NULL, NULL, NULL, NULL, NULL, &es->ssa); + + if (es->font) + SelectObject(udc, old_font); + if (udc != dc) + ReleaseDC(es->hwndSelf, udc); + } + return es->ssa; + } + else + { + return NULL; + } +} + /********************************************************************* * * EDIT_BuildLineDefs_ML @@ -642,34 +688,6 @@ ReleaseDC(es->hwndSelf, dc); } - -static inline UINT get_text_length(EDITSTATE *es) -{ - if(es->text_length == (UINT)-1) - es->text_length = strlenW(es->text); - return es->text_length; -} - -/********************************************************************* - * - * EDIT_GetPasswordPointer_SL - * - * note: caller should free the (optionally) allocated buffer - * - */ -static LPWSTR EDIT_GetPasswordPointer_SL(EDITSTATE *es) -{ - if (es->style & ES_PASSWORD) { - INT len = get_text_length(es); - LPWSTR text = HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR)); - text[len] = '\0'; - while(len) text[--len] = es->password_char; - return text; - } else - return es->text; -} - - /********************************************************************* * * EDIT_CalcLineWidth_SL @@ -677,27 +695,14 @@ */ static void EDIT_CalcLineWidth_SL(EDITSTATE *es) { - SIZE size; - LPWSTR text; - HDC dc; - HFONT old_font = 0; + const SIZE *size; - text = EDIT_GetPasswordPointer_SL(es); - - dc = GetDC(es->hwndSelf); - if (es->font) - old_font = SelectObject(dc, es->font); - - GetTextExtentPoint32W(dc, text, strlenW(text), &size); - - if (es->font) - SelectObject(dc, old_font); - ReleaseDC(es->hwndSelf, dc); - - if (es->style & ES_PASSWORD) - HeapFree(GetProcessHeap(), 0, text); - - es->text_width = size.cx; + EDIT_UpdateUniscribeData(es, NULL, 0); + size = ScriptString_pSize(es->ssa); + if (size) + es->text_width = size->cx; + else + es->text_width = 0; } /********************************************************************* @@ -713,11 +718,11 @@ static INT EDIT_CharFromPos(EDITSTATE *es, INT x, INT y, LPBOOL after_wrap) { INT index; - HDC dc; - HFONT old_font = 0; INT x_high = 0, x_low = 0; if (es->style & ES_MULTILINE) { + HDC dc; + HFONT old_font = 0; INT line = (y - es->format_rect.top) / es->line_height + es->y_offset; INT line_index = 0; LINEDEF *line_def = es->first_line_def; @@ -767,9 +772,12 @@ if (after_wrap) *after_wrap = ((index == line_index + line_def->net_length) && (line_def->ending == END_WRAP)); + if (es->font) + SelectObject(dc, old_font); + ReleaseDC(es->hwndSelf, dc); } else { - LPWSTR text; - SIZE size; + INT xoff = 0; + INT trailing; if (after_wrap) *after_wrap = FALSE; x -= es->format_rect.left; @@ -785,60 +793,47 @@ x -= indent / 2; } - text = EDIT_GetPasswordPointer_SL(es); - dc = GetDC(es->hwndSelf); - if (es->font) - old_font = SelectObject(dc, es->font); + EDIT_UpdateUniscribeData(es, NULL, 0); + if (es->x_offset) + { + if (es->x_offset>= get_text_length(es)) + { + const SIZE *size; + size = ScriptString_pSize(es->ssa); + xoff = size->cx; + } + ScriptStringCPtoX(es->ssa, es->x_offset, FALSE, &xoff); + } if (x < 0) - { - INT low = 0; - INT high = es->x_offset; - while (low < high - 1) - { - INT mid = (low + high) / 2; - GetTextExtentPoint32W( dc, text + mid, - es->x_offset - mid, &size ); - if (size.cx > -x) { - low = mid; - x_low = size.cx; - } else { - high = mid; - x_high = size.cx; - } - } - if (abs(x_high + x) <= abs(x_low + x) + 1) - index = high; - else - index = low; + { + if (x + xoff > 0) + { + ScriptStringXtoCP(es->ssa, x+xoff, &index, &trailing); + if (trailing) index++; + } + else + index = 0; } - else - { - INT low = es->x_offset; - INT high = get_text_length(es) + 1; - while (low < high - 1) - { - INT mid = (low + high) / 2; - GetTextExtentPoint32W( dc, text + es->x_offset, - mid - es->x_offset, &size ); - if (size.cx > x) { - high = mid; - x_high = size.cx; - } else { - low = mid; - x_low = size.cx; - } - } - if (abs(x_high - x) <= abs(x_low - x) + 1) - index = high; - else - index = low; + else + { + if (x) + { + const SIZE *size; + size = ScriptString_pSize(es->ssa); + if (!size) + index = 0; + else if (x > size->cx) + index = get_text_length(es); + else + { + ScriptStringXtoCP(es->ssa, x+xoff, &index, &trailing); + if (trailing) index++; + } + } + else + index = es->x_offset; } - if (es->style & ES_PASSWORD) - HeapFree(GetProcessHeap(), 0, text); } - if (es->font) - SelectObject(dc, old_font); - ReleaseDC(es->hwndSelf, dc); return index; } @@ -975,7 +970,6 @@ INT ll = 0; HDC dc; HFONT old_font = 0; - SIZE size; LINEDEF *line_def; index = min(index, len); @@ -1026,16 +1020,33 @@ es->tabs_count, es->tabs)) - es->x_offset; } } else { - LPWSTR text = EDIT_GetPasswordPointer_SL(es); - if (index < es->x_offset) { - GetTextExtentPoint32W(dc, text + index, - es->x_offset - index, &size); - x = -size.cx; - } else { - GetTextExtentPoint32W(dc, text + es->x_offset, - index - es->x_offset, &size); - x = size.cx; + INT xoff = 0; + INT xi = 0; + EDIT_UpdateUniscribeData(es, NULL, 0); + if (es->x_offset) + { + if (es->x_offset>= get_text_length(es)) + { + const SIZE *size; + size = ScriptString_pSize(es->ssa); + xoff = size->cx; + } + ScriptStringCPtoX(es->ssa, es->x_offset, FALSE, &xoff); + } + if (index) + { + if (index >= get_text_length(es)) + { + const SIZE *size; + size = ScriptString_pSize(es->ssa); + xi = size->cx; + } + else + ScriptStringCPtoX(es->ssa, index, FALSE, &xi); + } + x = xi - xoff; + if (index >= es->x_offset) { if (!es->x_offset && (es->style & (ES_RIGHT | ES_CENTER))) { w = es->format_rect.right - es->format_rect.left; @@ -1049,8 +1060,6 @@ } } y = 0; - if (es->style & ES_PASSWORD) - HeapFree(GetProcessHeap(), 0, text); } x += es->format_rect.left; y += es->format_rect.top; @@ -1072,20 +1081,27 @@ static void EDIT_GetLineRect(EDITSTATE *es, INT line, INT scol, INT ecol, LPRECT rc) { INT line_index = EDIT_EM_LineIndex(es, line); + INT pt1, pt2; if (es->style & ES_MULTILINE) rc->top = es->format_rect.top + (line - es->y_offset) * es->line_height; else rc->top = es->format_rect.top; rc->bottom = rc->top + es->line_height; - rc->left = (scol == 0) ? es->format_rect.left : (short)LOWORD(EDIT_EM_PosFromChar(es, line_index + scol, TRUE)); - rc->right = (ecol == -1) ? es->format_rect.right : (short)LOWORD(EDIT_EM_PosFromChar(es, line_index + ecol, TRUE)); + pt1 = (scol == 0) ? es->format_rect.left : (short)LOWORD(EDIT_EM_PosFromChar(es, line_index + scol, TRUE)); + pt2 = (ecol == -1) ? es->format_rect.right : (short)LOWORD(EDIT_EM_PosFromChar(es, line_index + ecol, TRUE)); + rc->right = max(pt1 , pt2); + rc->left = min(pt1, pt2); } static inline void text_buffer_changed(EDITSTATE *es) { es->text_length = (UINT)-1; + + HeapFree( GetProcessHeap(), 0, es->logAttr ); + es->logAttr = NULL; + EDIT_InvalidateUniscribeData(es); } /********************************************************************* @@ -2030,7 +2046,7 @@ ret = (INT)LOWORD(TabbedTextOutW(dc, x, y, es->text + li + col, count, es->tabs_count, es->tabs, es->format_rect.left - es->x_offset)); } else { - LPWSTR text = EDIT_GetPasswordPointer_SL(es); + LPWSTR text = es->text; TextOutW(dc, x, y, text + li + col, count); GetTextExtentPoint32W(dc, text + li + col, count, &size); ret = size.cx; @@ -2070,6 +2086,7 @@ INT x; INT y; LRESULT pos; + SCRIPT_STRING_ANALYSIS ssa; if (es->style & ES_MULTILINE) { INT vlc = get_vertical_line_count(es); @@ -2081,6 +2098,7 @@ TRACE("line=%d\n", line); + ssa = EDIT_UpdateUniscribeData(es, dc, line); pos = EDIT_EM_PosFromChar(es, EDIT_EM_LineIndex(es, line), FALSE); x = (short)LOWORD(pos); y = (short)HIWORD(pos); @@ -2090,7 +2108,9 @@ e = max(es->selection_start, es->selection_end); s = min(li + ll, max(li, s)); e = min(li + ll, max(li, e)); - if (rev && (s != e) && + if (ssa) + ScriptStringOut(ssa, x, y, 0, &es->format_rect, s - li, e - li, FALSE); + else if (rev && (s != e) && ((es->flags & EF_FOCUSED) || (es->style & ES_NOHIDESEL))) { x += EDIT_PaintText(es, dc, x, y, line, 0, s - li, FALSE); x += EDIT_PaintText(es, dc, x, y, line, s - li, e - s, TRUE); @@ -2386,6 +2406,7 @@ s = es->selection_start; e = es->selection_end; + EDIT_InvalidateUniscribeData(es); if ((s == e) && !strl) return; @@ -2461,12 +2482,15 @@ } else { INT fw = es->format_rect.right - es->format_rect.left; + EDIT_InvalidateUniscribeData(es); EDIT_CalcLineWidth_SL(es); /* remove chars that don't fit */ if (honor_limit && !(es->style & ES_AUTOHSCROLL) && (es->text_width > fw)) { while ((es->text_width > fw) && s + strl >= s) { strcpyW(es->text + s + strl - 1, es->text + s + strl); strl--; + es->text_length = -1; + EDIT_InvalidateUniscribeData(es); EDIT_CalcLineWidth_SL(es); } text_buffer_changed(es); @@ -2564,6 +2588,7 @@ es->flags &= ~EF_UPDATE; EDIT_NOTIFY_PARENT(es, EN_CHANGE); } + EDIT_InvalidateUniscribeData(es); } @@ -2764,6 +2789,7 @@ SetWindowLongW( es->hwndSelf, GWL_STYLE, style & ~ES_PASSWORD ); es->style &= ~ES_PASSWORD; } + EDIT_InvalidateUniscribeData(es); EDIT_UpdateText(es, NULL, TRUE); } @@ -3492,6 +3518,9 @@ (es->style & ES_NOHIDESEL)); dc = hdc ? hdc : BeginPaint(es->hwndSelf, &ps); + /* The dc we use for calcualting may not be the one we paint into. + This is the safest action. */ + EDIT_InvalidateUniscribeData(es); GetClientRect(es->hwndSelf, &rcClient); /* get the background brush */ @@ -3604,6 +3633,7 @@ RECT clientRect; es->font = font; + EDIT_InvalidateUniscribeData(es); dc = GetDC(es->hwndSelf); if (font) old_font = SelectObject(dc, font); @@ -3695,6 +3725,7 @@ } EDIT_EM_ScrollCaret(es); EDIT_UpdateScrollInfo(es); + EDIT_InvalidateUniscribeData(es); } @@ -4315,9 +4346,11 @@ cleanup: SetWindowLongPtrW(es->hwndSelf, 0, 0); + EDIT_InvalidateUniscribeData(es); HeapFree(GetProcessHeap(), 0, es->first_line_def); HeapFree(GetProcessHeap(), 0, es->undo_text); if (es->hloc32W) LocalFree(es->hloc32W); + HeapFree(GetProcessHeap(), 0, es->logAttr); HeapFree(GetProcessHeap(), 0, es); return FALSE; } diff -Nru wine1.3-1.3.30/dlls/user32/Makefile.in wine1.3-1.3.31/dlls/user32/Makefile.in --- wine1.3-1.3.30/dlls/user32/Makefile.in 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/user32/Makefile.in 2011-10-21 18:38:36.000000000 +0000 @@ -2,7 +2,7 @@ MODULE = user32.dll IMPORTLIB = user32 IMPORTS = gdi32 version advapi32 -DELAYIMPORTS = imm32 +DELAYIMPORTS = imm32 usp10 C_SRCS = \ button.c \ diff -Nru wine1.3-1.3.30/dlls/user32/sysparams.c wine1.3-1.3.31/dlls/user32/sysparams.c --- wine1.3-1.3.30/dlls/user32/sysparams.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/user32/sysparams.c 2011-10-21 18:38:36.000000000 +0000 @@ -254,6 +254,7 @@ static const WCHAR METRICS_MENUHEIGHT_VALNAME[]= {'M','e','n','u','H','e','i','g','h','t',0}; static const WCHAR METRICS_ICONSIZE_VALNAME[]= {'S','h','e','l','l',' ','I','c','o','n',' ','S','i','z','e',0}; static const WCHAR METRICS_BORDERWIDTH_VALNAME[]= {'B','o','r','d','e','r','W','i','d','t','h',0}; +static const WCHAR METRICS_PADDEDBORDERWIDTH_VALNAME[]={'P','a','d','d','e','d','B','o','r','d','e','r','W','i','d','t','h',0}; static const WCHAR METRICS_CAPTIONLOGFONT_VALNAME[]= {'C','a','p','t','i','o','n','F','o','n','t',0}; static const WCHAR METRICS_SMCAPTIONLOGFONT_VALNAME[]={'S','m','C','a','p','t','i','o','n','F','o','n','t',0}; static const WCHAR METRICS_MENULOGFONT_VALNAME[]= {'M','e','n','u','F','o','n','t',0}; @@ -1079,6 +1080,7 @@ ncm.iBorderWidth = get_reg_metric(hkey, METRICS_BORDERWIDTH_VALNAME, 1); ncm.iScrollWidth = get_reg_metric(hkey, METRICS_SCROLLWIDTH_VALNAME, 16); ncm.iScrollHeight = get_reg_metric(hkey, METRICS_SCROLLHEIGHT_VALNAME, 16); + ncm.iPaddedBorderWidth = get_reg_metric(hkey, METRICS_PADDEDBORDERWIDTH_VALNAME, 0); /* size of the normal caption buttons */ ncm.iCaptionHeight = get_reg_metric(hkey, METRICS_CAPTIONHEIGHT_VALNAME, 18); @@ -1582,11 +1584,21 @@ { LPNONCLIENTMETRICSW lpnm = pvParam; + if (!lpnm) + { + ret = FALSE; + break; + } + if (!spi_loaded[SPI_NONCLIENTMETRICS_IDX]) load_nonclient_metrics(); - if (lpnm && (lpnm->cbSize == sizeof(NONCLIENTMETRICSW) || - lpnm->cbSize == FIELD_OFFSET(NONCLIENTMETRICSW, iPaddedBorderWidth))) + if (lpnm->cbSize == sizeof(NONCLIENTMETRICSW)) *lpnm = nonclient_metrics; + else if (lpnm->cbSize == FIELD_OFFSET(NONCLIENTMETRICSW, iPaddedBorderWidth)) + { + memcpy(lpnm, &nonclient_metrics, FIELD_OFFSET(NONCLIENTMETRICSW, iPaddedBorderWidth)); + lpnm->cbSize = FIELD_OFFSET(NONCLIENTMETRICSW, iPaddedBorderWidth); + } else ret = FALSE; break; diff -Nru wine1.3-1.3.30/dlls/user.exe16/user.c wine1.3-1.3.31/dlls/user.exe16/user.c --- wine1.3-1.3.30/dlls/user.exe16/user.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/user.exe16/user.c 2011-10-21 18:38:36.000000000 +0000 @@ -1357,7 +1357,7 @@ INT16 count, INT16 nb_tabs, const INT16 *tabs16, INT16 tab_org ) { LONG ret; - INT i, *tabs = HeapAlloc( GetProcessHeap(), 0, nb_tabs * sizeof(tabs) ); + INT i, *tabs = HeapAlloc( GetProcessHeap(), 0, nb_tabs * sizeof(*tabs) ); if (!tabs) return 0; for (i = 0; i < nb_tabs; i++) tabs[i] = tabs16[i]; ret = TabbedTextOutA( HDC_32(hdc), x, y, lpstr, count, nb_tabs, tabs, tab_org ); @@ -1373,7 +1373,7 @@ INT16 nb_tabs, const INT16 *tabs16 ) { LONG ret; - INT i, *tabs = HeapAlloc( GetProcessHeap(), 0, nb_tabs * sizeof(tabs) ); + INT i, *tabs = HeapAlloc( GetProcessHeap(), 0, nb_tabs * sizeof(*tabs) ); if (!tabs) return 0; for (i = 0; i < nb_tabs; i++) tabs[i] = tabs16[i]; ret = GetTabbedTextExtentA( HDC_32(hdc), lpstr, count, nb_tabs, tabs ); diff -Nru wine1.3-1.3.30/dlls/usp10/breaking.c wine1.3-1.3.31/dlls/usp10/breaking.c --- wine1.3-1.3.30/dlls/usp10/breaking.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/usp10/breaking.c 2011-10-21 18:38:36.000000000 +0000 @@ -392,7 +392,7 @@ debug_output_breaks(break_before,count); /* LB31 */ - for (i = 0; i < count; i++) + for (i = 0; i < count-1; i++) else_break(&break_before[i+1],b_s); debug_output_breaks(break_before,count); diff -Nru wine1.3-1.3.30/dlls/usp10/indic.c wine1.3-1.3.31/dlls/usp10/indic.c --- wine1.3-1.3.30/dlls/usp10/indic.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/usp10/indic.c 2011-10-21 18:38:36.000000000 +0000 @@ -86,7 +86,7 @@ next++; if ((next < cChar) && lex(input[next]) == lex_Nukta) next++; - if (lex(input[next])==lex_Halant) + if ((next < cChar) && lex(input[next])==lex_Halant) { next++; if((next < cChar) && is_joiner( lex(input[next]) )) @@ -94,7 +94,7 @@ if ((next < cChar) && is_consonant( lex(input[next]) )) return next; } - else if (is_joiner( lex(input[next]) ) && lex(input[next+1])==lex_Halant) + else if ((next < cChar) && is_joiner( lex(input[next]) ) && lex(input[next+1])==lex_Halant) { next+=2; if ((next < cChar) && is_consonant( lex(input[next]) )) @@ -163,7 +163,7 @@ else if ((next < cChar) && lex(input[next])==lex_ZWJ && is_consonant( lex(input[next+1]) )) next+=2; - if (is_matra( lex(input[next]) )) + if ((next < cChar) && is_matra( lex(input[next]) )) { while((next < cChar) && is_matra( lex(input[next]) )) next++; @@ -333,6 +333,8 @@ while((next < cChar) && lex(input[next]) == lex_Generic) next++; index = next; + if (next >= cChar) + break; next = Indic_process_next_syllable(input, cChar, 0, ¢er, index, lex); if (next != -1) { diff -Nru wine1.3-1.3.30/dlls/usp10/Makefile.in wine1.3-1.3.31/dlls/usp10/Makefile.in --- wine1.3-1.3.30/dlls/usp10/Makefile.in 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/usp10/Makefile.in 2011-10-21 18:38:36.000000000 +0000 @@ -1,6 +1,6 @@ MODULE = usp10.dll IMPORTLIB = usp10 -IMPORTS = user32 gdi32 +IMPORTS = advapi32 user32 gdi32 C_SRCS = \ bidi.c \ diff -Nru wine1.3-1.3.30/dlls/usp10/shape.c wine1.3-1.3.31/dlls/usp10/shape.c --- wine1.3-1.3.30/dlls/usp10/shape.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/usp10/shape.c 2011-10-21 18:38:36.000000000 +0000 @@ -1783,10 +1783,11 @@ } } -static void DecomposeVowels(HDC hdc, WCHAR *pwOutChars, INT *pcChars, const VowelComponents vowels[]) +static void DecomposeVowels(HDC hdc, WCHAR *pwOutChars, INT *pcChars, const VowelComponents vowels[], WORD* pwLogClust) { int i; int cWalk; + int offset = 0; for (cWalk = 0; cWalk < *pcChars; cWalk++) { @@ -1794,18 +1795,24 @@ { if (pwOutChars[cWalk] == vowels[i].base) { + int j; + int o = 1; ReplaceInsertChars(hdc, cWalk, pcChars, pwOutChars, vowels[i].parts); - if (vowels[i].parts[1]) cWalk++; - if (vowels[i].parts[2]) cWalk++; + if (vowels[i].parts[1]) { cWalk++; o++; } + if (vowels[i].parts[2]) { cWalk++; o++; } + offset += o; + for (j = (cWalk - offset) + 1; j < *pcChars - offset; j ++) + pwLogClust[j]+=o; break; } } } } -static void ComposeConsonants(HDC hdc, WCHAR *pwOutChars, INT *pcChars, const ConsonantComponents consonants[]) +static void ComposeConsonants(HDC hdc, WCHAR *pwOutChars, INT *pcChars, const ConsonantComponents consonants[], WORD* pwLogClust) { int i; + int offset = 0; int cWalk; for (cWalk = 0; cWalk < *pcChars; cWalk++) @@ -1825,6 +1832,11 @@ for(k = cWalk+1; k < *pcChars - j; k++) pwOutChars[k] = pwOutChars[k+j]; *pcChars = *pcChars - j; + for (k = j ; k > 0; k--) + pwLogClust[cWalk + k + offset] = pwLogClust[cWalk + offset]; + offset += j; + for (k = cWalk + j + offset; k < *pcChars + offset; k++) + pwLogClust[k]--; break; } } @@ -2398,7 +2410,7 @@ memcpy(input, pwcChars, cChars * sizeof(WCHAR)); /* Step 1: Decompose multi part vowels */ - DecomposeVowels(hdc, input, &cCount, Sinhala_vowels); + DecomposeVowels(hdc, input, &cCount, Sinhala_vowels, pwLogClust); TRACE("New double vowel expanded string %s (%i)\n",debugstr_wn(input,cCount),cCount); @@ -2464,7 +2476,7 @@ memcpy(input, pwcChars, cChars * sizeof(WCHAR)); /* Step 1: Compose Consonant and Nukta */ - ComposeConsonants(hdc, input, &cCount, Devanagari_consonants); + ComposeConsonants(hdc, input, &cCount, Devanagari_consonants, pwLogClust); TRACE("New composed string %s (%i)\n",debugstr_wn(input,cCount),cCount); /* Step 2: Reorder within Syllables */ @@ -2520,8 +2532,8 @@ memcpy(input, pwcChars, cChars * sizeof(WCHAR)); /* Step 1: Decompose Vowels and Compose Consonents */ - DecomposeVowels(hdc, input, &cCount, Bengali_vowels); - ComposeConsonants(hdc, input, &cCount, Bengali_consonants); + DecomposeVowels(hdc, input, &cCount, Bengali_vowels, pwLogClust); + ComposeConsonants(hdc, input, &cCount, Bengali_consonants, pwLogClust); TRACE("New composed string %s (%i)\n",debugstr_wn(input,cCount),cCount); /* Step 2: Reorder within Syllables */ @@ -2582,7 +2594,7 @@ memcpy(input, pwcChars, cChars * sizeof(WCHAR)); /* Step 1: Compose Consonents */ - ComposeConsonants(hdc, input, &cCount, Gurmukhi_consonants); + ComposeConsonants(hdc, input, &cCount, Gurmukhi_consonants, pwLogClust); TRACE("New composed string %s (%i)\n",debugstr_wn(input,cCount),cCount); /* Step 2: Reorder within Syllables */ @@ -2677,8 +2689,8 @@ memcpy(input, pwcChars, cChars * sizeof(WCHAR)); /* Step 1: Decompose Vowels and Compose Consonents */ - DecomposeVowels(hdc, input, &cCount, Oriya_vowels); - ComposeConsonants(hdc, input, &cCount, Oriya_consonants); + DecomposeVowels(hdc, input, &cCount, Oriya_vowels, pwLogClust); + ComposeConsonants(hdc, input, &cCount, Oriya_consonants, pwLogClust); TRACE("New composed string %s (%i)\n",debugstr_wn(input,cCount),cCount); /* Step 2: Reorder within Syllables */ @@ -2727,8 +2739,8 @@ memcpy(input, pwcChars, cChars * sizeof(WCHAR)); /* Step 1: Decompose Vowels and Compose Consonents */ - DecomposeVowels(hdc, input, &cCount, Tamil_vowels); - ComposeConsonants(hdc, input, &cCount, Tamil_consonants); + DecomposeVowels(hdc, input, &cCount, Tamil_vowels, pwLogClust); + ComposeConsonants(hdc, input, &cCount, Tamil_consonants, pwLogClust); TRACE("New composed string %s (%i)\n",debugstr_wn(input,cCount),cCount); /* Step 2: Reorder within Syllables */ @@ -2777,7 +2789,7 @@ memcpy(input, pwcChars, cChars * sizeof(WCHAR)); /* Step 1: Decompose Vowels */ - DecomposeVowels(hdc, input, &cCount, Telugu_vowels); + DecomposeVowels(hdc, input, &cCount, Telugu_vowels, pwLogClust); TRACE("New composed string %s (%i)\n",debugstr_wn(input,cCount),cCount); /* Step 2: Reorder within Syllables */ @@ -2829,7 +2841,7 @@ memcpy(input, pwcChars, cChars * sizeof(WCHAR)); /* Step 1: Decompose Vowels */ - DecomposeVowels(hdc, input, &cCount, Kannada_vowels); + DecomposeVowels(hdc, input, &cCount, Kannada_vowels, pwLogClust); TRACE("New composed string %s (%i)\n",debugstr_wn(input,cCount),cCount); /* Step 2: Reorder within Syllables */ @@ -2874,7 +2886,7 @@ memcpy(input, pwcChars, cChars * sizeof(WCHAR)); /* Step 1: Decompose Vowels */ - DecomposeVowels(hdc, input, &cCount, Malayalam_vowels); + DecomposeVowels(hdc, input, &cCount, Malayalam_vowels, pwLogClust); TRACE("New composed string %s (%i)\n",debugstr_wn(input,cCount),cCount); /* Step 2: Reorder within Syllables */ diff -Nru wine1.3-1.3.30/dlls/usp10/tests/usp10.c wine1.3-1.3.31/dlls/usp10/tests/usp10.c --- wine1.3-1.3.30/dlls/usp10/tests/usp10.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/usp10/tests/usp10.c 2011-10-21 18:38:36.000000000 +0000 @@ -1901,6 +1901,7 @@ HRESULT hr; memset(&sa, 0 , sizeof(SCRIPT_ANALYSIS)); + memset(psva, 0, sizeof(psva)); sa.fRTL = FALSE; hr = ScriptXtoCP(-1, 10, 10, pwLogClust, psva, piAdvance, &sa, &piCP, &piTrailing); @@ -1910,6 +1911,21 @@ else /* win2k3 */ ok(piCP == 10, "Negative iX should return piCP=10 not %d\n", piCP); + for (iX = 0; iX <= 7; iX++) + { + WORD clust = 0; + INT advance = 16; + hr = ScriptXtoCP(iX, 1, 1, &clust, psva, &advance, &sa, &piCP, &piTrailing); + ok(piCP==0 && piTrailing==0,"%i should return 0(%i) and 0(%i)\n",iX, piCP,piTrailing); + } + for (iX = 8; iX < 16; iX++) + { + WORD clust = 0; + INT advance = 16; + hr = ScriptXtoCP(iX, 1, 1, &clust, psva, &advance, &sa, &piCP, &piTrailing); + ok(piCP==0 && piTrailing==1,"%i should return 0(%i) and 1(%i)\n",iX, piCP,piTrailing); + } + sa.fRTL = TRUE; hr = ScriptXtoCP(-1, 10, 10, pwLogClust_RTL, psva, piAdvance, &sa, &piCP, &piTrailing); ok(hr == S_OK, "ScriptXtoCP should return S_OK not %08x\n", hr); @@ -1924,6 +1940,21 @@ ok(piCP == -1, "iX=%d should return piCP=-1 not %d\n", iX, piCP); ok(piTrailing == 1, "iX=%d should return piTrailing=1 not %d\n", iX, piTrailing); + for (iX = 1; iX <= 8; iX++) + { + WORD clust = 0; + INT advance = 16; + hr = ScriptXtoCP(iX, 1, 1, &clust, psva, &advance, &sa, &piCP, &piTrailing); + ok(piCP==0 && piTrailing==1,"%i should return 0(%i) and 1(%i)\n",iX,piCP,piTrailing); + } + for (iX = 9; iX < 16; iX++) + { + WORD clust = 0; + INT advance = 16; + hr = ScriptXtoCP(iX, 1, 1, &clust, psva, &advance, &sa, &piCP, &piTrailing); + ok(piCP==0 && piTrailing==0,"%i should return 0(%i) and 0(%i)\n",iX,piCP,piTrailing); + } + sa.fRTL = FALSE; test_item_ScriptXtoX(&sa, 10, 10, offsets, pwLogClust, piAdvance); sa.fRTL = TRUE; diff -Nru wine1.3-1.3.30/dlls/usp10/usp10.c wine1.3-1.3.31/dlls/usp10/usp10.c --- wine1.3-1.3.30/dlls/usp10/usp10.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/usp10/usp10.c 2011-10-21 18:38:36.000000000 +0000 @@ -31,6 +31,7 @@ #include "wingdi.h" #include "winuser.h" #include "winnls.h" +#include "winreg.h" #include "usp10.h" #include "usp10_internal.h" @@ -147,142 +148,187 @@ SCRIPT_ANALYSIS a; SCRIPT_PROPERTIES props; OPENTYPE_TAG scriptTag; + WCHAR fallbackFont[LF_FACESIZE]; } scriptData; /* the must be in order so that the index matches the Script value */ static const scriptData scriptInformation[] = { {{SCRIPT_UNDEFINED, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_NEUTRAL, 0, 0, 0, 0, ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - 0x00000000}, + 0x00000000, + {0}}, {{Script_Latin, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_ENGLISH, 0, 0, 0, 0, ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0}, - MS_MAKE_TAG('l','a','t','n')}, + MS_MAKE_TAG('l','a','t','n'), + {0}}, {{Script_CR, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_NEUTRAL, 0, 0, 0, 0, ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - 0x00000000}, + 0x00000000, + {0}}, {{Script_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_ENGLISH, 1, 0, 0, 0, ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - 0x00000000}, + 0x00000000, + {0}}, {{Script_Control, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_ENGLISH, 0, 1, 0, 0, ANSI_CHARSET, 1, 0, 0, 0, 0, 0, 1, 0, 0}, - 0x00000000}, + 0x00000000, + {0}}, {{Script_Punctuation, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_NEUTRAL, 0, 0, 0, 0, ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - 0x00000000}, + 0x00000000, + {0}}, {{Script_Arabic, 1, 1, 0, 0, 0, 0, { 1,0,0,0,0,0,0,0,0,0,0}}, {LANG_ARABIC, 0, 1, 0, 0, ARABIC_CHARSET, 0, 0, 0, 0, 0, 0, 1, 1, 0}, - MS_MAKE_TAG('a','r','a','b')}, + MS_MAKE_TAG('a','r','a','b'), + {'M','i','c','r','o','s','o','f','t',' ','S','a','n','s',' ','S','e','r','i','f',0}}, {{Script_Arabic_Numeric, 1, 1, 0, 0, 0, 0, { 1,0,0,0,0,0,0,0,0,0,0}}, {LANG_ARABIC, 1, 1, 0, 0, ARABIC_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0}, - MS_MAKE_TAG('a','r','a','b')}, + MS_MAKE_TAG('a','r','a','b'), + {'M','i','c','r','o','s','o','f','t',' ','S','a','n','s',' ','S','e','r','i','f',0}}, {{Script_Hebrew, 1, 1, 0, 0, 0, 0, { 1,0,0,0,0,0,0,0,0,0,0}}, {LANG_HEBREW, 0, 1, 0, 1, HEBREW_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('h','e','b','r')}, + MS_MAKE_TAG('h','e','b','r'), + {'M','i','c','r','o','s','o','f','t',' ','S','a','n','s',' ','S','e','r','i','f',0}}, {{Script_Syriac, 1, 1, 0, 0, 0, 0, { 1,0,0,0,0,0,0,0,0,0,0}}, {LANG_SYRIAC, 0, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 1, 0}, - MS_MAKE_TAG('s','y','r','c')}, + MS_MAKE_TAG('s','y','r','c'), + {'E','s','t','r','a','n','g','e','l','o',' ','E','d','e','s','s','a',0}}, {{Script_Persian, 1, 1, 0, 0, 0, 0, { 1,0,0,0,0,0,0,0,0,0,0}}, {LANG_PERSIAN, 1, 1, 0, 0, ARABIC_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('s','y','r','c')}, + MS_MAKE_TAG('s','y','r','c'), + {'E','s','t','r','a','n','g','e','l','o',' ','E','d','e','s','s','a',0}}, {{Script_Thaana, 1, 1, 0, 0, 0, 0, { 1,0,0,0,0,0,0,0,0,0,0}}, {LANG_DIVEHI, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('t','h','a','a')}, + MS_MAKE_TAG('t','h','a','a'), + {'M','V',' ','B','o','l','i',0}}, {{Script_Greek, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_GREEK, 0, 0, 0, 0, GREEK_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('g','r','e','k')}, + MS_MAKE_TAG('g','r','e','k'), + {0}}, {{Script_Cyrillic, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_RUSSIAN, 0, 0, 0, 0, RUSSIAN_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('c','y','r','l')}, + MS_MAKE_TAG('c','y','r','l'), + {0}}, {{Script_Armenian, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_ARMENIAN, 0, 0, 0, 0, ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0}, - MS_MAKE_TAG('a','r','m','n')}, + MS_MAKE_TAG('a','r','m','n'), + {'S','y','l','f','a','e','n',0}}, {{Script_Georgian, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_GEORGIAN, 0, 0, 0, 0, ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0}, - MS_MAKE_TAG('g','e','o','r')}, + MS_MAKE_TAG('g','e','o','r'), + {'S','y','l','f','a','e','n',0}}, {{Script_Sinhala, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_SINHALESE, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('s','i','n','h')}, + MS_MAKE_TAG('s','i','n','h'), + {'I','s','k','o','o','l','a',' ','P','o','t','a',0}}, {{Script_Tibetan, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_TIBETAN, 0, 1, 1, 1, DEFAULT_CHARSET, 0, 0, 1, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('t','i','b','t')}, + MS_MAKE_TAG('t','i','b','t'), + {'M','i','c','r','o','s','o','f','t',' ','H','i','m','a','l','a','y','a',0}}, {{Script_Tibetan_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_TIBETAN, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('t','i','b','t')}, + MS_MAKE_TAG('t','i','b','t'), + {'M','i','c','r','o','s','o','f','t',' ','H','i','m','a','l','a','y','a',0}}, {{Script_Phags_pa, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_MONGOLIAN, 0, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('p','h','a','g')}, + MS_MAKE_TAG('p','h','a','g'), + {'M','i','c','r','o','s','o','f','t',' ','P','h','a','g','s','P','a',0}}, {{Script_Thai, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_THAI, 0, 1, 1, 1, THAI_CHARSET, 0, 0, 1, 0, 1, 0, 0, 0, 1}, - MS_MAKE_TAG('t','h','a','i')}, + MS_MAKE_TAG('t','h','a','i'), + {'M','i','c','r','o','s','o','f','t',' ','S','a','n','s',' ','S','e','r','i','f',0}}, {{Script_Thai_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_THAI, 1, 1, 0, 0, THAI_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('t','h','a','i')}, + MS_MAKE_TAG('t','h','a','i'), + {'M','i','c','r','o','s','o','f','t',' ','S','a','n','s',' ','S','e','r','i','f',0}}, {{Script_Lao, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_LAO, 0, 1, 1, 1, DEFAULT_CHARSET, 0, 0, 1, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('l','a','o',' ')}, + MS_MAKE_TAG('l','a','o',' '), + {'D','o','k','C','h','a','m','p','a',0}}, {{Script_Lao_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_LAO, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('l','a','o',' ')}, + MS_MAKE_TAG('l','a','o',' '), + {'D','o','k','C','h','a','m','p','a',0}}, {{Script_Devanagari, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_HINDI, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('d','e','v','a')}, + MS_MAKE_TAG('d','e','v','a'), + {'M','a','n','g','a','l',0}}, {{Script_Devanagari_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_HINDI, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('d','e','v','a')}, + MS_MAKE_TAG('d','e','v','a'), + {'M','a','n','g','a','l',0}}, {{Script_Bengali, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_BENGALI, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('b','e','n','g')}, + MS_MAKE_TAG('b','e','n','g'), + {'V','r','i','n','d','a',0}}, {{Script_Bengali_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_BENGALI, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('b','e','n','g')}, + MS_MAKE_TAG('b','e','n','g'), + {'V','r','i','n','d','a',0}}, {{Script_Bengali_Currency, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_BENGALI, 0, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('b','e','n','g')}, + MS_MAKE_TAG('b','e','n','g'), + {'V','r','i','n','d','a',0}}, {{Script_Gurmukhi, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_PUNJABI, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('g','u','r','u')}, + MS_MAKE_TAG('g','u','r','u'), + {'R','a','a','v','i',0}}, {{Script_Gurmukhi_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_PUNJABI, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('g','u','r','u')}, + MS_MAKE_TAG('g','u','r','u'), + {'R','a','a','v','i',0}}, {{Script_Gujarati, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_GUJARATI, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('g','u','j','r')}, + MS_MAKE_TAG('g','u','j','r'), + {'S','h','r','u','t','i',0}}, {{Script_Gujarati_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_GUJARATI, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('g','u','j','r')}, + MS_MAKE_TAG('g','u','j','r'), + {'S','h','r','u','t','i',0}}, {{Script_Gujarati_Currency, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_GUJARATI, 0, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('g','u','j','r')}, + MS_MAKE_TAG('g','u','j','r'), + {'S','h','r','u','t','i',0}}, {{Script_Oriya, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_ORIYA, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('o','r','y','a')}, + MS_MAKE_TAG('o','r','y','a'), + {'K','a','l','i','n','g','a',0}}, {{Script_Oriya_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_ORIYA, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('o','r','y','a')}, + MS_MAKE_TAG('o','r','y','a'), + {'K','a','l','i','n','g','a',0}}, {{Script_Tamil, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_TAMIL, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('t','a','m','l')}, + MS_MAKE_TAG('t','a','m','l'), + {'L','a','t','h','a',0}}, {{Script_Tamil_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_TAMIL, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('t','a','m','l')}, + MS_MAKE_TAG('t','a','m','l'), + {'L','a','t','h','a',0}}, {{Script_Telugu, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_TELUGU, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('t','e','l','u')}, + MS_MAKE_TAG('t','e','l','u'), + {'G','a','u','t','a','m','i',0}}, {{Script_Telugu_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_TELUGU, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('t','e','l','u')}, + MS_MAKE_TAG('t','e','l','u'), + {'G','a','u','t','a','m','i',0}}, {{Script_Kannada, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_KANNADA, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('k','n','d','a')}, + MS_MAKE_TAG('k','n','d','a'), + {'T','u','n','g','a',0}}, {{Script_Kannada_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_KANNADA, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('k','n','d','a')}, + MS_MAKE_TAG('k','n','d','a'), + {'T','u','n','g','a',0}}, {{Script_Malayalam, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_MALAYALAM, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('m','l','y','m')}, + MS_MAKE_TAG('m','l','y','m'), + {'K','a','r','t','i','k','a',0}}, {{Script_Malayalam_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_MALAYALAM, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('m','l','y','m')}, + MS_MAKE_TAG('m','l','y','m'), + {'K','a','r','t','i','k','a',0}}, }; static const SCRIPT_PROPERTIES *script_props[] = @@ -312,6 +358,7 @@ }; typedef struct { + ScriptCache *sc; int numGlyphs; WORD* glyphs; WORD* pwLogClust; @@ -320,6 +367,7 @@ GOFFSET* pGoffset; ABC* abc; int iMaxPosX; + HFONT fallbackFont; } StringGlyphs; typedef struct { @@ -327,7 +375,6 @@ DWORD dwFlags; BOOL invalid; int clip_len; - ScriptCache *sc; int cItems; int cMaxGlyphs; SCRIPT_ITEM* pItem; @@ -897,6 +944,123 @@ return res; } +static inline int getGivenTabWidth(ScriptCache *psc, SCRIPT_TABDEF *pTabdef, int charPos, int current_x) +{ + int defWidth; + int cTabStops=0; + INT *lpTabPos = NULL; + INT nTabOrg = 0; + INT x = 0; + + if (pTabdef) + lpTabPos = pTabdef->pTabStops; + + if (pTabdef && pTabdef->iTabOrigin) + { + if (pTabdef->iScale) + nTabOrg = (pTabdef->iTabOrigin * pTabdef->iScale)/4; + else + nTabOrg = pTabdef->iTabOrigin * psc->tm.tmAveCharWidth; + } + + if (pTabdef) + cTabStops = pTabdef->cTabStops; + + if (cTabStops == 1) + { + if (pTabdef->iScale) + defWidth = ((pTabdef->pTabStops[0])*pTabdef->iScale) / 4; + else + defWidth = (pTabdef->pTabStops[0])*psc->tm.tmAveCharWidth; + cTabStops = 0; + } + else + defWidth = 8 * psc->tm.tmAveCharWidth; + + for (; cTabStops>0 ; lpTabPos++, cTabStops--) + { + int position = *lpTabPos; + if (position < 0) + position = -1 * position; + if (pTabdef->iScale) + position = (position * pTabdef->iScale) / 4; + else + position = position * psc->tm.tmAveCharWidth; + + if( nTabOrg + position > current_x) + { + if( *lpTabPos >= 0) + { + /* a left aligned tab */ + x = (nTabOrg + *lpTabPos) - current_x; + break; + } + else + { + FIXME("Negative tabstop\n"); + break; + } + } + } + if ((!cTabStops) && (defWidth > 0)) + x =((((current_x - nTabOrg) / defWidth)+1) * defWidth) - current_x; + else if ((!cTabStops) && (defWidth < 0)) + FIXME("TODO: Negative defWidth\n"); + + return x; +} + +/*********************************************************************** + * Helper function for ScriptStringAnalyse + */ +static BOOL requires_fallback(HDC hdc, SCRIPT_CACHE *psc, SCRIPT_ANALYSIS *psa, + const WCHAR *pwcInChars, int cChars ) +{ + /* FIXME: When to properly fallback is still a bit of a mystery */ + WORD *glyphs; + + if (psa->fNoGlyphIndex) + return FALSE; + + if (init_script_cache(hdc, psc) != S_OK) + return FALSE; + + if (SHAPE_CheckFontForRequiredFeatures(hdc, (ScriptCache *)*psc, psa) != S_OK) + return TRUE; + + glyphs = heap_alloc(sizeof(WORD) * cChars); + if (!glyphs) + return FALSE; + if (ScriptGetCMap(hdc, psc, pwcInChars, cChars, 0, glyphs) != S_OK) + { + heap_free(glyphs); + return TRUE; + } + heap_free(glyphs); + + return FALSE; +} + +static void find_fallback_font(DWORD scriptid, LPWSTR FaceName) +{ + HKEY hkey; + + if (!RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Wine\\Uniscribe\\Fallback", &hkey)) + { + static const WCHAR szFmt[] = {'%','x',0}; + WCHAR value[10]; + DWORD count = LF_FACESIZE * sizeof(WCHAR); + DWORD type; + + sprintfW(value, szFmt, scriptInformation[scriptid].scriptTag); + if (RegQueryValueExW(hkey, value, 0, &type, (LPBYTE)FaceName, &count)) + lstrcpyW(FaceName,scriptInformation[scriptid].fallbackFont); + RegCloseKey(hkey); + } + else + lstrcpyW(FaceName,scriptInformation[scriptid].fallbackFont); +} + /*********************************************************************** * ScriptStringAnalyse (USP10.@) * @@ -949,6 +1113,11 @@ if (dwFlags & SSA_PASSWORD) { iString = heap_alloc(sizeof(WCHAR)*cString); + if (!iString) + { + hr = E_OUTOFMEMORY; + goto error; + } for (i = 0; i < cString; i++) iString[i] = *((const WCHAR *)pString); pString = iString; @@ -971,6 +1140,9 @@ } if (hr != S_OK) goto error; + /* set back to out of memory for default goto error behaviour */ + hr = E_OUTOFMEMORY; + if (dwFlags & SSA_BREAK) { if ((analysis->logattrs = heap_alloc(sizeof(SCRIPT_LOGATTR) * cString))) @@ -989,12 +1161,13 @@ if (dwFlags & SSA_GLYPHS) { + int tab_x = 0; if (!(analysis->glyphs = heap_alloc_zero(sizeof(StringGlyphs) * analysis->numItems))) goto error; for (i = 0; i < analysis->numItems; i++) { - SCRIPT_CACHE *sc = (SCRIPT_CACHE *)&analysis->sc; + SCRIPT_CACHE *sc = (SCRIPT_CACHE*)&analysis->glyphs[i].sc; int cChar = analysis->pItem[i+1].iCharPos - analysis->pItem[i].iCharPos; int numGlyphs = 1.5 * cChar + 16; WORD *glyphs = heap_alloc_zero(sizeof(WORD) * numGlyphs); @@ -1004,14 +1177,56 @@ GOFFSET *pGoffset = heap_alloc_zero(sizeof(GOFFSET) * numGlyphs); ABC *abc = heap_alloc_zero(sizeof(ABC)); int numGlyphsReturned; + HFONT originalFont = 0x0; /* FIXME: non unicode strings */ const WCHAR* pStr = (const WCHAR*)pString; + analysis->glyphs[i].fallbackFont = NULL; + + if (!glyphs || !pwLogClust || !piAdvance || !psva || !pGoffset || !abc) + { + heap_free (glyphs); + heap_free (pwLogClust); + heap_free (piAdvance); + heap_free (psva); + heap_free (pGoffset); + heap_free (abc); + hr = E_OUTOFMEMORY; + goto error; + } + + if ((dwFlags & SSA_FALLBACK) && requires_fallback(hdc, sc, &analysis->pItem[i].a, &pStr[analysis->pItem[i].iCharPos], cChar)) + { + LOGFONTW lf; + GetObjectW(GetCurrentObject(hdc, OBJ_FONT), sizeof(lf), & lf); + lf.lfCharSet = scriptInformation[analysis->pItem[i].a.eScript].props.bCharSet; + find_fallback_font(analysis->pItem[i].a.eScript, lf.lfFaceName); + analysis->glyphs[i].fallbackFont = CreateFontIndirectW(&lf); + if (analysis->glyphs[i].fallbackFont) + { + ScriptFreeCache(sc); + originalFont = SelectObject(hdc, analysis->glyphs[i].fallbackFont); + } + } + hr = ScriptShape(hdc, sc, &pStr[analysis->pItem[i].iCharPos], cChar, numGlyphs, &analysis->pItem[i].a, glyphs, pwLogClust, psva, &numGlyphsReturned); hr = ScriptPlace(hdc, sc, glyphs, numGlyphsReturned, psva, &analysis->pItem[i].a, piAdvance, pGoffset, abc); + if (originalFont) + SelectObject(hdc,originalFont); + + if (dwFlags & SSA_TAB) + { + int tabi = 0; + for (tabi = 0; tabi < cChar; tabi++) + { + if (pStr[analysis->pItem[i].iCharPos+tabi] == 0x0009) + piAdvance[tabi] = getGivenTabWidth(analysis->glyphs[i].sc, pTabdef, analysis->pItem[i].iCharPos+tabi, tab_x); + tab_x+=piAdvance[tabi]; + } + } analysis->glyphs[i].numGlyphs = numGlyphsReturned; analysis->glyphs[i].glyphs = glyphs; @@ -1044,11 +1259,25 @@ heap_free(analysis->logattrs); heap_free(analysis->pItem); heap_free(analysis->logical2visual); - heap_free(analysis->sc); heap_free(analysis); return hr; } +static inline BOOL does_glyph_start_cluster(const SCRIPT_VISATTR *pva, const WORD *pwLogClust, int cChars, int glyph, int direction) +{ + int i; + + if (pva[glyph].fClusterStart) + return TRUE; + for (i = 0; i < cChars; i++) + if (pwLogClust[i] == glyph) break; + if (i != cChars) + return TRUE; + + return FALSE; +} + + static HRESULT SS_ItemOut( SCRIPT_STRING_ANALYSIS ssa, int iX, int iY, @@ -1068,6 +1297,7 @@ INT BkMode = 0; INT runStart, runEnd; INT iGlyph, cGlyphs; + HFONT oldFont = 0x0; TRACE("(%p,%d,%d,%d,%d,%d, 0x%1x, %d, %d)\n", ssa, iX, iY, iItem, cStart, cEnd, uOptions, fSelected, fDisabled); @@ -1089,8 +1319,9 @@ TextColor = GetTextColor(analysis->hdc); SetTextColor(analysis->hdc, GetSysColor(COLOR_HIGHLIGHTTEXT)); } - } + if (analysis->glyphs[iItem].fallbackFont) + oldFont = SelectObject(analysis->hdc, analysis->glyphs[iItem].fallbackFont); if (cStart >= 0 && analysis->pItem[iItem+1].iCharPos > cStart && analysis->pItem[iItem].iCharPos <= cStart) runStart = cStart - analysis->pItem[iItem].iCharPos; @@ -1128,7 +1359,27 @@ cGlyphs++; - hr = ScriptTextOut(analysis->hdc, (SCRIPT_CACHE *)&analysis->sc, iX + off_x, + if (cEnd < 0 || scriptInformation[analysis->pItem[iItem].a.eScript].props.fNeedsCaretInfo) + { + INT direction; + INT clust_glyph; + + clust_glyph = iGlyph + cGlyphs; + if (analysis->pItem[iItem].a.fRTL) + direction = -1; + else + direction = 1; + + while(clust_glyph < analysis->glyphs[iItem].numGlyphs && + !does_glyph_start_cluster(analysis->glyphs[iItem].psva, analysis->glyphs[iItem].pwLogClust, (analysis->pItem[iItem+1].iCharPos - analysis->pItem[iItem].iCharPos), clust_glyph, direction)) + { + cGlyphs++; + clust_glyph++; + } + } + + hr = ScriptTextOut(analysis->hdc, + (SCRIPT_CACHE *)&analysis->glyphs[iItem].sc, iX + off_x, iY, uOptions, prc, &analysis->pItem[iItem].a, NULL, 0, &analysis->glyphs[iItem].glyphs[iGlyph], cGlyphs, &analysis->glyphs[iItem].piAdvance[iGlyph], NULL, @@ -1143,6 +1394,8 @@ if (!fDisabled) SetTextColor(analysis->hdc, TextColor); } + if (analysis->glyphs[iItem].fallbackFont) + SelectObject(analysis->hdc, oldFont); return hr; } @@ -1369,7 +1622,6 @@ if (!pssa || !(analysis = *pssa)) return E_INVALIDARG; invalid = analysis->invalid; - ScriptFreeCache((SCRIPT_CACHE *)&analysis->sc); if (analysis->glyphs) { @@ -1381,6 +1633,10 @@ heap_free(analysis->glyphs[i].psva); heap_free(analysis->glyphs[i].pGoffset); heap_free(analysis->glyphs[i].abc); + if (analysis->glyphs[i].fallbackFont) + DeleteObject(analysis->glyphs[i].fallbackFont); + ScriptFreeCache((SCRIPT_CACHE *)&analysis->glyphs[i].sc); + heap_free(analysis->glyphs[i].sc); } heap_free(analysis->glyphs); } @@ -1388,7 +1644,6 @@ heap_free(analysis->pItem); heap_free(analysis->logattrs); heap_free(analysis->sz); - heap_free(analysis->sc); heap_free(analysis->logical2visual); heap_free(analysis); @@ -1396,6 +1651,60 @@ return S_OK; } +static inline int get_cluster_size(const WORD *pwLogClust, int cChars, int item, + int direction, int* iCluster, int *check_out) +{ + int clust_size = 1; + int check; + WORD clust = pwLogClust[item]; + + for (check = item+direction; check < cChars && check >= 0; check+=direction) + { + if (pwLogClust[check] == clust) + { + clust_size ++; + if (iCluster && *iCluster == -1) + *iCluster = item; + } + else break; + } + + if (check_out) + *check_out = check; + + return clust_size; +} + +static inline int get_glyph_cluster_advance(const int* piAdvance, const SCRIPT_VISATTR *pva, const WORD *pwLogClust, int cGlyphs, int cChars, int glyph, int direction) +{ + int advance; + int log_clust_max = 0; + int i; + + advance = piAdvance[glyph]; + + for (i = 0; i < cChars; i++) + { + if (pwLogClust[i] > log_clust_max) + log_clust_max = pwLogClust[i]; + } + + if (glyph > log_clust_max) + return advance; + + for (glyph+=direction; glyph < cGlyphs && glyph >= 0; glyph +=direction) + { + + if (does_glyph_start_cluster(pva, pwLogClust, cChars, glyph, direction)) + break; + if (glyph > log_clust_max) + break; + advance += piAdvance[glyph]; + } + + return advance; +} + /*********************************************************************** * ScriptCPtoX (USP10.@) * @@ -1417,6 +1726,7 @@ int clust_size = 1; float special_size = 0.0; int iMaxPos = 0; + int advance = 0; BOOL rtl = FALSE; TRACE("(%d,%d,%d,%d,%p,%p,%p,%p,%p)\n", @@ -1453,35 +1763,46 @@ int check; int clust = pwLogClust[item]; - clust_size = 1; iCluster = -1; + clust_size = get_cluster_size(pwLogClust, cChars, item, 1, &iCluster, + &check); - for (check = item+1; check < cChars; check++) - { - if (pwLogClust[check] == clust) - { - clust_size ++; - if (iCluster == -1) - iCluster = item; - } - else break; - } + advance = get_glyph_cluster_advance(piAdvance, psva, pwLogClust, cGlyphs, cChars, clust, 1); if (check >= cChars && !iMaxPos) { for (check = clust; check < cChars; check++) - special_size += piAdvance[check]; + special_size += get_glyph_cluster_advance(piAdvance, psva, pwLogClust, cGlyphs, cChars, check, 1); iSpecial = item; special_size /= (cChars - item); iPosX += special_size; } else - iPosX += piAdvance[clust] / (float)clust_size; + { + if (scriptInformation[psa->eScript].props.fNeedsCaretInfo) + { + clust_size --; + if (clust_size == 0) + iPosX += advance; + } + else + iPosX += advance / (float)clust_size; + } } else if (iSpecial != -1) iPosX += special_size; else /* (iCluster != -1) */ - iPosX += piAdvance[pwLogClust[iCluster]] / (float)clust_size; + { + int adv = get_glyph_cluster_advance(piAdvance, psva, pwLogClust, cGlyphs, cChars, pwLogClust[iCluster], 1); + if (scriptInformation[psa->eScript].props.fNeedsCaretInfo) + { + clust_size --; + if (clust_size == 0) + iPosX += adv; + } + else + iPosX += adv / (float)clust_size; + } } if (iMaxPos > 0) @@ -1516,6 +1837,8 @@ int iSpecial = -1; int iCluster = -1; int clust_size = 1; + int cjump = 0; + int advance; float special_size = 0.0; int direction = 1; @@ -1572,43 +1895,58 @@ int check; int clust = pwLogClust[item]; - clust_size = 1; iCluster = -1; - - for (check = item+direction; check < cChars && check >= 0; check+=direction) - { - if (pwLogClust[check] == clust) - { - clust_size ++; - if (iCluster == -1) - iCluster = item; - } - else break; - } + cjump = 0; + clust_size = get_cluster_size(pwLogClust, cChars, item, direction, + &iCluster, &check); + advance = get_glyph_cluster_advance(piAdvance, psva, pwLogClust, cGlyphs, cChars, clust, direction); if (check >= cChars && direction > 0) { for (check = clust; check < cChars; check++) - special_size += piAdvance[check]; + special_size += get_glyph_cluster_advance(piAdvance, psva, pwLogClust, cGlyphs, cChars, check, direction); iSpecial = item; special_size /= (cChars - item); iPosX += special_size; } else - iPosX += piAdvance[clust] / (float)clust_size; + { + if (scriptInformation[psa->eScript].props.fNeedsCaretInfo) + { + if (!cjump) + iPosX += advance; + cjump++; + } + else + iPosX += advance / (float)clust_size; + } } else if (iSpecial != -1) iPosX += special_size; else /* (iCluster != -1) */ - iPosX += piAdvance[pwLogClust[iCluster]] / (float)clust_size; + { + int adv = get_glyph_cluster_advance(piAdvance, psva, pwLogClust, cGlyphs, cChars, pwLogClust[iCluster], direction); + if (scriptInformation[psa->eScript].props.fNeedsCaretInfo) + { + if (!cjump) + iPosX += adv; + cjump++; + } + else + iPosX += adv / (float)clust_size; + } } if (direction > 0) { if (iPosX > iX) item--; - if (item < cChars && ((iPosX - iLastPosX) / 2.0) + iX > iPosX) + if (item < cChars && ((iPosX - iLastPosX) / 2.0) + iX >= iPosX) + { + if (scriptInformation[psa->eScript].props.fNeedsCaretInfo && clust_size > 1) + item+=(clust_size-1); *piTrailing = 1; + } else *piTrailing = 0; } @@ -1622,7 +1960,11 @@ if (iLastPosX == iX) *piTrailing = 0; else if (item < 0 || ((iLastPosX - iPosX) / 2.0) + iX <= iLastPosX) + { + if (scriptInformation[psa->eScript].props.fNeedsCaretInfo && clust_size > 1) + item-=(clust_size-1); *piTrailing = 1; + } else *piTrailing = 0; } @@ -1798,6 +2140,9 @@ chInput = mirror_char(pwcChars[idx]); else chInput = pwcChars[idx]; + /* special case for tabs */ + if (chInput == 0x0009) + chInput = 0x0020; if (!(pwOutGlyphs[i] = get_cache_glyph(psc, chInput))) { WORD glyph; @@ -2299,12 +2644,25 @@ for (i = 0; i < analysis->numItems; i++) { int cChar = analysis->pItem[i+1].iCharPos - analysis->pItem[i].iCharPos; + int direction = 1; + + if (analysis->pItem[i].a.fRTL && ! analysis->pItem[i].a.fLogicalOrder) + direction = -1; + for (j = 0; j < cChar; j++) { - + int k; int glyph = analysis->glyphs[i].pwLogClust[j]; - piDx[next] = analysis->glyphs[i].piAdvance[glyph]; - next++; + int clust_size = get_cluster_size(analysis->glyphs[i].pwLogClust, + cChar, j, direction, NULL, NULL); + int advance = get_glyph_cluster_advance(analysis->glyphs[i].piAdvance, analysis->glyphs[i].psva, analysis->glyphs[i].pwLogClust, analysis->glyphs[i].numGlyphs, cChar, glyph, direction); + + for (k = 0; k < clust_size; k++) + { + piDx[next] = advance / clust_size; + next++; + if (k) j++; + } } } return S_OK; @@ -2358,12 +2716,16 @@ if (!analysis->sz) { if (!(analysis->sz = heap_alloc(sizeof(SIZE)))) return NULL; - analysis->sz->cy = analysis->sc->tm.tmHeight; + analysis->sz->cy = analysis->glyphs[0].sc->tm.tmHeight; analysis->sz->cx = 0; for (i = 0; i < analysis->numItems; i++) + { + if (analysis->glyphs[i].sc->tm.tmHeight > analysis->sz->cy) + analysis->sz->cy = analysis->glyphs[i].sc->tm.tmHeight; for (j = 0; j < analysis->glyphs[i].numGlyphs; j++) analysis->sz->cx += analysis->glyphs[i].piAdvance[j]; + } } return analysis->sz; } diff -Nru wine1.3-1.3.30/dlls/vbscript/global.c wine1.3-1.3.31/dlls/vbscript/global.c --- wine1.3-1.3.30/dlls/vbscript/global.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/vbscript/global.c 2011-10-21 18:38:36.000000000 +0000 @@ -16,6 +16,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#include + #include "vbscript.h" #include "vbscript_defs.h" @@ -57,6 +59,32 @@ return ctx->secmgr = secmgr; } +static HRESULT return_bstr(VARIANT *res, const WCHAR *str) +{ + BSTR ret; + + if(!res) + return S_OK; + + ret = SysAllocString(str); + if(!ret) + return E_OUTOFMEMORY; + + V_VT(res) = VT_BSTR; + V_BSTR(res) = ret; + return S_OK; +} + +static HRESULT return_short(VARIANT *res, short val) +{ + if(res) { + V_VT(res) = VT_I2; + V_I2(res) = val; + } + + return S_OK; +} + static IUnknown *create_object(script_ctx_t *ctx, const WCHAR *progid) { IInternetHostSecurityManager *secmgr = NULL; @@ -193,10 +221,51 @@ return E_NOTIMPL; } +static inline WCHAR hex_char(unsigned n) +{ + return n < 10 ? '0'+n : 'A'+n-10; +} + static HRESULT Global_Hex(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) { - FIXME("\n"); - return E_NOTIMPL; + WCHAR buf[17], *ptr; + DWORD n; + + TRACE("%s\n", debugstr_variant(arg)); + + switch(V_VT(arg)) { + case VT_I2: + n = (WORD)V_I2(arg); + break; + case VT_I4: + n = V_I4(arg); + break; + case VT_EMPTY: + n = 0; + break; + case VT_NULL: + if(res) + V_VT(res) = VT_NULL; + return S_OK; + default: + FIXME("unsupported type %s\n", debugstr_variant(arg)); + return E_NOTIMPL; + } + + buf[16] = 0; + ptr = buf+15; + + if(n) { + do { + *ptr-- = hex_char(n & 0xf); + n >>= 4; + }while(n); + ptr++; + }else { + *ptr = '0'; + } + + return return_bstr(res, ptr); } static HRESULT Global_Oct(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) @@ -219,14 +288,28 @@ static HRESULT Global_IsEmpty(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) { - FIXME("\n"); - return E_NOTIMPL; + TRACE("(%s)\n", debugstr_variant(arg)); + + assert(args_cnt == 1); + + if(res) { + V_VT(res) = VT_BOOL; + V_BOOL(res) = V_VT(arg) == VT_EMPTY ? VARIANT_TRUE : VARIANT_FALSE; + } + return S_OK; } static HRESULT Global_IsNull(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) { - FIXME("\n"); - return E_NOTIMPL; + TRACE("(%s)\n", debugstr_variant(arg)); + + assert(args_cnt == 1); + + if(res) { + V_VT(res) = VT_BOOL; + V_BOOL(res) = V_VT(arg) == VT_NULL ? VARIANT_TRUE : VARIANT_FALSE; + } + return S_OK; } static HRESULT Global_IsNumeric(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) @@ -245,8 +328,7 @@ { TRACE("(%s)\n", debugstr_variant(arg)); - if(V_VT(arg) == (VT_VARIANT|VT_BYREF)) - arg = V_VARIANTREF(arg); + assert(args_cnt == 1); if(res) { V_VT(res) = VT_BOOL; @@ -825,44 +907,44 @@ static HRESULT Global_vbSunday(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) { - FIXME("\n"); - return E_NOTIMPL; + TRACE("\n"); + return return_short(res, 1); } static HRESULT Global_vbMonday(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) { - FIXME("\n"); - return E_NOTIMPL; + TRACE("\n"); + return return_short(res, 2); } static HRESULT Global_vbTuesday(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) { - FIXME("\n"); - return E_NOTIMPL; + TRACE("\n"); + return return_short(res, 3); } static HRESULT Global_vbWednesday(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) { - FIXME("\n"); - return E_NOTIMPL; + TRACE("\n"); + return return_short(res, 4); } static HRESULT Global_vbThursday(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) { - FIXME("\n"); - return E_NOTIMPL; + TRACE("\n"); + return return_short(res, 5); } static HRESULT Global_vbFriday(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) { - FIXME("\n"); - return E_NOTIMPL; + TRACE("\n"); + return return_short(res, 6); } static HRESULT Global_vbSaturday(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) { - FIXME("\n"); - return E_NOTIMPL; + TRACE("\n"); + return return_short(res, 7); } static HRESULT Global_vbFirstJan1(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) diff -Nru wine1.3-1.3.30/dlls/vbscript/interp.c wine1.3-1.3.31/dlls/vbscript/interp.c --- wine1.3-1.3.30/dlls/vbscript/interp.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/vbscript/interp.c 2011-10-21 18:38:36.000000000 +0000 @@ -1561,11 +1561,20 @@ #undef X }; +void release_dynamic_vars(dynamic_var_t *var) +{ + while(var) { + VariantClear(&var->v); + var = var->next; + } +} + static void release_exec(exec_ctx_t *ctx) { unsigned i; VariantClear(&ctx->ret_val); + release_dynamic_vars(ctx->dynamic_vars); if(ctx->this_obj) IDispatch_Release(ctx->this_obj); diff -Nru wine1.3-1.3.30/dlls/vbscript/lex.c wine1.3-1.3.31/dlls/vbscript/lex.c --- wine1.3-1.3.30/dlls/vbscript/lex.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/vbscript/lex.c 2011-10-21 18:38:36.000000000 +0000 @@ -294,12 +294,14 @@ while((d = hex_to_int(*++ctx->ptr)) != -1) l = l*16 + d; - if(begin + 9 /* max digits+1 */ < ctx->ptr || *ctx->ptr != '&') { + if(begin + 9 /* max digits+1 */ < ctx->ptr || (*ctx->ptr != '&' && is_identifier_char(*ctx->ptr))) { FIXME("invalid literal\n"); return 0; } - ctx->ptr++; + if(*ctx->ptr == '&') + ctx->ptr++; + *ret = l; return (short)l == l ? tShort : tLong; } @@ -354,6 +356,7 @@ case '^': case '\\': case '.': + case '_': return *ctx->ptr++; case '(': /* NOTE: @@ -402,6 +405,15 @@ while(1) { ret = parse_next_token(lval, ctx); + if(ret == '_') { + skip_spaces(ctx); + if(*ctx->ptr != '\n') { + FIXME("'_' not followed by newline\n"); + return 0; + } + ctx->ptr++; + continue; + } if(ret != tNL || ctx->last_token != tNL) break; diff -Nru wine1.3-1.3.30/dlls/vbscript/tests/api.vbs wine1.3-1.3.31/dlls/vbscript/tests/api.vbs --- wine1.3-1.3.30/dlls/vbscript/tests/api.vbs 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/vbscript/tests/api.vbs 2011-10-21 18:38:36.000000000 +0000 @@ -23,6 +23,21 @@ Class EmptyClass End Class +Call ok(vbSunday = 1, "vbSunday = " & vbSunday) +Call ok(getVT(vbSunday) = "VT_I2", "getVT(vbSunday) = " & getVT(vbSunday)) +Call ok(vbMonday = 2, "vbMonday = " & vbMonday) +Call ok(getVT(vbMonday) = "VT_I2", "getVT(vbMonday) = " & getVT(vbMonday)) +Call ok(vbTuesday = 3, "vbTuesday = " & vbTuesday) +Call ok(getVT(vbTuesday) = "VT_I2", "getVT(vbTuesday) = " & getVT(vbTuesday)) +Call ok(vbWednesday = 4, "vbWednesday = " & vbWednesday) +Call ok(getVT(vbWednesday) = "VT_I2", "getVT(vbWednesday) = " & getVT(vbWednesday)) +Call ok(vbThursday = 5, "vbThursday = " & vbThursday) +Call ok(getVT(vbThursday) = "VT_I2", "getVT(vbThursday) = " & getVT(vbThursday)) +Call ok(vbFriday = 6, "vbFriday = " & vbFriday) +Call ok(getVT(vbFriday) = "VT_I2", "getVT(vbFriday) = " & getVT(vbFriday)) +Call ok(vbSaturday = 7, "vbSaturday = " & vbSaturday) +Call ok(getVT(vbSaturday) = "VT_I2", "getVT(vbSaturday) = " & getVT(vbSaturday)) + Call ok(isObject(new EmptyClass), "isObject(new EmptyClass) is not true?") Set x = new EmptyClass Call ok(isObject(x), "isObject(x) is not true?") @@ -32,6 +47,46 @@ Call ok(not isObject("x"), "isObject(""x"") is true?") Call ok(not isObject(Null), "isObject(Null) is true?") +Call ok(not isEmpty(new EmptyClass), "isEmpty(new EmptyClass) is true?") +Set x = new EmptyClass +Call ok(not isEmpty(x), "isEmpty(x) is true?") +x = empty +Call ok(isEmpty(x), "isEmpty(x) is not true?") +Call ok(isEmpty(empty), "isEmpty(empty) is not true?") +Call ok(not isEmpty(Nothing), "isEmpty(Nothing) is not true?") +Call ok(not isEmpty(true), "isEmpty(true) is true?") +Call ok(not isEmpty(4), "isEmpty(4) is true?") +Call ok(not isEmpty("x"), "isEmpty(""x"") is true?") +Call ok(not isEmpty(Null), "isEmpty(Null) is true?") + +Call ok(not isNull(new EmptyClass), "isNull(new EmptyClass) is true?") +Set x = new EmptyClass +Call ok(not isNull(x), "isNull(x) is true?") +x = null +Call ok(isNull(x), "isNull(x) is not true?") +Call ok(not isNull(empty), "isNull(empty) is true?") +Call ok(not isNull(Nothing), "isNull(Nothing) is true?") +Call ok(not isNull(true), "isNull(true) is true?") +Call ok(not isNull(4), "isNull(4) is true?") +Call ok(not isNull("x"), "isNull(""x"") is true?") +Call ok(isNull(Null), "isNull(Null) is not true?") + Call ok(getVT(err) = "VT_DISPATCH", "getVT(err) = " & getVT(err)) +Sub TestHex(x, ex) + Call ok(hex(x) = ex, "hex(" & x & ") = " & hex(x) & " expected " & ex) +End Sub + +TestHex 0, "0" +TestHex 6, "6" +TestHex 16, "10" +TestHex &hdeadbeef&, "DEADBEEF" +TestHex -1, "FFFF" +TestHex -16, "FFF0" +TestHex -934859845, "C8472BBB" +TestHex empty, "0" + +Call ok(getVT(hex(null)) = "VT_NULL", "getVT(hex(null)) = " & getVT(hex(null))) +Call ok(getVT(hex(empty)) = "VT_BSTR", "getVT(hex(empty)) = " & getVT(hex(empty))) + Call reportSuccess() diff -Nru wine1.3-1.3.30/dlls/vbscript/tests/lang.vbs wine1.3-1.3.31/dlls/vbscript/tests/lang.vbs --- wine1.3-1.3.30/dlls/vbscript/tests/lang.vbs 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/vbscript/tests/lang.vbs 2011-10-21 18:38:36.000000000 +0000 @@ -43,6 +43,8 @@ Call ok(-empty = 0, "-empty = " & (-empty)) Call ok(true = -1, "! true = -1") Call ok(false = 0, "false <> 0") +Call ok(&hff = 255, "&hff <> 255") +Call ok(&Hff = 255, "&Hff <> 255") x = "xx" Call ok(x = "xx", "x = " & x & " expected ""xx""") @@ -177,6 +179,13 @@ Call ok(-3^2 = 9, "-3^2 = " & (-3^2)) Call ok(2*3^2 = 18, "2*3^2 = " & (2*3^2)) +x =_ + 3 +x _ + = 3 + +x = 3 + if true then y = true : x = y ok x, "x is false" diff -Nru wine1.3-1.3.30/dlls/vbscript/tests/run.c wine1.3-1.3.31/dlls/vbscript/tests/run.c --- wine1.3-1.3.30/dlls/vbscript/tests/run.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/vbscript/tests/run.c 2011-10-21 18:38:36.000000000 +0000 @@ -74,6 +74,7 @@ #define DISPID_GLOBAL_TESTOBJ 1006 #define DISPID_GLOBAL_ISNULLDISP 1007 #define DISPID_GLOBAL_TESTDISP 1008 +#define DISPID_GLOBAL_REFOBJ 1009 #define DISPID_TESTOBJ_PROPGET 2000 #define DISPID_TESTOBJ_PROPPUT 2001 @@ -342,6 +343,7 @@ else return E_NOINTERFACE; + IUnknown_AddRef((IUnknown*)*ppv); return S_OK; } @@ -420,6 +422,19 @@ return E_NOTIMPL; } +static HRESULT WINAPI DispatchEx_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI DispatchEx_InvokeEx(IDispatchEx *iface, DISPID id, LCID lcid, WORD wFlags, DISPPARAMS *pdp, + VARIANT *pvarRes, EXCEPINFO *pei, IServiceProvider *pspCaller) +{ + ok(0, "unexpected call\n"); + return E_NOTIMPL; +} + static HRESULT WINAPI testObj_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid) { if(!strcmp_wa(bstrName, "propget")) { @@ -500,6 +515,38 @@ static IDispatchEx testObj = { &testObjVtbl }; +static ULONG refobj_ref; + +static ULONG WINAPI RefObj_AddRef(IDispatchEx *iface) +{ + return ++refobj_ref; +} + +static ULONG WINAPI RefObj_Release(IDispatchEx *iface) +{ + return --refobj_ref; +} + +static IDispatchExVtbl RefObjVtbl = { + DispatchEx_QueryInterface, + RefObj_AddRef, + RefObj_Release, + DispatchEx_GetTypeInfoCount, + DispatchEx_GetTypeInfo, + DispatchEx_GetIDsOfNames, + DispatchEx_Invoke, + DispatchEx_GetDispID, + DispatchEx_InvokeEx, + DispatchEx_DeleteMemberByName, + DispatchEx_DeleteMemberByDispID, + DispatchEx_GetMemberProperties, + DispatchEx_GetMemberName, + DispatchEx_GetNextDispID, + DispatchEx_GetNameSpaceParent +}; + +static IDispatchEx RefObj = { &RefObjVtbl }; + static HRESULT WINAPI Global_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid) { if(!strcmp_wa(bstrName, "ok")) { @@ -549,6 +596,11 @@ *pid = DISPID_GLOBAL_TESTDISP; return S_OK; } + if(!strcmp_wa(bstrName, "RefObj")) { + test_grfdex(grfdex, fdexNameCaseInsensitive); + *pid = DISPID_GLOBAL_REFOBJ; + return S_OK; + } if(strict_dispid_check && strcmp_wa(bstrName, "x")) ok(0, "unexpected call %s %x\n", wine_dbgstr_w(bstrName), grfdex); @@ -679,6 +731,22 @@ V_DISPATCH(pvarRes) = (IDispatch*)&testObj; return S_OK; + case DISPID_GLOBAL_REFOBJ: + ok(wFlags == (DISPATCH_PROPERTYGET|DISPATCH_METHOD), "wFlags = %x\n", wFlags); + + ok(pdp != NULL, "pdp == NULL\n"); + ok(!pdp->rgvarg, "rgvarg == NULL\n"); + ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n"); + ok(!pdp->cArgs, "cArgs = %d\n", pdp->cArgs); + ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs); + ok(pvarRes != NULL, "pvarRes == NULL\n"); + ok(pei != NULL, "pei == NULL\n"); + + IDispatchEx_AddRef(&RefObj); + V_VT(pvarRes) = VT_DISPATCH; + V_DISPATCH(pvarRes) = (IDispatch*)&RefObj; + return S_OK; + case DISPID_GLOBAL_ISNULLDISP: { VARIANT *v; @@ -850,6 +918,7 @@ IActiveScriptParse *parser; IActiveScript *engine; IDispatch *script_disp; + LONG ref; HRESULT hres; engine = create_script(); @@ -888,8 +957,9 @@ IDispatch_Release(script_disp); IActiveScript_Release(engine); - IUnknown_Release(parser); + ref = IUnknown_Release(parser); + ok(!ref, "ref=%d\n", ref); return hres; } @@ -964,6 +1034,63 @@ IUnknown_Release(parser); } +static HRESULT test_global_vars_ref(BOOL use_close) +{ + IActiveScriptParse *parser; + IActiveScript *engine; + BSTR script_str; + LONG ref; + HRESULT hres; + + engine = create_script(); + if(!engine) + return S_OK; + + hres = IActiveScript_QueryInterface(engine, &IID_IActiveScriptParse, (void**)&parser); + ok(hres == S_OK, "Could not get IActiveScriptParse: %08x\n", hres); + if (FAILED(hres)) + { + IActiveScript_Release(engine); + return hres; + } + + hres = IActiveScriptParse64_InitNew(parser); + ok(hres == S_OK, "InitNew failed: %08x\n", hres); + + hres = IActiveScript_SetScriptSite(engine, &ActiveScriptSite); + ok(hres == S_OK, "SetScriptSite failed: %08x\n", hres); + + hres = IActiveScript_AddNamedItem(engine, testW, SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|SCRIPTITEM_GLOBALMEMBERS); + ok(hres == S_OK, "AddNamedItem failed: %08x\n", hres); + + hres = IActiveScript_SetScriptState(engine, SCRIPTSTATE_STARTED); + ok(hres == S_OK, "SetScriptState(SCRIPTSTATE_STARTED) failed: %08x\n", hres); + + refobj_ref = 0; + + script_str = a2bstr("Dim x\nset x = RefObj\n"); + hres = IActiveScriptParse64_ParseScriptText(parser, script_str, NULL, NULL, NULL, 0, 0, 0, NULL, NULL); + SysFreeString(script_str); + + ok(refobj_ref, "refobj_ref = 0\n"); + + if(use_close) { + hres = IActiveScript_Close(engine); + ok(hres == S_OK, "Close failed: %08x\n", hres); + }else { + hres = IActiveScript_SetScriptState(engine, SCRIPTSTATE_UNINITIALIZED); + ok(hres == S_OK, "SetScriptState(SCRIPTSTATE_STARTED) failed: %08x\n", hres); + } + + ok(!refobj_ref, "refobj_ref = %d\n", refobj_ref); + + IActiveScript_Release(engine); + + ref = IUnknown_Release(parser); + ok(!ref, "ref=%d\n", ref); + return hres; +} + static BSTR get_script_from_file(const char *filename) { DWORD size, len; @@ -1099,6 +1226,11 @@ parse_script_a("x = 1\n Call ok(x = 1, \"x = \" & x)"); + parse_script_a("x = _ \n3"); + + test_global_vars_ref(TRUE); + test_global_vars_ref(FALSE); + strict_dispid_check = FALSE; parse_script_a("Sub testsub\n" diff -Nru wine1.3-1.3.30/dlls/vbscript/tests/vbscript.c wine1.3-1.3.31/dlls/vbscript/tests/vbscript.c --- wine1.3-1.3.30/dlls/vbscript/tests/vbscript.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/vbscript/tests/vbscript.c 2011-10-21 18:38:36.000000000 +0000 @@ -471,12 +471,130 @@ test_state(script, SCRIPTSTATE_CLOSED); + SET_EXPECT(GetLCID); + SET_EXPECT(OnStateChange_INITIALIZED); + hres = IActiveScript_SetScriptSite(script, &ActiveScriptSite); + ok(hres == S_OK, "SetScriptSite failed: %08x\n", hres); + CHECK_CALLED(GetLCID); + CHECK_CALLED(OnStateChange_INITIALIZED); + + test_state(script, SCRIPTSTATE_INITIALIZED); + + SET_EXPECT(OnStateChange_CLOSED); + hres = IActiveScript_Close(script); + ok(hres == S_OK, "Close failed: %08x\n", hres); + CHECK_CALLED(OnStateChange_CLOSED); + + test_state(script, SCRIPTSTATE_CLOSED); + IUnknown_Release(parse); ref = IActiveScript_Release(script); ok(!ref, "ref = %d\n", ref); } +static void test_vbscript_release(void) +{ + IActiveScriptParse *parser; + IActiveScript *vbscript; + ULONG ref; + HRESULT hres; + + vbscript = create_vbscript(); + + hres = IActiveScript_QueryInterface(vbscript, &IID_IActiveScriptParse, (void**)&parser); + ok(hres == S_OK, "Could not get IActiveScriptParse iface: %08x\n", hres); + + test_state(vbscript, SCRIPTSTATE_UNINITIALIZED); + test_safety(vbscript); + + SET_EXPECT(GetLCID); + hres = IActiveScript_SetScriptSite(vbscript, &ActiveScriptSite); + ok(hres == S_OK, "SetScriptSite failed: %08x\n", hres); + CHECK_CALLED(GetLCID); + + test_state(vbscript, SCRIPTSTATE_UNINITIALIZED); + + SET_EXPECT(OnStateChange_INITIALIZED); + hres = IActiveScriptParse64_InitNew(parser); + ok(hres == S_OK, "InitNew failed: %08x\n", hres); + CHECK_CALLED(OnStateChange_INITIALIZED); + + test_state(vbscript, SCRIPTSTATE_INITIALIZED); + + SET_EXPECT(OnStateChange_CONNECTED); + hres = IActiveScript_SetScriptState(vbscript, SCRIPTSTATE_CONNECTED); + ok(hres == S_OK, "SetScriptState(SCRIPTSTATE_CONNECTED) failed: %08x\n", hres); + CHECK_CALLED(OnStateChange_CONNECTED); + + test_state(vbscript, SCRIPTSTATE_CONNECTED); + + IActiveScriptParse64_Release(parser); + + SET_EXPECT(OnStateChange_DISCONNECTED); + SET_EXPECT(OnStateChange_INITIALIZED); + SET_EXPECT(OnStateChange_CLOSED); + ref = IActiveScript_Release(vbscript); + ok(!ref, "ref = %d\n", ref); + CHECK_CALLED(OnStateChange_DISCONNECTED); + CHECK_CALLED(OnStateChange_INITIALIZED); + CHECK_CALLED(OnStateChange_CLOSED); +} + +static void test_vbscript_simplecreate(void) +{ + IActiveScript *script; + ULONG ref; + HRESULT hres; + + script = create_vbscript(); + + hres = IActiveScript_SetScriptState(script, SCRIPTSTATE_UNINITIALIZED); + ok(hres == S_OK, "SetScriptState(SCRIPTSTATE_UNINITIALIZED) failed: %08x\n", hres); + + ref = IActiveScript_Release(script); + ok(!ref, "ref = %d\n", ref); +} + +static void test_vbscript_initializing(void) +{ + IActiveScriptParse *parse; + IActiveScript *script; + ULONG ref; + HRESULT hres; + + script = create_vbscript(); + + hres = IActiveScript_QueryInterface(script, &IID_IActiveScriptParse, (void**)&parse); + ok(hres == S_OK, "Could not get IActiveScriptParse: %08x\n", hres); + + test_state(script, SCRIPTSTATE_UNINITIALIZED); + + SET_EXPECT(GetLCID); + hres = IActiveScript_SetScriptSite(script, &ActiveScriptSite); + ok(hres == S_OK, "SetScriptSite failed: %08x\n", hres); + CHECK_CALLED(GetLCID); + + SET_EXPECT(OnStateChange_INITIALIZED); + hres = IActiveScriptParse64_InitNew(parse); + ok(hres == S_OK, "InitNew failed: %08x\n", hres); + CHECK_CALLED(OnStateChange_INITIALIZED); + + hres = IActiveScript_SetScriptSite(script, &ActiveScriptSite); + ok(hres == E_UNEXPECTED, "SetScriptSite failed: %08x, expected E_UNEXPECTED\n", hres); + + SET_EXPECT(OnStateChange_CLOSED); + hres = IActiveScript_Close(script); + ok(hres == S_OK, "Close failed: %08x\n", hres); + CHECK_CALLED(OnStateChange_CLOSED); + + test_state(script, SCRIPTSTATE_CLOSED); + + IUnknown_Release(parse); + + ref = IActiveScript_Release(script); + ok(!ref, "ref = %d\n", ref); +} static BOOL check_vbscript(void) { @@ -498,6 +616,9 @@ if(check_vbscript()) { test_vbscript(); test_vbscript_uninitializing(); + test_vbscript_release(); + test_vbscript_simplecreate(); + test_vbscript_initializing(); }else { win_skip("VBScript engine not available\n"); } diff -Nru wine1.3-1.3.30/dlls/vbscript/vbdisp.c wine1.3-1.3.31/dlls/vbscript/vbdisp.c --- wine1.3-1.3.30/dlls/vbscript/vbdisp.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/vbscript/vbdisp.c 2011-10-21 18:38:36.000000000 +0000 @@ -133,6 +133,8 @@ static HRESULT invoke_builtin(vbdisp_t *This, const builtin_prop_t *prop, WORD flags, DISPPARAMS *dp, VARIANT *res) { + VARIANT *args; + switch(flags) { case DISPATCH_PROPERTYGET: if(!(prop->flags & (BP_GET|BP_GETPUT))) { @@ -166,7 +168,12 @@ return E_FAIL; } - return prop->proc(This, dp->rgvarg, dp->cArgs, res); + if(arg_cnt(dp) == 1 && V_VT(dp->rgvarg) == (VT_BYREF|VT_VARIANT)) + args = V_VARIANTREF(dp->rgvarg); + else + args = dp->rgvarg; + + return prop->proc(This, args, dp->cArgs, res); } static BOOL run_terminator(vbdisp_t *This) @@ -488,10 +495,14 @@ LIST_FOR_EACH_ENTRY_SAFE(iter, iter2, &ctx->objects, vbdisp_t, entry) run_terminator(iter); - LIST_FOR_EACH_ENTRY_SAFE(iter, iter2, &ctx->objects, vbdisp_t, entry) { + while(!list_empty(&ctx->objects)) { + iter = LIST_ENTRY(list_head(&ctx->objects), vbdisp_t, entry); + IDispatchEx_AddRef(&iter->IDispatchEx_iface); clean_props(iter); iter->desc = NULL; + list_remove(&iter->entry); + list_init(&iter->entry); IDispatchEx_Release(&iter->IDispatchEx_iface); } } diff -Nru wine1.3-1.3.30/dlls/vbscript/vbscript.c wine1.3-1.3.31/dlls/vbscript/vbscript.c --- wine1.3-1.3.30/dlls/vbscript/vbscript.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/vbscript/vbscript.c 2011-10-21 18:38:36.000000000 +0000 @@ -110,12 +110,12 @@ return S_OK; } -static void destroy_script(script_ctx_t *ctx) +static void release_script(script_ctx_t *ctx) { collect_objects(ctx); - while(!list_empty(&ctx->code_list)) - release_vbscode(LIST_ENTRY(list_head(&ctx->code_list), vbscode_t, entry)); + release_dynamic_vars(ctx->global_vars); + ctx->global_vars = NULL; while(!list_empty(&ctx->named_items)) { named_item_t *iter = LIST_ENTRY(list_head(&ctx->named_items), named_item_t, entry); @@ -127,19 +127,46 @@ heap_free(iter); } - if(ctx->host_global) + if(ctx->host_global) { IDispatch_Release(ctx->host_global); - if(ctx->secmgr) + ctx->host_global = NULL; + } + + if(ctx->secmgr) { IInternetHostSecurityManager_Release(ctx->secmgr); - if(ctx->site) + ctx->secmgr = NULL; + } + + if(ctx->site) { IActiveScriptSite_Release(ctx->site); - if(ctx->err_obj) + ctx->site = NULL; + } + + if(ctx->err_obj) { IDispatchEx_Release(&ctx->err_obj->IDispatchEx_iface); - if(ctx->global_obj) + ctx->err_obj = NULL; + } + + if(ctx->global_obj) { IDispatchEx_Release(&ctx->global_obj->IDispatchEx_iface); - if(ctx->script_obj) + ctx->global_obj = NULL; + } + + if(ctx->script_obj) { IDispatchEx_Release(&ctx->script_obj->IDispatchEx_iface); + ctx->script_obj = NULL; + } + vbsheap_free(&ctx->heap); + vbsheap_init(&ctx->heap); +} + +static void destroy_script(script_ctx_t *ctx) +{ + while(!list_empty(&ctx->code_list)) + release_vbscode(LIST_ENTRY(list_head(&ctx->code_list), vbscode_t, entry)); + + release_script(ctx); heap_free(ctx); } @@ -167,13 +194,12 @@ This->site = NULL; } - This->thread_id = 0; - - if(state == SCRIPTSTATE_CLOSED) { - destroy_script(This->ctx); - This->ctx = NULL; - } + if(This->ctx) + release_script(This->ctx); + This->thread_id = 0; + break; + case SCRIPTSTATE_CLOSED: break; default: assert(0); @@ -229,6 +255,11 @@ TRACE("(%p) ref=%d\n", iface, ref); if(!ref) { + if(This->ctx) { + decrease_state(This, SCRIPTSTATE_CLOSED); + destroy_script(This->ctx); + This->ctx = NULL; + } if(This->site) IActiveScriptSite_Release(This->site); heap_free(This); @@ -413,7 +444,7 @@ if(!ppdisp) return E_POINTER; - if(This->thread_id != GetCurrentThreadId() || !This->ctx->script_obj) { + if(This->thread_id != GetCurrentThreadId() || !This->ctx || !This->ctx->script_obj) { *ppdisp = NULL; return E_UNEXPECTED; } diff -Nru wine1.3-1.3.30/dlls/vbscript/vbscript.h wine1.3-1.3.31/dlls/vbscript/vbscript.h --- wine1.3-1.3.30/dlls/vbscript/vbscript.h 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/vbscript/vbscript.h 2011-10-21 18:38:36.000000000 +0000 @@ -309,6 +309,7 @@ void release_vbscode(vbscode_t*) DECLSPEC_HIDDEN; HRESULT compile_script(script_ctx_t*,const WCHAR*,vbscode_t**) DECLSPEC_HIDDEN; HRESULT exec_script(script_ctx_t*,function_t*,IDispatch*,DISPPARAMS*,VARIANT*) DECLSPEC_HIDDEN; +void release_dynamic_vars(dynamic_var_t*) DECLSPEC_HIDDEN; #define TID_LIST \ XDIID(ErrObj) \ diff -Nru wine1.3-1.3.30/dlls/windowscodecs/pngformat.c wine1.3-1.3.31/dlls/windowscodecs/pngformat.c --- wine1.3-1.3.30/dlls/windowscodecs/pngformat.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/windowscodecs/pngformat.c 2011-10-21 18:38:36.000000000 +0000 @@ -364,6 +364,7 @@ case PNG_COLOR_TYPE_GRAY_ALPHA: /* WIC does not support grayscale alpha formats so use RGBA */ ppng_set_gray_to_rgb(This->png_ptr); + /* fall through */ case PNG_COLOR_TYPE_RGB_ALPHA: This->bpp = bit_depth * 4; switch (bit_depth) diff -Nru wine1.3-1.3.30/dlls/windowscodecs/regsvr.c wine1.3-1.3.31/dlls/windowscodecs/regsvr.c --- wine1.3-1.3.30/dlls/windowscodecs/regsvr.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/windowscodecs/regsvr.c 2011-10-21 18:38:36.000000000 +0000 @@ -720,7 +720,7 @@ {0} }; -static const BYTE jpeg_magic[] = {0xff, 0xd8, 0xff, 0xe0}; +static const BYTE jpeg_magic[] = {0xff, 0xd8}; static GUID const * const jpeg_formats[] = { &GUID_WICPixelFormat24bppBGR, @@ -730,7 +730,7 @@ }; static struct decoder_pattern const jpeg_patterns[] = { - {4,0,jpeg_magic,mask_all,0}, + {2,0,jpeg_magic,mask_all,0}, {0} }; diff -Nru wine1.3-1.3.30/dlls/windowscodecs/tiffformat.c wine1.3-1.3.31/dlls/windowscodecs/tiffformat.c --- wine1.3-1.3.30/dlls/windowscodecs/tiffformat.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/windowscodecs/tiffformat.c 2011-10-21 18:38:36.000000000 +0000 @@ -295,6 +295,7 @@ { case 0: /* WhiteIsZero */ decode_info->invert_grayscale = 1; + /* fall through */ case 1: /* BlackIsZero */ if (samples != 1) { diff -Nru wine1.3-1.3.30/dlls/winealsa.drv/midi.c wine1.3-1.3.31/dlls/winealsa.drv/midi.c --- wine1.3-1.3.30/dlls/winealsa.drv/midi.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/winealsa.drv/midi.c 2011-10-21 18:38:36.000000000 +0000 @@ -1314,6 +1314,7 @@ switch (wMsg) { case DRVM_INIT: ALSA_MidiInit(); + return 0; case DRVM_EXIT: case DRVM_ENABLE: case DRVM_DISABLE: @@ -1357,6 +1358,7 @@ switch (wMsg) { case DRVM_INIT: ALSA_MidiInit(); + return 0; case DRVM_EXIT: case DRVM_ENABLE: case DRVM_DISABLE: diff -Nru wine1.3-1.3.30/dlls/winealsa.drv/mmdevdrv.c wine1.3-1.3.31/dlls/winealsa.drv/mmdevdrv.c --- wine1.3-1.3.30/dlls/winealsa.drv/mmdevdrv.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/winealsa.drv/mmdevdrv.c 2011-10-21 18:38:36.000000000 +0000 @@ -50,8 +50,8 @@ #define NULL_PTR_ERR MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, RPC_X_NULL_REF_POINTER) -static const REFERENCE_TIME DefaultPeriod = 200000; -static const REFERENCE_TIME MinimumPeriod = 100000; +static const REFERENCE_TIME DefaultPeriod = 100000; +static const REFERENCE_TIME MinimumPeriod = 50000; struct ACImpl; typedef struct ACImpl ACImpl; @@ -94,7 +94,7 @@ LONG ref; snd_pcm_t *pcm_handle; - snd_pcm_uframes_t period_alsa, bufsize_alsa; + snd_pcm_uframes_t alsa_bufsize_frames; snd_pcm_hw_params_t *hw_params; /* does not hold state between calls */ snd_pcm_format_t alsa_format; @@ -108,8 +108,9 @@ float *vols; BOOL initted, started; + REFERENCE_TIME mmdev_period_rt; UINT64 written_frames; - UINT32 bufsize_frames, held_frames, tmp_buffer_frames, period_us; + UINT32 bufsize_frames, held_frames, tmp_buffer_frames; UINT32 lcl_offs_frames; /* offs into local_buffer where valid data starts */ HANDLE timer; @@ -235,49 +236,6 @@ return Priority_Neutral; } -/************************************************************************** - * wine_snd_pcm_recover [internal] - * - * Code slightly modified from alsa-lib v1.0.23 snd_pcm_recover implementation. - * used to recover from XRUN errors (buffer underflow/overflow) - */ -static int wine_snd_pcm_recover(snd_pcm_t *pcm, int err, int silent) -{ - if (err > 0) - err = -err; - if (err == -EINTR) /* nothing to do, continue */ - return 0; - if (err == -EPIPE) { - const char *s; - if (snd_pcm_stream(pcm) == SND_PCM_STREAM_PLAYBACK) - s = "underrun"; - else - s = "overrun"; - if (!silent) - ERR("%s occurred\n", s); - err = snd_pcm_prepare(pcm); - if (err < 0) { - ERR("cannot recover from %s, prepare failed: %s\n", s, snd_strerror(err)); - return err; - } - return 0; - } - if (err == -ESTRPIPE) { - while ((err = snd_pcm_resume(pcm)) == -EAGAIN) - /* wait until suspend flag is released */ - poll(NULL, 0, 1000); - if (err < 0) { - err = snd_pcm_prepare(pcm); - if (err < 0) { - ERR("cannot recover from suspend, prepare failed: %s\n", snd_strerror(err)); - return err; - } - } - return 0; - } - return err; -} - static BOOL alsa_try_open(const char *devnode, snd_pcm_stream_t stream) { snd_pcm_t *handle; @@ -300,7 +258,7 @@ int err, device; snd_pcm_info_t *info; - info = HeapAlloc(GetProcessHeap(), 0, snd_pcm_info_sizeof()); + info = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, snd_pcm_info_sizeof()); if(!info) return E_OUTOFMEMORY; @@ -622,8 +580,8 @@ This->hw_params = HeapAlloc(GetProcessHeap(), 0, snd_pcm_hw_params_sizeof()); if(!This->hw_params){ - HeapFree(GetProcessHeap(), 0, This); snd_pcm_close(This->pcm_handle); + HeapFree(GetProcessHeap(), 0, This); return E_OUTOFMEMORY; } @@ -836,9 +794,9 @@ ACImpl *This = impl_from_IAudioClient(iface); snd_pcm_sw_params_t *sw_params = NULL; snd_pcm_format_t format; - snd_pcm_uframes_t boundary; + snd_pcm_uframes_t alsa_period_frames; const WAVEFORMATEXTENSIBLE *fmtex = (const WAVEFORMATEXTENSIBLE *)fmt; - unsigned int time_us, rate; + unsigned int rate, mmdev_period_frames, alsa_period_us; int err, i; HRESULT hr = S_OK; @@ -863,6 +821,9 @@ return E_INVALIDARG; } + if(!duration) + duration = 300000; /* 0.03s */ + EnterCriticalSection(&This->lock); if(This->initted){ @@ -946,10 +907,10 @@ goto exit; } - time_us = MinimumPeriod / 10; + alsa_period_us = duration / 100; /* duration / 10 converted to us */ if((err = snd_pcm_hw_params_set_period_time_near(This->pcm_handle, - This->hw_params, &time_us, NULL)) < 0){ - WARN("Unable to set max period time to %u: %d (%s)\n", time_us, + This->hw_params, &alsa_period_us, NULL)) < 0){ + WARN("Unable to set period time near %u: %d (%s)\n", alsa_period_us, err, snd_strerror(err)); hr = E_FAIL; goto exit; @@ -961,71 +922,56 @@ goto exit; } - sw_params = HeapAlloc(GetProcessHeap(), 0, snd_pcm_sw_params_sizeof()); - if(!sw_params){ - hr = E_OUTOFMEMORY; - goto exit; - } - - if((err = snd_pcm_sw_params_current(This->pcm_handle, sw_params)) < 0){ - WARN("Unable to get sw_params: %d (%s)\n", err, snd_strerror(err)); + if((err = snd_pcm_hw_params_current(This->pcm_handle, This->hw_params)) < 0){ + WARN("Unable to get current hw params: %d (%s)\n", err, snd_strerror(err)); hr = E_FAIL; goto exit; } - if(!duration) - duration = 300000; /* 0.03s */ - This->bufsize_frames = ceil((duration / 10000000.) * fmt->nSamplesPerSec); - This->local_buffer = HeapAlloc(GetProcessHeap(), 0, - This->bufsize_frames * fmt->nBlockAlign); - if(!This->local_buffer){ - hr = E_OUTOFMEMORY; + if((err = snd_pcm_hw_params_get_period_size(This->hw_params, + &alsa_period_frames, NULL)) < 0){ + WARN("Unable to get period size: %d (%s)\n", err, snd_strerror(err)); + hr = E_FAIL; goto exit; } - if (fmt->wBitsPerSample == 8) - memset(This->local_buffer, 128, This->bufsize_frames * fmt->nBlockAlign); - else - memset(This->local_buffer, 0, This->bufsize_frames * fmt->nBlockAlign); + TRACE("alsa_period_frames: %lu\n", alsa_period_frames); - if((err = snd_pcm_sw_params_get_boundary(sw_params, &boundary)) < 0){ - WARN("Unable to get boundary: %d (%s)\n", err, snd_strerror(err)); + if((err = snd_pcm_hw_params_get_buffer_size(This->hw_params, + &This->alsa_bufsize_frames)) < 0){ + WARN("Unable to get buffer size: %d (%s)\n", err, snd_strerror(err)); hr = E_FAIL; goto exit; } - if((err = snd_pcm_sw_params_set_start_threshold(This->pcm_handle, - sw_params, boundary)) < 0){ - WARN("Unable to set start threshold to %lx: %d (%s)\n", boundary, err, - snd_strerror(err)); - hr = E_FAIL; + sw_params = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, snd_pcm_sw_params_sizeof()); + if(!sw_params){ + hr = E_OUTOFMEMORY; goto exit; } - if((err = snd_pcm_sw_params_set_stop_threshold(This->pcm_handle, - sw_params, boundary)) < 0){ - WARN("Unable to set stop threshold to %lx: %d (%s)\n", boundary, err, - snd_strerror(err)); + if((err = snd_pcm_sw_params_current(This->pcm_handle, sw_params)) < 0){ + WARN("Unable to get sw_params: %d (%s)\n", err, snd_strerror(err)); hr = E_FAIL; goto exit; } - if((err = snd_pcm_sw_params_set_avail_min(This->pcm_handle, - sw_params, 0)) < 0){ - WARN("Unable to set avail min to 0: %d (%s)\n", err, snd_strerror(err)); + if((err = snd_pcm_sw_params_set_start_threshold(This->pcm_handle, + sw_params, 1)) < 0){ + WARN("Unable set start threshold to 0: %d (%s)\n", err, snd_strerror(err)); hr = E_FAIL; goto exit; } - if((err = snd_pcm_sw_params_set_silence_size(This->pcm_handle, - sw_params, boundary)) < 0){ - WARN("Unable to set silence size to %lx: %d (%s)\n", boundary, err, - snd_strerror(err)); + if((err = snd_pcm_sw_params_set_stop_threshold(This->pcm_handle, + sw_params, This->alsa_bufsize_frames)) < 0){ + WARN("Unable set stop threshold to %lu: %d (%s)\n", + This->alsa_bufsize_frames, err, snd_strerror(err)); hr = E_FAIL; goto exit; } if((err = snd_pcm_sw_params(This->pcm_handle, sw_params)) < 0){ - WARN("Unable to set sw params: %d (%s)\n", err, snd_strerror(err)); + WARN("Unable set sw params: %d (%s)\n", err, snd_strerror(err)); hr = E_FAIL; goto exit; } @@ -1036,26 +982,30 @@ goto exit; } - if((err = snd_pcm_hw_params_get_buffer_size(This->hw_params, - &This->bufsize_alsa)) < 0){ - WARN("Unable to get buffer size: %d (%s)\n", err, snd_strerror(err)); - hr = E_FAIL; - goto exit; - } + if(period) + This->mmdev_period_rt = period; + else + This->mmdev_period_rt = DefaultPeriod; - if((err = snd_pcm_hw_params_get_period_size(This->hw_params, - &This->period_alsa, NULL)) < 0){ - WARN("Unable to get period size: %d (%s)\n", err, snd_strerror(err)); - hr = E_FAIL; - goto exit; - } + /* Check if the ALSA buffer is so small that it will run out before + * the next MMDevAPI period tick occurs. Allow a little wiggle room + * with 120% of the period time. */ + mmdev_period_frames = fmt->nSamplesPerSec * (This->mmdev_period_rt / 10000000.); + if(This->alsa_bufsize_frames < 1.2 * mmdev_period_frames) + FIXME("ALSA buffer time is smaller than our period time. Expect underruns. (%lu < %u)\n", + This->alsa_bufsize_frames, mmdev_period_frames); - if((err = snd_pcm_hw_params_get_period_time(This->hw_params, - &This->period_us, NULL)) < 0){ - WARN("Unable to get period time: %d (%s)\n", err, snd_strerror(err)); - hr = E_FAIL; + This->bufsize_frames = ceil((duration / 10000000.) * fmt->nSamplesPerSec); + This->local_buffer = HeapAlloc(GetProcessHeap(), 0, + This->bufsize_frames * fmt->nBlockAlign); + if(!This->local_buffer){ + hr = E_OUTOFMEMORY; goto exit; } + if (fmt->wBitsPerSample == 8) + memset(This->local_buffer, 128, This->bufsize_frames * fmt->nBlockAlign); + else + memset(This->local_buffer, 0, This->bufsize_frames * fmt->nBlockAlign); This->fmt = clone_format(fmt); if(!This->fmt){ @@ -1093,18 +1043,12 @@ exit: HeapFree(GetProcessHeap(), 0, sw_params); if(FAILED(hr)){ - if(This->local_buffer){ - HeapFree(GetProcessHeap(), 0, This->local_buffer); - This->local_buffer = NULL; - } - if(This->fmt){ - CoTaskMemFree(This->fmt); - This->fmt = NULL; - } - if(This->vols){ - HeapFree(GetProcessHeap(), 0, This->vols); - This->vols = NULL; - } + HeapFree(GetProcessHeap(), 0, This->local_buffer); + This->local_buffer = NULL; + CoTaskMemFree(This->fmt); + This->fmt = NULL; + HeapFree(GetProcessHeap(), 0, This->vols); + This->vols = NULL; } LeaveCriticalSection(&This->lock); @@ -1181,12 +1125,13 @@ snd_pcm_sframes_t avail_frames; avail_frames = snd_pcm_avail_update(This->pcm_handle); - - if(This->bufsize_alsa < avail_frames){ - WARN("Xrun detected\n"); + if(This->alsa_bufsize_frames < avail_frames || + snd_pcm_state(This->pcm_handle) == SND_PCM_STATE_XRUN) *out = This->held_frames; - }else - *out = This->bufsize_alsa - avail_frames + This->held_frames; + else + *out = This->alsa_bufsize_frames - avail_frames + This->held_frames; + TRACE("PCM state: %u, avail: %ld, pad: %u\n", + snd_pcm_state(This->pcm_handle), avail_frames, *out); }else if(This->dataflow == eCapture){ *out = This->held_frames; }else{ @@ -1419,7 +1364,7 @@ if(!fmt) return E_OUTOFMEMORY; - formats = HeapAlloc(GetProcessHeap(), 0, snd_pcm_format_mask_sizeof()); + formats = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, snd_pcm_format_mask_sizeof()); if(!formats){ CoTaskMemFree(fmt); return E_OUTOFMEMORY; @@ -1558,7 +1503,7 @@ WARN("writei failed, recovering: %ld (%s)\n", written, snd_strerror(written)); - ret = wine_snd_pcm_recover(handle, written, 0); + ret = snd_pcm_recover(handle, written, 0); if(ret < 0){ WARN("Could not recover: %d (%s)\n", ret, snd_strerror(ret)); return ret; @@ -1573,10 +1518,31 @@ static void alsa_write_data(ACImpl *This) { snd_pcm_sframes_t written; - snd_pcm_uframes_t to_write; + snd_pcm_uframes_t to_write, avail; + int err; BYTE *buf = This->local_buffer + (This->lcl_offs_frames * This->fmt->nBlockAlign); + /* this call seems to be required to get an accurate snd_pcm_state() */ + avail = snd_pcm_avail_update(This->pcm_handle); + + if(snd_pcm_state(This->pcm_handle) == SND_PCM_STATE_XRUN || + avail > This->alsa_bufsize_frames){ + TRACE("XRun state, recovering\n"); + + if((err = snd_pcm_recover(This->pcm_handle, -EPIPE, 1)) < 0) + WARN("snd_pcm_recover failed: %d (%s)\n", err, snd_strerror(err)); + + if((err = snd_pcm_reset(This->pcm_handle)) < 0) + WARN("snd_pcm_reset failed: %d (%s)\n", err, snd_strerror(err)); + + if((err = snd_pcm_prepare(This->pcm_handle)) < 0) + WARN("snd_pcm_prepare failed: %d (%s)\n", err, snd_strerror(err)); + } + + if(This->held_frames == 0) + return; + if(This->lcl_offs_frames + This->held_frames > This->bufsize_frames) to_write = This->bufsize_frames - This->lcl_offs_frames; else @@ -1626,7 +1592,7 @@ WARN("read failed, recovering: %ld (%s)\n", nread, snd_strerror(nread)); - ret = wine_snd_pcm_recover(This->pcm_handle, nread, 0); + ret = snd_pcm_recover(This->pcm_handle, nread, 0); if(ret < 0){ WARN("Recover failed: %d (%s)\n", ret, snd_strerror(ret)); return; @@ -1666,7 +1632,7 @@ EnterCriticalSection(&This->lock); if(This->started){ - if(This->dataflow == eRender && This->held_frames) + if(This->dataflow == eRender) alsa_write_data(This); else if(This->dataflow == eCapture) alsa_read_data(This); @@ -1678,36 +1644,9 @@ LeaveCriticalSection(&This->lock); } -static HRESULT alsa_consider_start(ACImpl *This) -{ - snd_pcm_sframes_t avail; - int err; - - avail = snd_pcm_avail_update(This->pcm_handle); - if(avail < 0){ - WARN("Unable to get avail_update: %ld (%s)\n", avail, - snd_strerror(avail)); - return E_FAIL; - } - - if(This->period_alsa < This->bufsize_alsa - avail){ - if((err = snd_pcm_start(This->pcm_handle)) < 0){ - WARN("Start failed: %d (%s), state: %d\n", err, snd_strerror(err), - snd_pcm_state(This->pcm_handle)); - return E_FAIL; - } - - return S_OK; - } - - return S_FALSE; -} - static HRESULT WINAPI AudioClient_Start(IAudioClient *iface) { ACImpl *This = impl_from_IAudioClient(iface); - DWORD period_ms; - HRESULT hr; TRACE("(%p)\n", This); @@ -1728,16 +1667,6 @@ return AUDCLNT_E_NOT_STOPPED; } - hr = alsa_consider_start(This); - if(FAILED(hr)){ - LeaveCriticalSection(&This->lock); - return hr; - } - - period_ms = This->period_us / 1000; - if(!period_ms) - period_ms = 10; - if(This->dataflow == eCapture){ /* dump any data that might be leftover in the ALSA capture buffer */ snd_pcm_readi(This->pcm_handle, This->local_buffer, @@ -1745,7 +1674,7 @@ } if(!CreateTimerQueueTimer(&This->timer, g_timer_q, alsa_push_buffer_data, - This, 0, period_ms, WT_EXECUTEINTIMERTHREAD)){ + This, 0, This->mmdev_period_rt / 10000, WT_EXECUTEINTIMERTHREAD)){ LeaveCriticalSection(&This->lock); WARN("Unable to create timer: %u\n", GetLastError()); return E_FAIL; @@ -1761,7 +1690,6 @@ static HRESULT WINAPI AudioClient_Stop(IAudioClient *iface) { ACImpl *This = impl_from_IAudioClient(iface); - int err; HANDLE event; BOOL wait; @@ -1779,24 +1707,21 @@ return S_FALSE; } + if(snd_pcm_drop(This->pcm_handle) < 0) + WARN("snd_pcm_drop failed\n"); + + if(snd_pcm_reset(This->pcm_handle) < 0) + WARN("snd_pcm_reset failed\n"); + + if(snd_pcm_prepare(This->pcm_handle) < 0) + WARN("snd_pcm_prepare failed\n"); + event = CreateEventW(NULL, TRUE, FALSE, NULL); wait = !DeleteTimerQueueTimer(g_timer_q, This->timer, event); if(wait) WARN("DeleteTimerQueueTimer error %u\n", GetLastError()); wait = wait && GetLastError() == ERROR_IO_PENDING; - if((err = snd_pcm_drop(This->pcm_handle)) < 0){ - LeaveCriticalSection(&This->lock); - WARN("Drop failed: %d (%s)\n", err, snd_strerror(err)); - return E_FAIL; - } - - if((err = snd_pcm_prepare(This->pcm_handle)) < 0){ - LeaveCriticalSection(&This->lock); - WARN("Prepare failed: %d (%s)\n", err, snd_strerror(err)); - return E_FAIL; - } - This->started = FALSE; LeaveCriticalSection(&This->lock); @@ -1831,6 +1756,15 @@ return AUDCLNT_E_BUFFER_OPERATION_PENDING; } + if(snd_pcm_drop(This->pcm_handle) < 0) + WARN("snd_pcm_drop failed\n"); + + if(snd_pcm_reset(This->pcm_handle) < 0) + WARN("snd_pcm_reset failed\n"); + + if(snd_pcm_prepare(This->pcm_handle) < 0) + WARN("snd_pcm_prepare failed\n"); + This->held_frames = 0; This->written_frames = 0; This->lcl_offs_frames = 0; @@ -2093,7 +2027,6 @@ { ACImpl *This = impl_from_IAudioRenderClient(iface); BYTE *buffer; - HRESULT hr; TRACE("(%p)->(%u, %x)\n", This, written_frames, flags); @@ -2118,43 +2051,10 @@ memset(buffer, 0, written_frames * This->fmt->nBlockAlign); } - if(This->held_frames){ - if(This->buf_state == LOCKED_WRAPPED) - alsa_wrap_buffer(This, buffer, written_frames); - - This->held_frames += written_frames; - }else{ - snd_pcm_sframes_t written; - - written = alsa_write_best_effort(This->pcm_handle, buffer, - written_frames, This); - if(written < 0){ - This->buf_state = NOT_LOCKED; - LeaveCriticalSection(&This->lock); - ERR("write failed: %ld (%s)\n", written, snd_strerror(written)); - return E_FAIL; - } - - if(written < written_frames){ - if(This->buf_state == LOCKED_WRAPPED) - alsa_wrap_buffer(This, - This->tmp_buffer + written * This->fmt->nBlockAlign, - written_frames - written); - else - This->lcl_offs_frames += written; - This->held_frames = written_frames - written; - } - } - - if(This->started && - snd_pcm_state(This->pcm_handle) == SND_PCM_STATE_PREPARED){ - hr = alsa_consider_start(This); - if(FAILED(hr)){ - LeaveCriticalSection(&This->lock); - return hr; - } - } + if(This->buf_state == LOCKED_WRAPPED) + alsa_wrap_buffer(This, buffer, written_frames); + This->held_frames += written_frames; This->written_frames += written_frames; This->buf_state = NOT_LOCKED; diff -Nru wine1.3-1.3.30/dlls/winecoreaudio.drv/mmdevdrv.c wine1.3-1.3.31/dlls/winecoreaudio.drv/mmdevdrv.c --- wine1.3-1.3.30/dlls/winecoreaudio.drv/mmdevdrv.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/winecoreaudio.drv/mmdevdrv.c 2011-10-21 18:38:36.000000000 +0000 @@ -325,7 +325,6 @@ AudioBufferList *buffers; CFStringRef name; SIZE_T len; - char nameA[256]; int j; addr.mSelector = kAudioDevicePropertyStreamConfiguration; @@ -344,8 +343,10 @@ buffers = HeapAlloc(GetProcessHeap(), 0, size); if(!buffers){ HeapFree(GetProcessHeap(), 0, devices); - for(j = 0; j < *num; ++j) + for(j = 0; j < *num; ++j){ HeapFree(GetProcessHeap(), 0, (*ids)[j]); + HeapFree(GetProcessHeap(), 0, (*keys)[j]); + } HeapFree(GetProcessHeap(), 0, *keys); HeapFree(GetProcessHeap(), 0, *ids); return E_OUTOFMEMORY; @@ -382,18 +383,10 @@ continue; } - if(!CFStringGetCString(name, nameA, sizeof(nameA), - kCFStringEncodingUTF8)){ - WARN("Error converting string to UTF8\n"); - CFRelease(name); - continue; - } - - CFRelease(name); - - len = MultiByteToWideChar(CP_UNIXCP, 0, nameA, -1, NULL, 0); + len = CFStringGetLength(name) + 1; (*ids)[*num] = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); if(!(*ids)[*num]){ + CFRelease(name); HeapFree(GetProcessHeap(), 0, devices); for(j = 0; j < *num; ++j){ HeapFree(GetProcessHeap(), 0, (*ids)[j]); @@ -403,10 +396,12 @@ HeapFree(GetProcessHeap(), 0, *keys); return E_OUTOFMEMORY; } - MultiByteToWideChar(CP_UNIXCP, 0, nameA, -1, (*ids)[*num], len); + CFStringGetCharacters(name, CFRangeMake(0, len - 1), (UniChar*)(*ids)[*num]); + ((*ids)[*num])[len - 1] = 0; + CFRelease(name); (*keys)[*num] = HeapAlloc(GetProcessHeap(), 0, sizeof(AudioDeviceID)); - if(!(*ids)[*num]){ + if(!(*keys)[*num]){ HeapFree(GetProcessHeap(), 0, devices); HeapFree(GetProcessHeap(), 0, (*ids)[*num]); for(j = 0; j < *num; ++j){ @@ -422,6 +417,9 @@ if(*def_index == (UINT)-1 && devices[i] == default_id) *def_index = *num; + TRACE("device %u: id %s key %u%s\n", *num, debugstr_w((*ids)[*num]), + (unsigned int)*(*keys)[*num], (*def_index == *num) ? " (default)" : ""); + (*num)++; } @@ -438,7 +436,7 @@ { ACImpl *This; - TRACE("%p %d %p\n", dev, dataflow, out); + TRACE("%u %p %d %p\n", (unsigned int)*adevid, dev, dataflow, out); This = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(ACImpl)); if(!This) @@ -2360,10 +2358,8 @@ This->session->channel_vols[index] * This->vols[index]; sc = AudioQueueSetParameter(This->aqueue, kAudioQueueParam_Volume, level); - if(sc != noErr){ + if(sc != noErr) WARN("Setting _Volume property failed: %lx\n", sc); - return E_FAIL; - } return S_OK; } diff -Nru wine1.3-1.3.30/dlls/wined3d/ati_fragment_shader.c wine1.3-1.3.31/dlls/wined3d/ati_fragment_shader.c --- wine1.3-1.3.30/dlls/wined3d/ati_fragment_shader.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/wined3d/ati_fragment_shader.c 2011-10-21 18:38:36.000000000 +0000 @@ -551,6 +551,7 @@ arg1 = arg2; argmod1 = argmod2; rep1 = rep2; + /* fall through */ case WINED3DTOP_SELECTARG1: wrap_op1(gl_info, GL_MOV_ATI, dstreg, GL_NONE, GL_NONE, arg1, rep1, argmod1); @@ -558,9 +559,11 @@ case WINED3DTOP_MODULATE4X: if(dstmod == GL_NONE) dstmod = GL_4X_BIT_ATI; + /* fall through */ case WINED3DTOP_MODULATE2X: if(dstmod == GL_NONE) dstmod = GL_2X_BIT_ATI; dstmod |= GL_SATURATE_BIT_ATI; + /* fall through */ case WINED3DTOP_MODULATE: wrap_op2(gl_info, GL_MUL_ATI, dstreg, GL_NONE, dstmod, arg1, rep1, argmod1, @@ -569,8 +572,10 @@ case WINED3DTOP_ADDSIGNED2X: dstmod = GL_2X_BIT_ATI; + /* fall through */ case WINED3DTOP_ADDSIGNED: argmodextra = GL_BIAS_BIT_ATI; + /* fall through */ case WINED3DTOP_ADD: dstmod |= GL_SATURATE_BIT_ATI; wrap_op2(gl_info, GL_ADD_ATI, GL_REG_0_ATI, GL_NONE, dstmod, @@ -598,10 +603,13 @@ case WINED3DTOP_BLENDCURRENTALPHA: if(extrarg == GL_NONE) extrarg = register_for_arg(WINED3DTA_CURRENT, gl_info, stage, NULL, NULL, -1); + /* fall through */ case WINED3DTOP_BLENDFACTORALPHA: if(extrarg == GL_NONE) extrarg = register_for_arg(WINED3DTA_TFACTOR, gl_info, stage, NULL, NULL, -1); + /* fall through */ case WINED3DTOP_BLENDTEXTUREALPHA: if(extrarg == GL_NONE) extrarg = register_for_arg(WINED3DTA_TEXTURE, gl_info, stage, NULL, NULL, -1); + /* fall through */ case WINED3DTOP_BLENDDIFFUSEALPHA: if(extrarg == GL_NONE) extrarg = register_for_arg(WINED3DTA_DIFFUSE, gl_info, stage, NULL, NULL, -1); wrap_op3(gl_info, GL_LERP_ATI, dstreg, GL_NONE, GL_NONE, @@ -622,6 +630,7 @@ case WINED3DTOP_MODULATEINVALPHA_ADDCOLOR: argmodextra = argmod1 & GL_COMP_BIT_ATI ? argmod1 & ~GL_COMP_BIT_ATI : argmod1 | GL_COMP_BIT_ATI; + /* fall through */ case WINED3DTOP_MODULATEALPHA_ADDCOLOR: if(!argmodextra) argmodextra = argmod1; wrap_op3(gl_info, GL_MAD_ATI, dstreg, GL_NONE, GL_SATURATE_BIT_ATI, @@ -632,6 +641,7 @@ case WINED3DTOP_MODULATEINVCOLOR_ADDALPHA: argmodextra = argmod1 & GL_COMP_BIT_ATI ? argmod1 & ~GL_COMP_BIT_ATI : argmod1 | GL_COMP_BIT_ATI; + /* fall through */ case WINED3DTOP_MODULATECOLOR_ADDALPHA: if(!argmodextra) argmodextra = argmod1; wrap_op3(gl_info, GL_MAD_ATI, dstreg, GL_NONE, GL_SATURATE_BIT_ATI, @@ -688,6 +698,7 @@ case WINED3DTOP_SELECTARG2: arg1 = arg2; argmod1 = argmod2; + /* fall through */ case WINED3DTOP_SELECTARG1: wrap_op1(gl_info, GL_MOV_ATI, dstreg, GL_ALPHA, GL_NONE, arg1, GL_NONE, argmod1); @@ -695,9 +706,11 @@ case WINED3DTOP_MODULATE4X: if(dstmod == GL_NONE) dstmod = GL_4X_BIT_ATI; + /* fall through */ case WINED3DTOP_MODULATE2X: if(dstmod == GL_NONE) dstmod = GL_2X_BIT_ATI; dstmod |= GL_SATURATE_BIT_ATI; + /* fall through */ case WINED3DTOP_MODULATE: wrap_op2(gl_info, GL_MUL_ATI, dstreg, GL_ALPHA, dstmod, arg1, GL_NONE, argmod1, @@ -706,8 +719,10 @@ case WINED3DTOP_ADDSIGNED2X: dstmod = GL_2X_BIT_ATI; + /* fall through */ case WINED3DTOP_ADDSIGNED: argmodextra = GL_BIAS_BIT_ATI; + /* fall through */ case WINED3DTOP_ADD: dstmod |= GL_SATURATE_BIT_ATI; wrap_op2(gl_info, GL_ADD_ATI, dstreg, GL_ALPHA, dstmod, @@ -735,10 +750,13 @@ case WINED3DTOP_BLENDCURRENTALPHA: if(extrarg == GL_NONE) extrarg = register_for_arg(WINED3DTA_CURRENT, gl_info, stage, NULL, NULL, -1); + /* fall through */ case WINED3DTOP_BLENDFACTORALPHA: if(extrarg == GL_NONE) extrarg = register_for_arg(WINED3DTA_TFACTOR, gl_info, stage, NULL, NULL, -1); + /* fall through */ case WINED3DTOP_BLENDTEXTUREALPHA: if(extrarg == GL_NONE) extrarg = register_for_arg(WINED3DTA_TEXTURE, gl_info, stage, NULL, NULL, -1); + /* fall through */ case WINED3DTOP_BLENDDIFFUSEALPHA: if(extrarg == GL_NONE) extrarg = register_for_arg(WINED3DTA_DIFFUSE, gl_info, stage, NULL, NULL, -1); wrap_op3(gl_info, GL_LERP_ATI, dstreg, GL_ALPHA, GL_NONE, diff -Nru wine1.3-1.3.30/dlls/wined3d/context.c wine1.3-1.3.31/dlls/wined3d/context.c --- wine1.3-1.3.30/dlls/wined3d/context.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/wined3d/context.c 2011-10-21 18:38:36.000000000 +0000 @@ -724,7 +724,8 @@ { if (!SetPixelFormat(dc, format, NULL)) { - ERR("Failed to set pixel format %d on device context %p, last error %#x.\n", + /* This may also happen if the dc belongs to a destroyed window. */ + WARN("Failed to set pixel format %d on device context %p, last error %#x.\n", format, dc, GetLastError()); return FALSE; } @@ -758,8 +759,16 @@ static BOOL context_set_gl_context(struct wined3d_context *ctx) { struct wined3d_swapchain *swapchain = ctx->swapchain; + BOOL backup = FALSE; - if (!pwglMakeCurrent(ctx->hdc, ctx->glCtx)) + if (!context_set_pixel_format(ctx->gl_info, ctx->hdc, ctx->pixel_format)) + { + WARN("Failed to set pixel format %d on device context %p.\n", + ctx->pixel_format, ctx->hdc); + backup = TRUE; + } + + if (backup || !pwglMakeCurrent(ctx->hdc, ctx->glCtx)) { HDC dc; @@ -768,6 +777,17 @@ ctx->valid = 0; WARN("Trying fallback to the backup window.\n"); + /* FIXME: If the context is destroyed it's no longer associated with + * a swapchain, so we can't use the swapchain to get a backup dc. To + * make this work windowless contexts would need to be handled by the + * device. */ + if (ctx->destroyed) + { + FIXME("Unable to get backup dc for destroyed context %p.\n", ctx); + context_set_current(NULL); + return FALSE; + } + if (!(dc = swapchain_get_backup_dc(swapchain))) { context_set_current(NULL); @@ -793,8 +813,15 @@ return TRUE; } -static void context_restore_gl_context(HDC dc, HGLRC gl_ctx) +static void context_restore_gl_context(const struct wined3d_gl_info *gl_info, HDC dc, HGLRC gl_ctx, int pf) { + if (!context_set_pixel_format(gl_info, dc, pf)) + { + ERR("Failed to restore pixel format %d on device context %p.\n", pf, dc); + context_set_current(NULL); + return; + } + if (!pwglMakeCurrent(dc, gl_ctx)) { ERR("Failed to restore GL context %p on device context %p, last error %#x.\n", @@ -865,11 +892,12 @@ HGLRC restore_ctx; HDC restore_dc; unsigned int i; + int restore_pf; restore_ctx = pwglGetCurrentContext(); restore_dc = pwglGetCurrentDC(); + restore_pf = GetPixelFormat(restore_dc); - context_update_window(context); if (context->valid && restore_ctx != context->glCtx) context_set_gl_context(context); else restore_ctx = NULL; @@ -951,7 +979,7 @@ if (restore_ctx) { - context_restore_gl_context(restore_dc, restore_ctx); + context_restore_gl_context(gl_info, restore_dc, restore_ctx, restore_pf); } else if (pwglGetCurrentContext() && !pwglMakeCurrent(NULL, NULL)) { @@ -1050,7 +1078,7 @@ if (!--context->level && context->restore_ctx) { TRACE("Restoring GL context %p on device context %p.\n", context->restore_ctx, context->restore_dc); - context_restore_gl_context(context->restore_dc, context->restore_ctx); + context_restore_gl_context(context->gl_info, context->restore_dc, context->restore_ctx, context->restore_pf); context->restore_ctx = NULL; context->restore_dc = NULL; } @@ -1071,6 +1099,7 @@ current_gl, pwglGetCurrentDC()); context->restore_ctx = current_gl; context->restore_dc = pwglGetCurrentDC(); + context->restore_pf = GetPixelFormat(context->restore_dc); } } } @@ -1090,7 +1119,7 @@ } /* This function takes care of wined3d pixel format selection. */ -static int context_choose_pixel_format(struct wined3d_device *device, HDC hdc, +static int context_choose_pixel_format(const struct wined3d_device *device, HDC hdc, const struct wined3d_format *color_format, const struct wined3d_format *ds_format, BOOL auxBuffers, BOOL findCompatible) { @@ -1294,7 +1323,6 @@ const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; const struct wined3d_format *color_format; struct wined3d_context *ret; - PIXELFORMATDESCRIPTOR pfd; BOOL auxBuffers = FALSE; int pixel_format; unsigned int s; @@ -1312,6 +1340,53 @@ return NULL; } + if (device->shader_backend->shader_dirtifyable_constants()) + { + /* Create the dirty constants array and initialize them to dirty */ + ret->vshader_const_dirty = HeapAlloc(GetProcessHeap(), 0, + sizeof(*ret->vshader_const_dirty) * device->d3d_vshader_constantF); + if (!ret->vshader_const_dirty) + goto out; + + ret->pshader_const_dirty = HeapAlloc(GetProcessHeap(), 0, + sizeof(*ret->pshader_const_dirty) * device->d3d_pshader_constantF); + if (!ret->pshader_const_dirty) + goto out; + + memset(ret->vshader_const_dirty, 1, + sizeof(*ret->vshader_const_dirty) * device->d3d_vshader_constantF); + memset(ret->pshader_const_dirty, 1, + sizeof(*ret->pshader_const_dirty) * device->d3d_pshader_constantF); + } + + ret->blit_targets = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, + gl_info->limits.buffers * sizeof(*ret->blit_targets)); + if (!ret->blit_targets) + goto out; + + ret->draw_buffers = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, + gl_info->limits.buffers * sizeof(*ret->draw_buffers)); + if (!ret->draw_buffers) + goto out; + + ret->free_occlusion_query_size = 4; + ret->free_occlusion_queries = HeapAlloc(GetProcessHeap(), 0, + ret->free_occlusion_query_size * sizeof(*ret->free_occlusion_queries)); + if (!ret->free_occlusion_queries) + goto out; + + list_init(&ret->occlusion_queries); + + ret->free_event_query_size = 4; + ret->free_event_queries = HeapAlloc(GetProcessHeap(), 0, + ret->free_event_query_size * sizeof(*ret->free_event_queries)); + if (!ret->free_event_queries) + goto out; + + list_init(&ret->event_queries); + list_init(&ret->fbo_list); + list_init(&ret->fbo_destroy_list); + if (!(hdc = GetDC(swapchain->win_handle))) { WARN("Failed to retireve device context, trying swapchain backup.\n"); @@ -1363,37 +1438,41 @@ goto out; } - DescribePixelFormat(hdc, pixel_format, sizeof(pfd), &pfd); + context_enter(ret); + if (!context_set_pixel_format(gl_info, hdc, pixel_format)) { ERR("Failed to set pixel format %d on device context %p.\n", pixel_format, hdc); + context_release(ret); + goto out; + } + + if (!(ctx = pwglCreateContext(hdc))) + { + ERR("Failed to create a WGL context.\n"); + context_release(ret); goto out; } - ctx = pwglCreateContext(hdc); if (device->context_count) { if (!pwglShareLists(device->contexts[0]->glCtx, ctx)) { - DWORD err = GetLastError(); ERR("wglShareLists(%p, %p) failed, last error %#x.\n", - device->contexts[0]->glCtx, ctx, err); + device->contexts[0]->glCtx, ctx, GetLastError()); + context_release(ret); + if (!pwglDeleteContext(ctx)) + ERR("wglDeleteContext(%p) failed, last error %#x.\n", ctx, GetLastError()); + goto out; } } - if(!ctx) { - ERR("Failed to create a WGL context\n"); - goto out; - } - if (!device_context_add(device, ret)) { ERR("Failed to add the newly created context to the context list\n"); + context_release(ret); if (!pwglDeleteContext(ctx)) - { - DWORD err = GetLastError(); - ERR("wglDeleteContext(%p) failed, last error %#x.\n", ctx, err); - } + ERR("wglDeleteContext(%p) failed, last error %#x.\n", ctx, GetLastError()); goto out; } @@ -1421,53 +1500,14 @@ ret->hdc = hdc; ret->pixel_format = pixel_format; - if (device->shader_backend->shader_dirtifyable_constants()) - { - /* Create the dirty constants array and initialize them to dirty */ - ret->vshader_const_dirty = HeapAlloc(GetProcessHeap(), 0, - sizeof(*ret->vshader_const_dirty) * device->d3d_vshader_constantF); - ret->pshader_const_dirty = HeapAlloc(GetProcessHeap(), 0, - sizeof(*ret->pshader_const_dirty) * device->d3d_pshader_constantF); - memset(ret->vshader_const_dirty, 1, - sizeof(*ret->vshader_const_dirty) * device->d3d_vshader_constantF); - memset(ret->pshader_const_dirty, 1, - sizeof(*ret->pshader_const_dirty) * device->d3d_pshader_constantF); - } - - ret->blit_targets = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, - gl_info->limits.buffers * sizeof(*ret->blit_targets)); - if (!ret->blit_targets) goto out; - - ret->draw_buffers = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, - gl_info->limits.buffers * sizeof(*ret->draw_buffers)); - if (!ret->draw_buffers) goto out; - - ret->free_occlusion_query_size = 4; - ret->free_occlusion_queries = HeapAlloc(GetProcessHeap(), 0, - ret->free_occlusion_query_size * sizeof(*ret->free_occlusion_queries)); - if (!ret->free_occlusion_queries) goto out; - - list_init(&ret->occlusion_queries); - - ret->free_event_query_size = 4; - ret->free_event_queries = HeapAlloc(GetProcessHeap(), 0, - ret->free_event_query_size * sizeof(*ret->free_event_queries)); - if (!ret->free_event_queries) goto out; - - list_init(&ret->event_queries); - - TRACE("Successfully created new context %p\n", ret); - - list_init(&ret->fbo_list); - list_init(&ret->fbo_destroy_list); - - context_enter(ret); - /* Set up the context defaults */ if (!context_set_current(ret)) { - ERR("Cannot activate context to set up defaults\n"); + ERR("Cannot activate context to set up defaults.\n"); + device_context_remove(device, ret); context_release(ret); + if (!pwglDeleteContext(ctx)) + ERR("wglDeleteContext(%p) failed, last error %#x.\n", ctx, GetLastError()); goto out; } diff -Nru wine1.3-1.3.30/dlls/wined3d/device.c wine1.3-1.3.31/dlls/wined3d/device.c --- wine1.3-1.3.30/dlls/wined3d/device.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/wined3d/device.c 2011-10-21 18:38:36.000000000 +0000 @@ -1231,32 +1231,6 @@ device->fb.render_targets = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*device->fb.render_targets) * gl_info->limits.buffers); - device->palette_count = 1; - device->palettes = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(PALETTEENTRY*)); - if (!device->palettes || !device->fb.render_targets) - { - ERR("Out of memory!\n"); - hr = E_OUTOFMEMORY; - goto err_out; - } - - device->palettes[0] = HeapAlloc(GetProcessHeap(), 0, sizeof(PALETTEENTRY) * 256); - if (!device->palettes[0]) - { - ERR("Out of memory!\n"); - hr = E_OUTOFMEMORY; - goto err_out; - } - - for (i = 0; i < 256; ++i) - { - device->palettes[0][i].peRed = 0xff; - device->palettes[0][i].peGreen = 0xff; - device->palettes[0][i].peBlue = 0xff; - device->palettes[0][i].peFlags = 0xff; - } - device->currentPalette = 0; - /* Initialize the texture unit mapping to a 1:1 mapping */ for (state = 0; state < MAX_COMBINED_SAMPLERS; ++state) { @@ -1385,12 +1359,6 @@ HeapFree(GetProcessHeap(), 0, device->fb.render_targets); HeapFree(GetProcessHeap(), 0, device->swapchains); device->swapchain_count = 0; - if (device->palettes) - { - HeapFree(GetProcessHeap(), 0, device->palettes[0]); - HeapFree(GetProcessHeap(), 0, device->palettes); - } - device->palette_count = 0; if (swapchain) wined3d_swapchain_decref(swapchain); if (device->stateBlock) @@ -1579,12 +1547,6 @@ device->swapchains = NULL; device->swapchain_count = 0; - for (i = 0; i < device->palette_count; ++i) - HeapFree(GetProcessHeap(), 0, device->palettes[i]); - HeapFree(GetProcessHeap(), 0, device->palettes); - device->palettes = NULL; - device->palette_count = 0; - HeapFree(GetProcessHeap(), 0, device->fb.render_targets); device->fb.render_targets = NULL; @@ -4494,7 +4456,7 @@ return WINED3D_OK; } -HRESULT CDECL wined3d_device_get_front_buffer_data(struct wined3d_device *device, +HRESULT CDECL wined3d_device_get_front_buffer_data(const struct wined3d_device *device, UINT swapchain_idx, struct wined3d_surface *dst_surface) { struct wined3d_swapchain *swapchain; @@ -4511,7 +4473,7 @@ return hr; } -HRESULT CDECL wined3d_device_validate_device(struct wined3d_device *device, DWORD *num_passes) +HRESULT CDECL wined3d_device_validate_device(const struct wined3d_device *device, DWORD *num_passes) { const struct wined3d_state *state = &device->stateBlock->state; struct wined3d_texture *texture; @@ -4574,135 +4536,6 @@ return WINED3D_OK; } -static void dirtify_p8_texture_samplers(struct wined3d_device *device) -{ - UINT i; - - for (i = 0; i < MAX_COMBINED_SAMPLERS; ++i) - { - struct wined3d_texture *texture = device->stateBlock->state.textures[i]; - if (texture && (texture->resource.format->id == WINED3DFMT_P8_UINT - || texture->resource.format->id == WINED3DFMT_P8_UINT_A8_UNORM)) - device_invalidate_state(device, STATE_SAMPLER(i)); - } -} - -HRESULT CDECL wined3d_device_set_palette_entries(struct wined3d_device *device, - UINT palette_idx, const PALETTEENTRY *entries) -{ - UINT i; - - TRACE("device %p, palette_idx %u, entries %p.\n", device, palette_idx, entries); - - if (palette_idx >= MAX_PALETTES) - { - WARN("Invalid palette index %u.\n", palette_idx); - return WINED3DERR_INVALIDCALL; - } - - if (palette_idx >= device->palette_count) - { - UINT new_size = device->palette_count; - PALETTEENTRY **palettes; - - do - { - new_size *= 2; - } while (palette_idx >= new_size); - palettes = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, device->palettes, sizeof(*palettes) * new_size); - if (!palettes) - { - ERR("Out of memory!\n"); - return E_OUTOFMEMORY; - } - device->palettes = palettes; - device->palette_count = new_size; - } - - if (!device->palettes[palette_idx]) - { - device->palettes[palette_idx] = HeapAlloc(GetProcessHeap(), 0, sizeof(PALETTEENTRY) * 256); - if (!device->palettes[palette_idx]) - { - ERR("Out of memory!\n"); - return E_OUTOFMEMORY; - } - } - - for (i = 0; i < 256; ++i) - { - device->palettes[palette_idx][i].peRed = entries[i].peRed; - device->palettes[palette_idx][i].peGreen = entries[i].peGreen; - device->palettes[palette_idx][i].peBlue = entries[i].peBlue; - device->palettes[palette_idx][i].peFlags = entries[i].peFlags; - } - - if (palette_idx == device->currentPalette) - dirtify_p8_texture_samplers(device); - - return WINED3D_OK; -} - -HRESULT CDECL wined3d_device_get_palette_entries(struct wined3d_device *device, - UINT palette_idx, PALETTEENTRY *entries) -{ - UINT i; - - TRACE("device %p, palette_idx %u, entries %p.\n", device, palette_idx, entries); - - if (palette_idx >= device->palette_count || !device->palettes[palette_idx]) - { - /* What happens in such situation isn't documented; Native seems to - * silently abort on such conditions. */ - WARN("Invalid palette index %u.\n", palette_idx); - return WINED3DERR_INVALIDCALL; - } - - for (i = 0; i < 256; ++i) - { - entries[i].peRed = device->palettes[palette_idx][i].peRed; - entries[i].peGreen = device->palettes[palette_idx][i].peGreen; - entries[i].peBlue = device->palettes[palette_idx][i].peBlue; - entries[i].peFlags = device->palettes[palette_idx][i].peFlags; - } - - return WINED3D_OK; -} - -HRESULT CDECL wined3d_device_set_current_texture_palette(struct wined3d_device *device, UINT palette_idx) -{ - TRACE("device %p, palette_idx %u.\n", device, palette_idx); - - /* Native appears to silently abort on attempt to make an uninitialized - * palette current and render. (tested with reference rasterizer). */ - if (palette_idx >= device->palette_count || !device->palettes[palette_idx]) - { - WARN("Invalid palette index %u.\n", palette_idx); - return WINED3DERR_INVALIDCALL; - } - - /* TODO: stateblocks? */ - if (device->currentPalette != palette_idx) - { - device->currentPalette = palette_idx; - dirtify_p8_texture_samplers(device); - } - - return WINED3D_OK; -} - -HRESULT CDECL wined3d_device_get_current_texture_palette(struct wined3d_device *device, UINT *palette_idx) -{ - TRACE("device %p, palette_idx %p.\n", device, palette_idx); - - if (!palette_idx) - return WINED3DERR_INVALIDCALL; - - *palette_idx = device->currentPalette; - - return WINED3D_OK; -} - HRESULT CDECL wined3d_device_set_software_vertex_processing(struct wined3d_device *device, BOOL software) { static BOOL warned; @@ -4720,7 +4553,7 @@ return WINED3D_OK; } -BOOL CDECL wined3d_device_get_software_vertex_processing(struct wined3d_device *device) +BOOL CDECL wined3d_device_get_software_vertex_processing(const struct wined3d_device *device) { static BOOL warned; @@ -4735,7 +4568,7 @@ return device->softwareVertexProcessing; } -HRESULT CDECL wined3d_device_get_raster_status(struct wined3d_device *device, +HRESULT CDECL wined3d_device_get_raster_status(const struct wined3d_device *device, UINT swapchain_idx, WINED3DRASTER_STATUS *raster_status) { struct wined3d_swapchain *swapchain; @@ -4780,7 +4613,7 @@ return WINED3D_OK; } -float CDECL wined3d_device_get_npatch_mode(struct wined3d_device *device) +float CDECL wined3d_device_get_npatch_mode(const struct wined3d_device *device) { static BOOL warned; @@ -4795,7 +4628,7 @@ return 0.0f; } -static inline void invalidate_active_texture(struct wined3d_device *device, struct wined3d_context *context) +static void invalidate_active_texture(const struct wined3d_device *device, struct wined3d_context *context) { DWORD sampler = device->rev_tex_unit_map[context->active_texture]; if (sampler != WINED3D_UNMAPPED_STAGE) @@ -5106,7 +4939,7 @@ if (FAILED(hr)) ERR("Color fill failed, hr %#x.\n", hr); } -HRESULT CDECL wined3d_device_get_render_target(struct wined3d_device *device, +HRESULT CDECL wined3d_device_get_render_target(const struct wined3d_device *device, UINT render_target_idx, struct wined3d_surface **render_target) { TRACE("device %p, render_target_idx %u, render_target %p.\n", @@ -5129,7 +4962,8 @@ return WINED3D_OK; } -HRESULT CDECL wined3d_device_get_depth_stencil(struct wined3d_device *device, struct wined3d_surface **depth_stencil) +HRESULT CDECL wined3d_device_get_depth_stencil(const struct wined3d_device *device, + struct wined3d_surface **depth_stencil) { TRACE("device %p, depth_stencil %p.\n", device, depth_stencil); @@ -5417,10 +5251,16 @@ device->xScreenSpace = x_screen_space; device->yScreenSpace = y_screen_space; - /* switch to the software cursor if position diverges from the hardware one */ if (device->hardwareCursor) { POINT pt; + + GetCursorPos( &pt ); + if (x_screen_space == pt.x && y_screen_space == pt.y) + return; + SetCursorPos( x_screen_space, y_screen_space ); + + /* Switch to the software cursor if position diverges from the hardware one. */ GetCursorPos( &pt ); if (x_screen_space != pt.x || y_screen_space != pt.y) { @@ -5546,7 +5386,7 @@ return WINED3D_OK; } -static BOOL is_display_mode_supported(struct wined3d_device *device, const WINED3DPRESENT_PARAMETERS *pp) +static BOOL is_display_mode_supported(const struct wined3d_device *device, const WINED3DPRESENT_PARAMETERS *pp) { UINT i, count; WINED3DDISPLAYMODE m; @@ -5690,7 +5530,7 @@ /* Do not call while under the GL lock. */ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device, - WINED3DPRESENT_PARAMETERS *present_parameters, + const WINED3DPRESENT_PARAMETERS *present_parameters, wined3d_device_reset_cb callback) { struct wined3d_resource *resource, *cursor; @@ -5980,7 +5820,7 @@ } -HRESULT CDECL wined3d_device_get_creation_parameters(struct wined3d_device *device, +HRESULT CDECL wined3d_device_get_creation_parameters(const struct wined3d_device *device, WINED3DDEVICE_CREATION_PARAMETERS *parameters) { TRACE("device %p, parameters %p.\n", device, parameters); @@ -5989,7 +5829,7 @@ return WINED3D_OK; } -void CDECL wined3d_device_set_gamma_ramp(struct wined3d_device *device, +void CDECL wined3d_device_set_gamma_ramp(const struct wined3d_device *device, UINT swapchain_idx, DWORD flags, const WINED3DGAMMARAMP *ramp) { struct wined3d_swapchain *swapchain; @@ -6004,7 +5844,8 @@ } } -void CDECL wined3d_device_get_gamma_ramp(struct wined3d_device *device, UINT swapchain_idx, WINED3DGAMMARAMP *ramp) +void CDECL wined3d_device_get_gamma_ramp(const struct wined3d_device *device, + UINT swapchain_idx, WINED3DGAMMARAMP *ramp) { struct wined3d_swapchain *swapchain; @@ -6140,7 +5981,7 @@ TRACE("Resource released.\n"); } -HRESULT CDECL wined3d_device_get_surface_from_dc(struct wined3d_device *device, +HRESULT CDECL wined3d_device_get_surface_from_dc(const struct wined3d_device *device, HDC dc, struct wined3d_surface **surface) { struct wined3d_resource *resource; diff -Nru wine1.3-1.3.30/dlls/wined3d/directx.c wine1.3-1.3.31/dlls/wined3d/directx.c --- wine1.3-1.3.30/dlls/wined3d/directx.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/wined3d/directx.c 2011-10-21 18:38:36.000000000 +0000 @@ -1471,6 +1471,7 @@ return HW_VENDOR_INTEL; if (strstr(gl_vendor_string, "Mesa") + || strstr(gl_vendor_string, "Brian Paul") || strstr(gl_vendor_string, "Tungsten Graphics, Inc") || strstr(gl_vendor_string, "VMware, Inc.")) return HW_VENDOR_SOFTWARE; @@ -4312,9 +4313,6 @@ return hr; } -/* Note: d3d8 passes in a pointer to a D3DCAPS8 structure, which is a true - subset of a D3DCAPS9 structure. However, it has to come via a void * - as the d3d8 interface cannot import the d3d9 header */ HRESULT CDECL wined3d_get_device_caps(const struct wined3d *wined3d, UINT adapter_idx, WINED3DDEVTYPE device_type, WINED3DCAPS *caps) { diff -Nru wine1.3-1.3.30/dlls/wined3d/surface.c wine1.3-1.3.31/dlls/wined3d/surface.c --- wine1.3-1.3.30/dlls/wined3d/surface.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/wined3d/surface.c 2011-10-21 18:38:36.000000000 +0000 @@ -42,6 +42,8 @@ static void surface_cleanup(struct wined3d_surface *surface) { + struct wined3d_surface *overlay, *cur; + TRACE("surface %p.\n", surface); if (surface->texture_name || (surface->flags & SFLAG_PBO) @@ -109,6 +111,12 @@ if (surface->overlay_dest) list_remove(&surface->overlay_entry); + LIST_FOR_EACH_ENTRY_SAFE(overlay, cur, &surface->overlays, struct wined3d_surface, overlay_entry) + { + list_remove(&overlay->overlay_entry); + overlay->overlay_dest = NULL; + } + HeapFree(GetProcessHeap(), 0, surface->palette9); resource_cleanup(&surface->resource); @@ -1469,6 +1477,7 @@ struct wined3d_device *device = dst_surface->resource.device; DWORD src_ds_flags, dst_ds_flags; RECT src_rect, dst_rect; + BOOL scale, convert; static const DWORD simple_blit = WINEDDBLT_ASYNC | WINEDDBLT_COLORFILL @@ -1621,6 +1630,11 @@ goto fallback; } + scale = src_surface + && (src_rect.right - src_rect.left != dst_rect.right - dst_rect.left + || src_rect.bottom - src_rect.top != dst_rect.bottom - dst_rect.top); + convert = src_surface && src_surface->resource.format->id != dst_surface->resource.format->id; + dst_ds_flags = dst_surface->resource.format->flags & (WINED3DFMT_FLAG_DEPTH | WINED3DFMT_FLAG_STENCIL); if (src_surface) src_ds_flags = src_surface->resource.format->flags & (WINED3DFMT_FLAG_DEPTH | WINED3DFMT_FLAG_STENCIL); @@ -1675,8 +1689,7 @@ return WINED3DERR_INVALIDCALL; } - if (src_surface->resource.height != dst_surface->resource.height - || src_surface->resource.width != dst_surface->resource.width) + if (scale) { WARN("Rejecting depth / stencil blit with mismatched surface sizes.\n"); return WINED3DERR_INVALIDCALL; @@ -1688,6 +1701,19 @@ } else { + /* In principle this would apply to depth blits as well, but we don't + * implement those in the CPU blitter at the moment. */ + if ((dst_surface->flags & SFLAG_INSYSMEM) + && (!src_surface || (src_surface->flags & SFLAG_INSYSMEM))) + { + if (scale) + TRACE("Not doing sysmem blit because of scaling.\n"); + else if (convert) + TRACE("Not doing sysmem blit because of format conversion.\n"); + else + return surface_cpu_blt(dst_surface, &dst_rect, src_surface, &src_rect, flags, fx, filter); + } + if (flags & WINEDDBLT_COLORFILL) { WINED3DCOLORVALUE color; @@ -1848,6 +1874,11 @@ * and all flags get lost */ surface_init_sysmem(surface); + /* We also get here when the ddraw swapchain is destroyed, for example + * for a mode switch. In this case this surface won't necessarily be + * an implicit surface. We have to mark it lost so that the + * application can restore it after the mode switch. */ + surface->flags |= SFLAG_LOST; } else { @@ -1973,6 +2004,8 @@ static void surface_gdi_cleanup(struct wined3d_surface *surface) { + struct wined3d_surface *overlay, *cur; + TRACE("surface %p.\n", surface); if (surface->flags & SFLAG_DIBSECTION) @@ -1991,6 +2024,12 @@ if (surface->overlay_dest) list_remove(&surface->overlay_entry); + LIST_FOR_EACH_ENTRY_SAFE(overlay, cur, &surface->overlays, struct wined3d_surface, overlay_entry) + { + list_remove(&overlay->overlay_entry); + overlay->overlay_dest = NULL; + } + HeapFree(GetProcessHeap(), 0, surface->palette9); resource_cleanup(&surface->resource); @@ -2948,7 +2987,6 @@ { TRACE("surface %p.\n", surface); - /* So far we don't lose anything :) */ surface->flags &= ~SFLAG_LOST; return WINED3D_OK; } @@ -3255,6 +3293,7 @@ if (surface->overlay_dest && (surface->overlay_dest != dst_surface || flags & WINEDDOVER_HIDE)) { + surface->overlay_dest = NULL; list_remove(&surface->overlay_entry); } @@ -3869,19 +3908,6 @@ /* TODO: Use already acquired context when possible. */ context = context_acquire(device, NULL); - if (surface->resource.format->id == WINED3DFMT_P8_UINT - || surface->resource.format->id == WINED3DFMT_P8_UINT_A8_UNORM) - { - if (palette9_changed(surface)) - { - TRACE("Reloading surface because the d3d8/9 palette was changed\n"); - /* TODO: This is not necessarily needed with hw palettized texture support */ - surface_load_location(surface, SFLAG_INSYSMEM, NULL); - /* Make sure the texture is reloaded because of the palette change, this kills performance though :( */ - surface_modify_location(surface, SFLAG_INTEXTURE, FALSE); - } - } - surface_load(surface, srgb == SRGB_SRGB ? TRUE : FALSE); if (surface->resource.pool == WINED3DPOOL_DEFAULT) @@ -4493,29 +4519,12 @@ if (!pal) { - /* In DirectDraw the palette is a property of the surface, there are no such things as device palettes. */ - if (device->wined3d->flags & WINED3D_PALETTE_PER_SURFACE) + ERR("This code should never get entered for DirectDraw!, expect problems\n"); + if (index_in_alpha) { - ERR("This code should never get entered for DirectDraw!, expect problems\n"); - if (index_in_alpha) - { - /* Guarantees that memory representation remains correct after sysmem<->texture transfers even if - * there's no palette at this time. */ - for (i = 0; i < 256; i++) table[i][3] = i; - } - } - else - { - /* Direct3D >= 8 palette usage style: P8 textures use device palettes, palette entry format is A8R8G8B8, - * alpha is stored in peFlags and may be used by the app if D3DPTEXTURECAPS_ALPHAPALETTE device - * capability flag is present (wine does advertise this capability) */ - for (i = 0; i < 256; ++i) - { - table[i][0] = device->palettes[device->currentPalette][i].peRed; - table[i][1] = device->palettes[device->currentPalette][i].peGreen; - table[i][2] = device->palettes[device->currentPalette][i].peBlue; - table[i][3] = device->palettes[device->currentPalette][i].peFlags; - } + /* Guarantees that memory representation remains correct after sysmem<->texture transfers even if + * there's no palette at this time. */ + for (i = 0; i < 256; i++) table[i][3] = i; } } else @@ -4699,35 +4708,6 @@ return WINED3D_OK; } -BOOL palette9_changed(struct wined3d_surface *surface) -{ - struct wined3d_device *device = surface->resource.device; - - if (surface->palette || (surface->resource.format->id != WINED3DFMT_P8_UINT - && surface->resource.format->id != WINED3DFMT_P8_UINT_A8_UNORM)) - { - /* If a ddraw-style palette is attached assume no d3d9 palette change. - * Also the palette isn't interesting if the surface format isn't P8 or A8P8 - */ - return FALSE; - } - - if (surface->palette9) - { - if (!memcmp(surface->palette9, device->palettes[device->currentPalette], sizeof(PALETTEENTRY) * 256)) - { - return FALSE; - } - } - else - { - surface->palette9 = HeapAlloc(GetProcessHeap(), 0, sizeof(PALETTEENTRY) * 256); - } - memcpy(surface->palette9, device->palettes[device->currentPalette], sizeof(PALETTEENTRY) * 256); - - return TRUE; -} - void flip_surface(struct wined3d_surface *front, struct wined3d_surface *back) { /* Flip the surface contents */ @@ -5809,6 +5789,9 @@ { surface_prepare_system_memory(surface); + if (surface->flags & (SFLAG_INRB_MULTISAMPLE | SFLAG_INRB_RESOLVED)) + surface_load_location(surface, SFLAG_INTEXTURE, NULL); + /* Download the surface to system memory. */ if (surface->flags & (SFLAG_INTEXTURE | SFLAG_INSRGBTEX)) { @@ -5965,6 +5948,22 @@ return WINED3D_OK; } + if (surface->flags & (SFLAG_INRB_MULTISAMPLE | SFLAG_INRB_RESOLVED) + && (surface->resource.format->flags & attach_flags) == attach_flags + && fbo_blit_supported(gl_info, WINED3D_BLIT_OP_COLOR_BLIT, + NULL, surface->resource.usage, surface->resource.pool, surface->resource.format, + NULL, surface->resource.usage, surface->resource.pool, surface->resource.format)) + { + DWORD src_location = surface->flags & SFLAG_INRB_RESOLVED ? SFLAG_INRB_RESOLVED : SFLAG_INRB_MULTISAMPLE; + DWORD dst_location = srgb ? SFLAG_INSRGBTEX : SFLAG_INTEXTURE; + RECT rect = {0, 0, surface->resource.width, surface->resource.height}; + + surface_blt_fbo(device, WINED3DTEXF_POINT, surface, src_location, + &rect, surface, dst_location, &rect); + + return WINED3D_OK; + } + /* Upload from system memory */ d3dfmt_get_conv(surface, TRUE /* We need color keying */, diff -Nru wine1.3-1.3.30/dlls/wined3d/swapchain.c wine1.3-1.3.31/dlls/wined3d/swapchain.c --- wine1.3-1.3.30/dlls/wined3d/swapchain.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/wined3d/swapchain.c 2011-10-21 18:38:36.000000000 +0000 @@ -987,7 +987,7 @@ const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; - swapchain->context = HeapAlloc(GetProcessHeap(), 0, sizeof(swapchain->context)); + swapchain->context = HeapAlloc(GetProcessHeap(), 0, sizeof(*swapchain->context)); if (!swapchain->context) { ERR("Failed to create the context array.\n"); diff -Nru wine1.3-1.3.30/dlls/wined3d/texture.c wine1.3-1.3.31/dlls/wined3d/texture.c --- wine1.3-1.3.30/dlls/wined3d/texture.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/wined3d/texture.c 2011-10-21 18:38:36.000000000 +0000 @@ -683,25 +683,6 @@ context = context_acquire(device, NULL); } - if (texture->resource.format->id == WINED3DFMT_P8_UINT - || texture->resource.format->id == WINED3DFMT_P8_UINT_A8_UNORM) - { - for (i = 0; i < sub_count; ++i) - { - struct wined3d_surface *surface = surface_from_resource(texture->sub_resources[i]); - - if (palette9_changed(surface)) - { - TRACE("Reloading surface %p because the d3d8/9 palette was changed.\n", surface); - /* TODO: This is not necessarily needed with hw palettized texture support. */ - surface_load_location(surface, SFLAG_INSYSMEM, NULL); - /* Make sure the texture is reloaded because of the palette - * change, this kills performance though :( */ - surface_modify_location(surface, SFLAG_INTEXTURE, FALSE); - } - } - } - if (gl_tex->dirty) { /* Reload the surfaces if the texture is marked dirty. */ diff -Nru wine1.3-1.3.30/dlls/wined3d/wined3d_private.h wine1.3-1.3.31/dlls/wined3d/wined3d_private.h --- wine1.3-1.3.30/dlls/wined3d/wined3d_private.h 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/wined3d/wined3d_private.h 2011-10-21 18:38:36.000000000 +0000 @@ -1099,6 +1099,7 @@ UINT level; HGLRC restore_ctx; HDC restore_dc; + int restore_pf; HGLRC glCtx; HWND win_handle; HDC hdc; @@ -1712,11 +1713,6 @@ struct wined3d_surface *onscreen_depth_stencil; struct wined3d_surface *auto_depth_stencil; - /* palettes texture management */ - PALETTEENTRY **palettes; - UINT palette_count; - UINT currentPalette; - /* For rendering to a texture using glCopyTexImage */ GLuint depth_blt_texture; @@ -2180,8 +2176,6 @@ struct wined3d_format *format, CONVERT_TYPES *convert) DECLSPEC_HIDDEN; void d3dfmt_p8_init_palette(const struct wined3d_surface *surface, BYTE table[256][4], BOOL colorkey) DECLSPEC_HIDDEN; -BOOL palette9_changed(struct wined3d_surface *surface) DECLSPEC_HIDDEN; - struct wined3d_vertex_declaration_element { const struct wined3d_format *format; diff -Nru wine1.3-1.3.30/dlls/wined3d/wined3d.spec wine1.3-1.3.31/dlls/wined3d/wined3d.spec --- wine1.3-1.3.30/dlls/wined3d/wined3d.spec 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/wined3d/wined3d.spec 2011-10-21 18:38:36.000000000 +0000 @@ -67,7 +67,6 @@ @ cdecl wined3d_device_get_clip_plane(ptr long ptr) @ cdecl wined3d_device_get_clip_status(ptr ptr) @ cdecl wined3d_device_get_creation_parameters(ptr ptr) -@ cdecl wined3d_device_get_current_texture_palette(ptr ptr) @ cdecl wined3d_device_get_depth_stencil(ptr ptr) @ cdecl wined3d_device_get_device_caps(ptr ptr) @ cdecl wined3d_device_get_display_mode(ptr long ptr) @@ -78,7 +77,6 @@ @ cdecl wined3d_device_get_light_enable(ptr long ptr) @ cdecl wined3d_device_get_material(ptr ptr) @ cdecl wined3d_device_get_npatch_mode(ptr) -@ cdecl wined3d_device_get_palette_entries(ptr long ptr) @ cdecl wined3d_device_get_pixel_shader(ptr) @ cdecl wined3d_device_get_primitive_type(ptr ptr) @ cdecl wined3d_device_get_ps_consts_b(ptr long ptr long) @@ -117,7 +115,6 @@ @ cdecl wined3d_device_set_base_vertex_index(ptr long) @ cdecl wined3d_device_set_clip_plane(ptr long ptr) @ cdecl wined3d_device_set_clip_status(ptr ptr) -@ cdecl wined3d_device_set_current_texture_palette(ptr long) @ cdecl wined3d_device_set_cursor_position(ptr long long long) @ cdecl wined3d_device_set_cursor_properties(ptr long long ptr) @ cdecl wined3d_device_set_depth_stencil(ptr ptr) @@ -130,7 +127,6 @@ @ cdecl wined3d_device_set_material(ptr ptr) @ cdecl wined3d_device_set_multithreaded(ptr) @ cdecl wined3d_device_set_npatch_mode(ptr float) -@ cdecl wined3d_device_set_palette_entries(ptr long ptr) @ cdecl wined3d_device_set_pixel_shader(ptr ptr) @ cdecl wined3d_device_set_primitive_type(ptr long) @ cdecl wined3d_device_set_ps_consts_b(ptr long ptr long) diff -Nru wine1.3-1.3.30/dlls/wineoss.drv/mmdevdrv.c wine1.3-1.3.31/dlls/wineoss.drv/mmdevdrv.c --- wine1.3-1.3.30/dlls/wineoss.drv/mmdevdrv.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/wineoss.drv/mmdevdrv.c 2011-10-21 18:38:36.000000000 +0000 @@ -119,6 +119,7 @@ int fd; oss_audioinfo ai; + char devnode[OSS_DEVNODE_SIZE]; BOOL initted, playing; UINT64 written_frames; @@ -281,10 +282,34 @@ return Priority_Preferred; } +static const char *oss_clean_devnode(const char *devnode) +{ + static char ret[OSS_DEVNODE_SIZE]; + + const char *dot, *slash; + size_t len; + + dot = strrchr(devnode, '.'); + if(!dot) + return devnode; + + slash = strrchr(devnode, '/'); + if(slash && dot < slash) + return devnode; + + len = dot - devnode; + + memcpy(ret, devnode, len); + ret[len] = '\0'; + + return ret; +} + static UINT get_default_index(EDataFlow flow, char **keys, UINT num) { int fd = -1, err, i; oss_audioinfo ai; + const char *devnode; if(flow == eRender) fd = open("/dev/dsp", O_WRONLY); @@ -306,8 +331,9 @@ close(fd); TRACE("Default devnode: %s\n", ai.devnode); + devnode = oss_clean_devnode(ai.devnode); for(i = 0; i < num; ++i) - if(!strcmp(ai.devnode, keys[i])) + if(!strcmp(devnode, keys[i])) return i; WARN("Couldn't find default device! Choosing first.\n"); @@ -317,7 +343,7 @@ HRESULT WINAPI AUDDRV_GetEndpointIDs(EDataFlow flow, WCHAR ***ids, char ***keys, UINT *num, UINT *def_index) { - int i, mixer_fd; + int i, j, mixer_fd; oss_sysinfo sysinfo; static int print_once = 0; @@ -365,6 +391,7 @@ *num = 0; for(i = 0; i < sysinfo.numaudios; ++i){ oss_audioinfo ai = {0}; + const char *devnode; int fd; ai.dev = i; @@ -374,13 +401,22 @@ continue; } + devnode = oss_clean_devnode(ai.devnode); + + /* check for duplicates */ + for(j = 0; j < *num; ++j) + if(!strcmp(devnode, (*keys)[j])) + break; + if(j != *num) + continue; + if(flow == eRender) - fd = open(ai.devnode, O_WRONLY, 0); + fd = open(devnode, O_WRONLY, 0); else - fd = open(ai.devnode, O_RDONLY, 0); + fd = open(devnode, O_RDONLY, 0); if(fd < 0){ WARN("Opening device \"%s\" failed, pretending it doesn't exist: %d (%s)\n", - ai.devnode, errno, strerror(errno)); + devnode, errno, strerror(errno)); continue; } close(fd); @@ -390,7 +426,7 @@ size_t len; (*keys)[*num] = HeapAlloc(GetProcessHeap(), 0, - strlen(ai.devnode) + 1); + strlen(devnode) + 1); if(!(*keys)[*num]){ for(i = 0; i < *num; ++i){ HeapFree(GetProcessHeap(), 0, (*ids)[i]); @@ -401,7 +437,7 @@ close(mixer_fd); return E_OUTOFMEMORY; } - strcpy((*keys)[*num], ai.devnode); + strcpy((*keys)[*num], devnode); len = MultiByteToWideChar(CP_UNIXCP, 0, ai.name, -1, NULL, 0); (*ids)[*num] = HeapAlloc(GetProcessHeap(), 0, @@ -468,6 +504,8 @@ return E_FAIL; } + strcpy(This->devnode, devnode); + TRACE("OSS audioinfo:\n"); TRACE("devnode: %s\n", This->ai.devnode); TRACE("name: %s\n", This->ai.name); @@ -1100,12 +1138,12 @@ dump_fmt(pwfx); if(This->dataflow == eRender) - fd = open(This->ai.devnode, O_WRONLY, 0); + fd = open(This->devnode, O_WRONLY, 0); else if(This->dataflow == eCapture) - fd = open(This->ai.devnode, O_RDONLY, 0); + fd = open(This->devnode, O_RDONLY, 0); if(fd < 0){ - ERR("Unable to open device %s: %d (%s)\n", This->ai.devnode, errno, + ERR("Unable to open device %s: %d (%s)\n", This->devnode, errno, strerror(errno)); return AUDCLNT_E_DEVICE_INVALIDATED; } @@ -1215,51 +1253,66 @@ static void oss_write_data(ACImpl *This) { - ssize_t written; + ssize_t written_bytes; UINT32 written_frames; - size_t to_write; + size_t to_write_frames, to_write_bytes; + audio_buf_info bi; BYTE *buf = This->local_buffer + (This->lcl_offs_frames * This->fmt->nBlockAlign); if(This->lcl_offs_frames + This->held_frames > This->bufsize_frames) - to_write = This->bufsize_frames - This->lcl_offs_frames; + to_write_frames = This->bufsize_frames - This->lcl_offs_frames; else - to_write = This->held_frames; + to_write_frames = This->held_frames; + to_write_bytes = to_write_frames * This->fmt->nBlockAlign; + + if(ioctl(This->fd, SNDCTL_DSP_GETOSPACE, &bi) < 0){ + WARN("GETOSPACE failed: %d (%s)\n", errno, strerror(errno)); + return; + } + + if(bi.bytes < to_write_bytes){ + to_write_frames = bi.bytes / This->fmt->nBlockAlign; + to_write_bytes = to_write_frames * This->fmt->nBlockAlign; + } if(This->session->mute) - oss_silence_buffer(This, buf, to_write); + oss_silence_buffer(This, buf, to_write_frames); - written = write(This->fd, buf, to_write * This->fmt->nBlockAlign); - if(written < 0){ + written_bytes = write(This->fd, buf, to_write_bytes); + if(written_bytes < 0){ /* EAGAIN is OSS buffer full, log that too */ WARN("write failed: %d (%s)\n", errno, strerror(errno)); return; } - written_frames = written / This->fmt->nBlockAlign; + written_frames = written_bytes / This->fmt->nBlockAlign; This->lcl_offs_frames += written_frames; This->lcl_offs_frames %= This->bufsize_frames; This->held_frames -= written_frames; This->inbuf_frames += written_frames; - if(written_frames < to_write){ + if(written_frames < to_write_frames){ /* OSS buffer probably full */ return; } - if(This->held_frames){ + bi.bytes -= written_bytes; + if(This->held_frames && bi.bytes >= This->fmt->nBlockAlign){ /* wrapped and have some data back at the start to write */ + to_write_frames = bi.bytes / This->fmt->nBlockAlign; + to_write_bytes = to_write_frames * This->fmt->nBlockAlign; + if(This->session->mute) - oss_silence_buffer(This, This->local_buffer, This->held_frames); + oss_silence_buffer(This, This->local_buffer, to_write_frames); - written = write(This->fd, This->local_buffer, - This->held_frames * This->fmt->nBlockAlign); - if(written < 0){ + written_bytes = write(This->fd, This->local_buffer, to_write_bytes); + if(written_bytes < 0){ WARN("write failed: %d (%s)\n", errno, strerror(errno)); return; } - written_frames = written / This->fmt->nBlockAlign; + written_frames = written_bytes / This->fmt->nBlockAlign; This->lcl_offs_frames += written_frames; This->lcl_offs_frames %= This->bufsize_frames; diff -Nru wine1.3-1.3.30/dlls/wineps.drv/bitmap.c wine1.3-1.3.31/dlls/wineps.drv/bitmap.c --- wine1.3-1.3.30/dlls/wineps.drv/bitmap.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/wineps.drv/bitmap.c 2011-10-21 18:38:36.000000000 +0000 @@ -38,7 +38,7 @@ /*************************************************************************** * PSDRV_WriteImageHeader * - * Helper for PSDRV_StretchDIBits + * Helper for PSDRV_PutImage * * BUGS * Uses level 2 PostScript @@ -79,7 +79,7 @@ /*************************************************************************** * PSDRV_WriteImageMaskHeader * - * Helper for PSDRV_StretchDIBits + * Helper for PSDRV_PutImage * * We use the imagemask operator for 1bpp bitmaps since the output * takes much less time for the printer to render. @@ -276,157 +276,3 @@ info->bmiHeader.biCompression = BI_RGB; return ERROR_BAD_FORMAT; } - -/*************************************************************************** - * - * PSDRV_StretchDIBits - * - * BUGS - * Doesn't work correctly if xSrc isn't byte aligned - this affects 1 and 4 - * bit depths. - * Compression not implemented. - */ -INT PSDRV_StretchDIBits( PHYSDEV dev, INT xDst, INT yDst, INT widthDst, - INT heightDst, INT xSrc, INT ySrc, INT widthSrc, INT heightSrc, const void *bits, - BITMAPINFO *info, UINT wUsage, DWORD dwRop ) -{ - INT stride; - INT line; - POINT pt[2]; - const BYTE *src_ptr; - BYTE *dst_ptr, *bitmap; - DWORD bitmap_size; - - TRACE("%p (%d,%d %dx%d) -> (%d,%d %dx%d)\n", dev->hdc, - xSrc, ySrc, widthSrc, heightSrc, xDst, yDst, widthDst, heightDst); - - stride = get_dib_width_bytes( info->bmiHeader.biWidth, info->bmiHeader.biBitCount ); - - TRACE("full size=%dx%d bpp=%d compression=%d rop=%08x\n", info->bmiHeader.biWidth, - info->bmiHeader.biHeight, info->bmiHeader.biBitCount, info->bmiHeader.biCompression, dwRop); - - - if(info->bmiHeader.biCompression != BI_RGB) { - FIXME("Compression not supported\n"); - return FALSE; - } - - pt[0].x = xDst; - pt[0].y = yDst; - pt[1].x = xDst + widthDst; - pt[1].y = yDst + heightDst; - LPtoDP( dev->hdc, pt, 2 ); - xDst = pt[0].x; - yDst = pt[0].y; - widthDst = pt[1].x - pt[0].x; - heightDst = pt[1].y - pt[0].y; - - switch (info->bmiHeader.biBitCount) { - - case 1: - src_ptr = bits; - src_ptr += (ySrc * stride); - if(xSrc & 7) - FIXME("This won't work...\n"); - bitmap_size = heightSrc * ((widthSrc + 7) / 8); - dst_ptr = bitmap = HeapAlloc(GetProcessHeap(), 0, bitmap_size); - for(line = 0; line < heightSrc; line++, src_ptr += stride, dst_ptr += ((widthSrc + 7) / 8)) - memcpy(dst_ptr, src_ptr + xSrc / 8, (widthSrc + 7) / 8); - break; - - case 4: - src_ptr = bits; - src_ptr += (ySrc * stride); - if(xSrc & 1) - FIXME("This won't work...\n"); - bitmap_size = heightSrc * ((widthSrc + 1) / 2); - dst_ptr = bitmap = HeapAlloc(GetProcessHeap(), 0, bitmap_size); - for(line = 0; line < heightSrc; line++, src_ptr += stride, dst_ptr += ((widthSrc + 1) / 2)) - memcpy(dst_ptr, src_ptr + xSrc/2, (widthSrc+1)/2); - break; - - case 8: - src_ptr = bits; - src_ptr += (ySrc * stride); - bitmap_size = heightSrc * widthSrc; - dst_ptr = bitmap = HeapAlloc(GetProcessHeap(), 0, bitmap_size); - for(line = 0; line < heightSrc; line++, src_ptr += stride, dst_ptr += widthSrc) - memcpy(dst_ptr, src_ptr + xSrc, widthSrc); - break; - - case 16: - src_ptr = bits; - src_ptr += (ySrc * stride); - bitmap_size = heightSrc * widthSrc * 3; - dst_ptr = bitmap = HeapAlloc(GetProcessHeap(), 0, bitmap_size); - - for(line = 0; line < heightSrc; line++, src_ptr += stride) { - const WORD *words = (const WORD *)src_ptr + xSrc; - int i; - for(i = 0; i < widthSrc; i++) { - BYTE r, g, b; - - /* We want 0x0 -- 0x1f to map to 0x0 -- 0xff */ - r = words[i] >> 10 & 0x1f; - r = r << 3 | r >> 2; - g = words[i] >> 5 & 0x1f; - g = g << 3 | g >> 2; - b = words[i] & 0x1f; - b = b << 3 | b >> 2; - dst_ptr[0] = r; - dst_ptr[1] = g; - dst_ptr[2] = b; - dst_ptr += 3; - } - } - break; - - case 24: - src_ptr = bits; - src_ptr += (ySrc * stride); - bitmap_size = heightSrc * widthSrc * 3; - dst_ptr = bitmap = HeapAlloc(GetProcessHeap(), 0, bitmap_size); - for(line = 0; line < heightSrc; line++, src_ptr += stride) { - const BYTE *byte = src_ptr + xSrc * 3; - int i; - for(i = 0; i < widthSrc; i++) { - dst_ptr[0] = byte[i * 3 + 2]; - dst_ptr[1] = byte[i * 3 + 1]; - dst_ptr[2] = byte[i * 3]; - dst_ptr += 3; - } - } - break; - - case 32: - src_ptr = bits; - src_ptr += (ySrc * stride); - bitmap_size = heightSrc * widthSrc * 3; - dst_ptr = bitmap = HeapAlloc(GetProcessHeap(), 0, bitmap_size); - for(line = 0; line < heightSrc; line++, src_ptr += stride) { - const BYTE *byte = src_ptr + xSrc * 4; - int i; - for(i = 0; i < widthSrc; i++) { - dst_ptr[0] = byte[i * 4 + 2]; - dst_ptr[1] = byte[i * 4 + 1]; - dst_ptr[2] = byte[i * 4]; - dst_ptr += 3; - } - } - break; - - default: - FIXME("Unsupported depth\n"); - return FALSE; - - } - - PSDRV_SetClip(dev); - PSDRV_WriteGSave(dev); - PSDRV_WriteImageBits( dev, info, xDst, yDst, widthDst, heightDst, - widthSrc, heightSrc, bitmap, bitmap_size ); - HeapFree(GetProcessHeap(), 0, bitmap); - PSDRV_WriteGRestore(dev); - PSDRV_ResetClip(dev); - return abs(heightSrc); -} diff -Nru wine1.3-1.3.30/dlls/wineps.drv/builtin.c wine1.3-1.3.31/dlls/wineps.drv/builtin.c --- wine1.3-1.3.30/dlls/wineps.drv/builtin.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/wineps.drv/builtin.c 2011-10-21 18:38:36.000000000 +0000 @@ -264,7 +264,11 @@ { PSDRV_PDEVICE *physDev = get_psdrv_dev( dev ); - assert(physDev->font.fontloc == Builtin); + if (physDev->font.fontloc == Download) + { + dev = GET_NEXT_PHYSDEV( dev, pGetTextMetrics ); + return dev->funcs->pGetTextMetrics( dev, metrics ); + } memcpy(metrics, &(physDev->font.fontinfo.Builtin.tm), sizeof(physDev->font.fontinfo.Builtin.tm)); @@ -322,7 +326,11 @@ float width = 0.0; float scale; - assert(physDev->font.fontloc == Builtin); + if (physDev->font.fontloc == Download) + { + dev = GET_NEXT_PHYSDEV( dev, pGetTextExtentExPoint ); + return dev->funcs->pGetTextExtentExPoint( dev, str, count, maxExt, lpnFit, alpDx, size ); + } TRACE("%s %i\n", debugstr_wn(str, count), count); @@ -357,7 +365,11 @@ PSDRV_PDEVICE *physDev = get_psdrv_dev( dev ); UINT i; - assert(physDev->font.fontloc == Builtin); + if (physDev->font.fontloc == Download) + { + dev = GET_NEXT_PHYSDEV( dev, pGetCharWidth ); + return dev->funcs->pGetCharWidth( dev, firstChar, lastChar, buffer ); + } TRACE("U+%.4X U+%.4X\n", firstChar, lastChar); diff -Nru wine1.3-1.3.30/dlls/wineps.drv/escape.c wine1.3-1.3.31/dlls/wineps.drv/escape.c --- wine1.3-1.3.30/dlls/wineps.drv/escape.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/wineps.drv/escape.c 2011-10-21 18:38:36.000000000 +0000 @@ -360,7 +360,7 @@ } } default: - FIXME("Unimplemented code 0x%x\n", nEscape); + FIXME("Unimplemented code %d\n", nEscape); return 0; } } diff -Nru wine1.3-1.3.30/dlls/wineps.drv/font.c wine1.3-1.3.31/dlls/wineps.drv/font.c --- wine1.3-1.3.30/dlls/wineps.drv/font.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/wineps.drv/font.c 2011-10-21 18:38:36.000000000 +0000 @@ -36,14 +36,16 @@ /*********************************************************************** * SelectFont (WINEPS.@) */ -HFONT PSDRV_SelectFont( PHYSDEV dev, HFONT hfont, HANDLE gdiFont ) +HFONT PSDRV_SelectFont( PHYSDEV dev, HFONT hfont ) { PSDRV_PDEVICE *physDev = get_psdrv_dev( dev ); + PHYSDEV next = GET_NEXT_PHYSDEV( dev, pSelectFont ); + HFONT ret; LOGFONTW lf; BOOL subst = FALSE; char FaceName[LF_FACESIZE]; - if (!GetObjectW( hfont, sizeof(lf), &lf )) return HGDI_ERROR; + if (!GetObjectW( hfont, sizeof(lf), &lf )) return 0; TRACE("FaceName = %s Height = %d Italic = %d Weight = %d\n", debugstr_w(lf.lfFaceName), lf.lfHeight, lf.lfItalic, @@ -112,13 +114,15 @@ physDev->font.escapement = lf.lfEscapement; physDev->font.set = FALSE; - if(gdiFont && !subst) { - if(PSDRV_SelectDownloadFont(dev)) - return 0; /* use gdi font */ + if (!subst && ((ret = next->funcs->pSelectFont( next, hfont )))) + { + PSDRV_SelectDownloadFont(dev); + return ret; } PSDRV_SelectBuiltinFont(dev, hfont, &lf, FaceName); - return (HFONT)1; /* use device font */ + next->funcs->pSelectFont( next, 0 ); /* tell next driver that we selected a device font */ + return hfont; } /*********************************************************************** diff -Nru wine1.3-1.3.30/dlls/wineps.drv/init.c wine1.3-1.3.31/dlls/wineps.drv/init.c --- wine1.3-1.3.30/dlls/wineps.drv/init.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/wineps.drv/init.c 2011-10-21 18:38:36.000000000 +0000 @@ -931,7 +931,7 @@ PSDRV_StartDoc, /* pStartDoc */ PSDRV_StartPage, /* pStartPage */ NULL, /* pStretchBlt */ - PSDRV_StretchDIBits, /* pStretchDIBits */ + NULL, /* pStretchDIBits */ NULL, /* pStrokeAndFillPath */ NULL, /* pStrokePath */ NULL, /* pSwapBuffers */ diff -Nru wine1.3-1.3.30/dlls/wineps.drv/pen.c wine1.3-1.3.31/dlls/wineps.drv/pen.c --- wine1.3-1.3.30/dlls/wineps.drv/pen.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/wineps.drv/pen.c 2011-10-21 18:38:36.000000000 +0000 @@ -28,11 +28,11 @@ WINE_DEFAULT_DEBUG_CHANNEL(psdrv); -static const char PEN_dash[] = "50 30"; /* ----- ----- ----- */ -static const char PEN_dot[] = "20"; /* -- -- -- -- -- -- */ -static const char PEN_dashdot[] = "40 30 20 30"; /* ---- -- ---- -- */ -static const char PEN_dashdotdot[] = "40 20 20 20 20 20"; /* ---- -- -- ---- */ -static const char PEN_alternate[] = "1"; +static const DWORD PEN_dash[] = { 50, 30 }; /* ----- ----- ----- */ +static const DWORD PEN_dot[] = { 20 }; /* -- -- -- -- -- -- */ +static const DWORD PEN_dashdot[] = { 40, 30, 20, 30 }; /* ---- -- ---- -- */ +static const DWORD PEN_dashdotdot[] = { 40, 20, 20, 20, 20, 20 }; /* ---- -- -- ---- */ +static const DWORD PEN_alternate[] = { 1 }; /*********************************************************************** * SelectPen (WINEPS.@) @@ -41,11 +41,11 @@ { PSDRV_PDEVICE *physDev = get_psdrv_dev( dev ); LOGPEN logpen; + EXTLOGPEN *elp = NULL; if (!GetObjectW( hpen, sizeof(logpen), &logpen )) { /* must be an extended pen */ - EXTLOGPEN *elp; INT size = GetObjectW( hpen, 0, NULL ); if (!size) return 0; @@ -58,8 +58,6 @@ logpen.lopnWidth.x = elp->elpWidth; logpen.lopnWidth.y = 0; logpen.lopnColor = elp->elpColor; - - HeapFree( GetProcessHeap(), 0, elp ); } TRACE("hpen = %p colour = %08x\n", hpen, logpen.lopnColor); @@ -94,34 +92,47 @@ switch(physDev->pen.style) { case PS_DASH: - physDev->pen.dash = PEN_dash; + memcpy( physDev->pen.dash, PEN_dash, sizeof(PEN_dash) ); + physDev->pen.dash_len = sizeof(PEN_dash) / sizeof(DWORD); break; case PS_DOT: - physDev->pen.dash = PEN_dot; + memcpy( physDev->pen.dash, PEN_dot, sizeof(PEN_dot) ); + physDev->pen.dash_len = sizeof(PEN_dot) / sizeof(DWORD); break; case PS_DASHDOT: - physDev->pen.dash = PEN_dashdot; + memcpy( physDev->pen.dash, PEN_dashdot, sizeof(PEN_dashdot) ); + physDev->pen.dash_len = sizeof(PEN_dashdot) / sizeof(DWORD); break; case PS_DASHDOTDOT: - physDev->pen.dash = PEN_dashdotdot; + memcpy( physDev->pen.dash, PEN_dashdotdot, sizeof(PEN_dashdotdot) ); + physDev->pen.dash_len = sizeof(PEN_dashdotdot) / sizeof(DWORD); break; case PS_ALTERNATE: - physDev->pen.dash = PEN_alternate; + memcpy( physDev->pen.dash, PEN_alternate, sizeof(PEN_alternate) ); + physDev->pen.dash_len = sizeof(PEN_alternate) / sizeof(DWORD); + break; + + case PS_USERSTYLE: + physDev->pen.dash_len = min( elp->elpNumEntries, MAX_DASHLEN ); + memcpy( physDev->pen.dash, elp->elpStyleEntry, physDev->pen.dash_len * sizeof(DWORD) ); break; default: - physDev->pen.dash = NULL; + physDev->pen.dash_len = 0; } - if ((physDev->pen.width > 1) && (physDev->pen.dash != NULL)) { - physDev->pen.style = PS_SOLID; - physDev->pen.dash = NULL; + if ((physDev->pen.width > 1) && physDev->pen.dash_len && + physDev->pen.style != PS_USERSTYLE && physDev->pen.style != PS_ALTERNATE) + { + physDev->pen.style = PS_SOLID; + physDev->pen.dash_len = 0; } + HeapFree( GetProcessHeap(), 0, elp ); physDev->pen.set = FALSE; return hpen; } diff -Nru wine1.3-1.3.30/dlls/wineps.drv/ps.c wine1.3-1.3.31/dlls/wineps.drv/ps.c --- wine1.3-1.3.30/dlls/wineps.drv/ps.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/wineps.drv/ps.c 2011-10-21 18:38:36.000000000 +0000 @@ -125,9 +125,6 @@ static const char pssetline[] = /* width, join, endcap */ "%d setlinewidth %u setlinejoin %u setlinecap\n"; -static const char pssetdash[] = /* dash, offset */ -"[%s] %d setdash\n"; - static const char pssetgray[] = /* gray */ "%.2f setgray\n"; @@ -556,16 +553,21 @@ { PSDRV_PDEVICE *physDev = get_psdrv_dev( dev ); char buf[256]; + DWORD i, pos; sprintf(buf, pssetline, physDev->pen.width, physDev->pen.join, physDev->pen.endcap); PSDRV_WriteSpool(dev, buf, strlen(buf)); - if(physDev->pen.dash) { - sprintf(buf, pssetdash, physDev->pen.dash, 0); + if (physDev->pen.dash_len) + { + for (i = pos = 0; i < physDev->pen.dash_len; i++) + pos += sprintf( buf + pos, " %u", physDev->pen.dash[i] ); + buf[0] = '['; + sprintf(buf + pos, "] %u setdash\n", 0); } else - sprintf(buf, pssetdash, "", 0); - + sprintf(buf, "[] %u setdash\n", 0); + PSDRV_WriteSpool(dev, buf, strlen(buf)); return TRUE; diff -Nru wine1.3-1.3.30/dlls/wineps.drv/psdrv.h wine1.3-1.3.31/dlls/wineps.drv/psdrv.h --- wine1.3-1.3.30/dlls/wineps.drv/psdrv.h 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/wineps.drv/psdrv.h 2011-10-21 18:38:36.000000000 +0000 @@ -329,12 +329,15 @@ BOOL set; } PSBRUSH; +#define MAX_DASHLEN 16 + typedef struct { INT style; INT width; BYTE join; BYTE endcap; - const char* dash; + DWORD dash[MAX_DASHLEN]; + DWORD dash_len; PSCOLOR color; BOOL set; } PSPEN; @@ -451,7 +454,7 @@ INT bottom, INT ell_width, INT ell_height ) DECLSPEC_HIDDEN; extern HBRUSH PSDRV_SelectBrush( PHYSDEV dev, HBRUSH hbrush ) DECLSPEC_HIDDEN; extern HBRUSH PSDRV_SelectBrush( PHYSDEV dev, HBRUSH hbrush ) DECLSPEC_HIDDEN; -extern HFONT PSDRV_SelectFont( PHYSDEV dev, HFONT hfont, HANDLE gdiFont ) DECLSPEC_HIDDEN; +extern HFONT PSDRV_SelectFont( PHYSDEV dev, HFONT hfont ) DECLSPEC_HIDDEN; extern HPEN PSDRV_SelectPen( PHYSDEV dev, HPEN hpen ) DECLSPEC_HIDDEN; extern COLORREF PSDRV_SetBkColor( PHYSDEV dev, COLORREF color ) DECLSPEC_HIDDEN; extern COLORREF PSDRV_SetDCBrushColor( PHYSDEV dev, COLORREF color ) DECLSPEC_HIDDEN; @@ -459,10 +462,6 @@ extern COLORREF PSDRV_SetPixel( PHYSDEV dev, INT x, INT y, COLORREF color ) DECLSPEC_HIDDEN; extern COLORREF PSDRV_SetTextColor( PHYSDEV dev, COLORREF color ) DECLSPEC_HIDDEN; extern INT PSDRV_StartDoc( PHYSDEV dev, const DOCINFOW *doc ) DECLSPEC_HIDDEN; -extern INT PSDRV_StretchDIBits( PHYSDEV dev, INT xDst, INT yDst, INT widthDst, - INT heightDst, INT xSrc, INT ySrc, - INT widthSrc, INT heightSrc, const void *bits, - BITMAPINFO *info, UINT wUsage, DWORD dwRop ) DECLSPEC_HIDDEN; extern void PSDRV_MergeDevmodes(PSDRV_DEVMODEA *dm1, PSDRV_DEVMODEA *dm2, PRINTERINFO *pi) DECLSPEC_HIDDEN; diff -Nru wine1.3-1.3.30/dlls/winex11.drv/bitblt.c wine1.3-1.3.31/dlls/winex11.drv/bitblt.c --- wine1.3-1.3.30/dlls/winex11.drv/bitblt.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/winex11.drv/bitblt.c 2011-10-21 18:38:36.000000000 +0000 @@ -582,150 +582,6 @@ #endif /* BITBLT_TEST */ -/* return a mask for meaningful bits when doing an XGetPixel on an image */ -static unsigned long image_pixel_mask( X11DRV_PDEVICE *physDev ) -{ - unsigned long ret; - ColorShifts *shifts = physDev->color_shifts; - - if (!shifts) shifts = &X11DRV_PALETTE_default_shifts; - ret = (shifts->physicalRed.max << shifts->physicalRed.shift) | - (shifts->physicalGreen.max << shifts->physicalGreen.shift) | - (shifts->physicalBlue.max << shifts->physicalBlue.shift); - if (!ret) ret = (1 << physDev->depth) - 1; - return ret; -} - - -/*********************************************************************** - * BITBLT_GetSrcArea - * - * Retrieve an area from the source DC, mapping all the - * pixels to Windows colors. - */ -static int BITBLT_GetSrcArea( X11DRV_PDEVICE *physDevSrc, X11DRV_PDEVICE *physDevDst, - Pixmap pixmap, GC gc, RECT *visRectSrc ) -{ - XImage *imageSrc, *imageDst; - register INT x, y; - int exposures = 0; - INT width = visRectSrc->right - visRectSrc->left; - INT height = visRectSrc->bottom - visRectSrc->top; - BOOL memdc = (GetObjectType(physDevSrc->dev.hdc) == OBJ_MEMDC); - - if (physDevSrc->depth == physDevDst->depth) - { - wine_tsx11_lock(); - if (!X11DRV_PALETTE_XPixelToPalette || - (physDevDst->depth == 1)) /* monochrome -> monochrome */ - { - if (physDevDst->depth == 1) - { - /* MSDN says if StretchBlt must convert a bitmap from monochrome - to color or vice versa, the foreground and background color of - the device context are used. In fact, it also applies to the - case when it is converted from mono to mono. */ - XSetBackground( gdi_display, gc, physDevDst->textPixel ); - XSetForeground( gdi_display, gc, physDevDst->backgroundPixel ); - XCopyPlane( gdi_display, physDevSrc->drawable, pixmap, gc, - physDevSrc->dc_rect.left + visRectSrc->left, - physDevSrc->dc_rect.top + visRectSrc->top, - width, height, 0, 0, 1); - } - else - XCopyArea( gdi_display, physDevSrc->drawable, pixmap, gc, - physDevSrc->dc_rect.left + visRectSrc->left, - physDevSrc->dc_rect.top + visRectSrc->top, - width, height, 0, 0); - exposures++; - } - else /* color -> color */ - { - if (memdc) - imageSrc = XGetImage( gdi_display, physDevSrc->drawable, - physDevSrc->dc_rect.left + visRectSrc->left, - physDevSrc->dc_rect.top + visRectSrc->top, - width, height, AllPlanes, ZPixmap ); - else - { - /* Make sure we don't get a BadMatch error */ - XCopyArea( gdi_display, physDevSrc->drawable, pixmap, gc, - physDevSrc->dc_rect.left + visRectSrc->left, - physDevSrc->dc_rect.top + visRectSrc->top, - width, height, 0, 0); - exposures++; - imageSrc = XGetImage( gdi_display, pixmap, 0, 0, width, height, - AllPlanes, ZPixmap ); - } - for (y = 0; y < height; y++) - for (x = 0; x < width; x++) - XPutPixel(imageSrc, x, y, - X11DRV_PALETTE_XPixelToPalette[XGetPixel(imageSrc, x, y)]); - XPutImage( gdi_display, pixmap, gc, imageSrc, - 0, 0, 0, 0, width, height ); - XDestroyImage( imageSrc ); - } - wine_tsx11_unlock(); - } - else - { - if (physDevSrc->depth == 1) /* monochrome -> color */ - { - wine_tsx11_lock(); - if (X11DRV_PALETTE_XPixelToPalette) - { - XSetBackground( gdi_display, gc, X11DRV_PALETTE_XPixelToPalette[physDevDst->textPixel] ); - XSetForeground( gdi_display, gc, X11DRV_PALETTE_XPixelToPalette[physDevDst->backgroundPixel]); - } - else - { - XSetBackground( gdi_display, gc, physDevDst->textPixel ); - XSetForeground( gdi_display, gc, physDevDst->backgroundPixel ); - } - XCopyPlane( gdi_display, physDevSrc->drawable, pixmap, gc, - physDevSrc->dc_rect.left + visRectSrc->left, - physDevSrc->dc_rect.top + visRectSrc->top, - width, height, 0, 0, 1 ); - exposures++; - wine_tsx11_unlock(); - } - else /* color -> monochrome */ - { - unsigned long pixel_mask; - wine_tsx11_lock(); - /* FIXME: avoid BadMatch error */ - imageSrc = XGetImage( gdi_display, physDevSrc->drawable, - physDevSrc->dc_rect.left + visRectSrc->left, - physDevSrc->dc_rect.top + visRectSrc->top, - width, height, AllPlanes, ZPixmap ); - if (!imageSrc) - { - wine_tsx11_unlock(); - return exposures; - } - imageDst = X11DRV_DIB_CreateXImage( width, height, physDevDst->depth ); - if (!imageDst) - { - XDestroyImage(imageSrc); - wine_tsx11_unlock(); - return exposures; - } - pixel_mask = image_pixel_mask( physDevSrc ); - for (y = 0; y < height; y++) - for (x = 0; x < width; x++) - XPutPixel(imageDst, x, y, - !((XGetPixel(imageSrc,x,y) ^ physDevSrc->backgroundPixel) & pixel_mask)); - XPutImage( gdi_display, pixmap, gc, imageDst, - 0, 0, 0, 0, width, height ); - XDestroyImage( imageSrc ); - X11DRV_DIB_DestroyXImage( imageDst ); - wine_tsx11_unlock(); - } - } - return exposures; -} - - /*********************************************************************** * BITBLT_GetDstArea * @@ -957,10 +813,12 @@ INT width, height; const BYTE *opcode; Pixmap src_pixmap; - GC tmpGC; + GC gc; if (src_dev->funcs != dst_dev->funcs || - src->width != dst->width || src->height != dst->height) /* no stretching with core X11 */ + src->width != dst->width || src->height != dst->height || /* no stretching with core X11 */ + (physDevDst->depth == 1 && physDevSrc->depth != 1) || /* color -> mono done by hand */ + (X11DRV_PALETTE_XPixelToPalette && physDevSrc->depth != 1)) /* needs palette mapping */ { dst_dev = GET_NEXT_PHYSDEV( dst_dev, pStretchBlt ); return dst_dev->funcs->pStretchBlt( dst_dev, dst, src_dev, src, rop ); @@ -1012,18 +870,48 @@ } wine_tsx11_lock(); - tmpGC = XCreateGC( gdi_display, physDevDst->drawable, 0, NULL ); - XSetSubwindowMode( gdi_display, tmpGC, IncludeInferiors ); - XSetGraphicsExposures( gdi_display, tmpGC, False ); + gc = XCreateGC( gdi_display, physDevDst->drawable, 0, NULL ); + XSetSubwindowMode( gdi_display, gc, IncludeInferiors ); + XSetGraphicsExposures( gdi_display, gc, False ); + + /* retrieve the source */ + src_pixmap = XCreatePixmap( gdi_display, root_window, width, height, physDevDst->depth ); + if (physDevSrc->depth == 1) + { + /* MSDN says if StretchBlt must convert a bitmap from monochrome + to color or vice versa, the foreground and background color of + the device context are used. In fact, it also applies to the + case when it is converted from mono to mono. */ + if (X11DRV_PALETTE_XPixelToPalette && physDevDst->depth != 1) + { + XSetBackground( gdi_display, gc, X11DRV_PALETTE_XPixelToPalette[physDevDst->textPixel] ); + XSetForeground( gdi_display, gc, X11DRV_PALETTE_XPixelToPalette[physDevDst->backgroundPixel]); + } + else + { + XSetBackground( gdi_display, gc, physDevDst->textPixel ); + XSetForeground( gdi_display, gc, physDevDst->backgroundPixel ); + } + XCopyPlane( gdi_display, physDevSrc->drawable, src_pixmap, gc, + physDevSrc->dc_rect.left + src->visrect.left, + physDevSrc->dc_rect.top + src->visrect.top, + width, height, 0, 0, 1 ); + } + else /* color -> color */ + { + XCopyArea( gdi_display, physDevSrc->drawable, src_pixmap, gc, + physDevSrc->dc_rect.left + src->visrect.left, + physDevSrc->dc_rect.top + src->visrect.top, + width, height, 0, 0 ); + } wine_tsx11_unlock(); - BITBLT_GetSrcArea( physDevSrc, physDevDst, src_pixmap, tmpGC, &src->visrect ); - execute_rop( physDevDst, src_pixmap, tmpGC, &dst->visrect, rop ); + execute_rop( physDevDst, src_pixmap, gc, &dst->visrect, rop ); wine_tsx11_lock(); XFreePixmap( gdi_display, src_pixmap ); - XFreeGC( gdi_display, tmpGC ); + XFreeGC( gdi_display, gc ); wine_tsx11_unlock(); done: diff -Nru wine1.3-1.3.30/dlls/winex11.drv/dib.c wine1.3-1.3.31/dlls/winex11.drv/dib.c --- wine1.3-1.3.30/dlls/winex11.drv/dib.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/winex11.drv/dib.c 2011-10-21 18:38:36.000000000 +0000 @@ -437,11 +437,17 @@ switch (width & 7) { case 7: XPutPixel(bmpImage, x++, h, colors[srcval >> 7]); srcval<<=1; + /* fall through */ case 6: XPutPixel(bmpImage, x++, h, colors[srcval >> 7]); srcval<<=1; + /* fall through */ case 5: XPutPixel(bmpImage, x++, h, colors[srcval >> 7]); srcval<<=1; + /* fall through */ case 4: XPutPixel(bmpImage, x++, h, colors[srcval >> 7]); srcval<<=1; + /* fall through */ case 3: XPutPixel(bmpImage, x++, h, colors[srcval >> 7]); srcval<<=1; + /* fall through */ case 2: XPutPixel(bmpImage, x++, h, colors[srcval >> 7]); srcval<<=1; + /* fall through */ case 1: XPutPixel(bmpImage, x++, h, colors[srcval >> 7]); } } diff -Nru wine1.3-1.3.30/dlls/winex11.drv/keyboard.c wine1.3-1.3.31/dlls/winex11.drv/keyboard.c --- wine1.3-1.3.30/dlls/winex11.drv/keyboard.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/winex11.drv/keyboard.c 2011-10-21 18:38:36.000000000 +0000 @@ -2242,6 +2242,7 @@ case VK_RSHIFT: /* R-Shift is "special" - it is an extended key with separate scan code */ scanCode |= 0x100; + /* fall through */ case VK_LSHIFT: vkey = VK_SHIFT; break; diff -Nru wine1.3-1.3.30/dlls/winex11.drv/pen.c wine1.3-1.3.31/dlls/winex11.drv/pen.c --- wine1.3-1.3.30/dlls/winex11.drv/pen.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/winex11.drv/pen.c 2011-10-21 18:38:36.000000000 +0000 @@ -25,6 +25,35 @@ WINE_DEFAULT_DEBUG_CHANNEL(x11drv); + +static DWORD get_user_dashes( char *res, const DWORD *style, DWORD len ) +{ + DWORD i, pos, dashes[MAX_DASHLEN]; + + len = min( len, MAX_DASHLEN ); + memcpy( dashes, style, len * sizeof(DWORD) ); + for (i = pos = 0; i < len; i++) + { + if (!dashes[i]) /* get rid of 0 entry */ + { + if (i < len - 1) + { + i++; + if (pos) dashes[pos - 1] += dashes[i]; + else dashes[len - 1] += dashes[i]; + } + else if (pos) + { + dashes[0] += dashes[pos - 1]; + pos--; + } + } + else dashes[pos++] = dashes[i]; + } + for (i = 0; i < pos; i++) res[i] = min( dashes[i], 255 ); + return pos; +} + /*********************************************************************** * SelectPen (X11DRV.@) */ @@ -42,11 +71,11 @@ X11DRV_PDEVICE *physDev = get_x11drv_dev( dev ); LOGPEN logpen; int i; + EXTLOGPEN *elp = NULL; if (!GetObjectW( hpen, sizeof(logpen), &logpen )) { /* must be an extended pen */ - EXTLOGPEN *elp; INT size = GetObjectW( hpen, 0, NULL ); if (!size) return 0; @@ -55,13 +84,10 @@ elp = HeapAlloc( GetProcessHeap(), 0, size ); GetObjectW( hpen, size, elp ); - /* FIXME: add support for user style pens */ logpen.lopnStyle = elp->elpPenStyle; logpen.lopnWidth.x = elp->elpWidth; logpen.lopnWidth.y = 0; logpen.lopnColor = elp->elpColor; - - HeapFree( GetProcessHeap(), 0, elp ); } else physDev->pen.ext = 0; @@ -109,16 +135,20 @@ memcpy(physDev->pen.dashes, PEN_alternate, physDev->pen.dash_len); break; case PS_USERSTYLE: - FIXME("PS_USERSTYLE is not supported\n"); - /* fall through */ + physDev->pen.dash_len = get_user_dashes( physDev->pen.dashes, + elp->elpStyleEntry, elp->elpNumEntries ); + break; default: physDev->pen.dash_len = 0; break; } - if(physDev->pen.ext && physDev->pen.dash_len && - (logpen.lopnStyle & PS_STYLE_MASK) != PS_ALTERNATE) + if(physDev->pen.ext && physDev->pen.dash_len && physDev->pen.width && + (logpen.lopnStyle & PS_STYLE_MASK) != PS_USERSTYLE && + (logpen.lopnStyle & PS_STYLE_MASK) != PS_ALTERNATE) for(i = 0; i < physDev->pen.dash_len; i++) - physDev->pen.dashes[i] *= (physDev->pen.width ? physDev->pen.width : 1); + physDev->pen.dashes[i] = min( physDev->pen.dashes[i] * physDev->pen.width, 255 ); + + HeapFree( GetProcessHeap(), 0, elp ); return hpen; } diff -Nru wine1.3-1.3.30/dlls/winex11.drv/text.c wine1.3-1.3.31/dlls/winex11.drv/text.c --- wine1.3-1.3.30/dlls/winex11.drv/text.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/winex11.drv/text.c 2011-10-21 18:38:36.000000000 +0000 @@ -43,16 +43,21 @@ X11DRV_PDEVICE *physDev = get_x11drv_dev( dev ); RGNDATA *saved_region = NULL; unsigned int i; - fontObject* pfo; + fontObject* pfo = XFONT_GetFontObject( physDev->font ); XFontStruct* font; BOOL rotated = FALSE; XChar2b *str2b = NULL; BOOL dibUpdateFlag = FALSE; BOOL result = TRUE; + if (!pfo) + { + dev = GET_NEXT_PHYSDEV( dev, pExtTextOut ); + return dev->funcs->pExtTextOut( dev, x, y, flags, lprect, wstr, count, lpDx ); + } + if (!X11DRV_SetupGCForText( physDev )) return TRUE; - pfo = XFONT_GetFontObject( physDev->font ); font = pfo->fs; if (pfo->lf.lfEscapement && pfo->lpX11Trans) @@ -232,5 +237,7 @@ HeapFree( GetProcessHeap(), 0, p ); return TRUE; } - return FALSE; + + dev = GET_NEXT_PHYSDEV( dev, pGetTextExtentExPoint ); + return dev->funcs->pGetTextExtentExPoint( dev, str, count, maxExt, lpnFit, alpDx, size ); } diff -Nru wine1.3-1.3.30/dlls/winex11.drv/x11drv.h wine1.3-1.3.31/dlls/winex11.drv/x11drv.h --- wine1.3-1.3.30/dlls/winex11.drv/x11drv.h 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/winex11.drv/x11drv.h 2011-10-21 18:38:36.000000000 +0000 @@ -222,7 +222,7 @@ INT ell_width, INT ell_height ) DECLSPEC_HIDDEN; extern HBITMAP X11DRV_SelectBitmap( PHYSDEV dev, HBITMAP hbitmap ) DECLSPEC_HIDDEN; extern HBRUSH X11DRV_SelectBrush( PHYSDEV dev, HBRUSH hbrush ) DECLSPEC_HIDDEN; -extern HFONT X11DRV_SelectFont( PHYSDEV dev, HFONT hfont, HANDLE gdiFont ) DECLSPEC_HIDDEN; +extern HFONT X11DRV_SelectFont( PHYSDEV dev, HFONT hfont ) DECLSPEC_HIDDEN; extern HPEN X11DRV_SelectPen( PHYSDEV dev, HPEN hpen ) DECLSPEC_HIDDEN; extern COLORREF X11DRV_SetBkColor( PHYSDEV dev, COLORREF color ) DECLSPEC_HIDDEN; extern COLORREF X11DRV_SetDCBrushColor( PHYSDEV dev, COLORREF crColor ) DECLSPEC_HIDDEN; diff -Nru wine1.3-1.3.30/dlls/winex11.drv/xfont.c wine1.3-1.3.31/dlls/winex11.drv/xfont.c --- wine1.3-1.3.30/dlls/winex11.drv/xfont.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/winex11.drv/xfont.c 2011-10-21 18:38:36.000000000 +0000 @@ -3226,24 +3226,32 @@ /*********************************************************************** * SelectFont (X11DRV.@) */ -HFONT X11DRV_SelectFont( PHYSDEV dev, HFONT hfont, HANDLE gdiFont ) +HFONT X11DRV_SelectFont( PHYSDEV dev, HFONT hfont ) { X11DRV_PDEVICE *physDev = get_x11drv_dev( dev ); + PHYSDEV next = GET_NEXT_PHYSDEV( dev, pSelectFont ); + fontObject *pfo = XFONT_GetFontObject( physDev->font ); LOGFONTW logfont; LOGFONT16 lf; + HFONT ret; TRACE("hdc=%p, hfont=%p\n", dev->hdc, hfont); - if (!GetObjectW( hfont, sizeof(logfont), &logfont )) return HGDI_ERROR; + if (using_client_side_fonts && ((ret = next->funcs->pSelectFont( next, hfont )))) + { + if (pfo) XFONT_ReleaseCacheEntry( pfo ); + physDev->font = 0; + physDev->has_gdi_font = TRUE; + return ret; + } - TRACE("gdiFont = %p\n", gdiFont); + GetObjectW( hfont, sizeof(logfont), &logfont ); EnterCriticalSection( &crtsc_fonts_X11 ); if(fontList == NULL) X11DRV_FONT_InitX11Metrics(); - if( CHECK_PFONT(physDev->font) ) - XFONT_ReleaseCacheEntry( __PFONT(physDev->font) ); + if (pfo) XFONT_ReleaseCacheEntry( pfo ); FONT_LogFontWTo16(&logfont, &lf); @@ -3306,7 +3314,8 @@ LeaveCriticalSection( &crtsc_fonts_X11 ); physDev->has_gdi_font = FALSE; - return (HFONT)1; /* Use a device font */ + next->funcs->pSelectFont( next, 0 ); /* tell next driver that we selected a device font */ + return hfont; } @@ -3382,14 +3391,16 @@ BOOL X11DRV_GetTextMetrics(PHYSDEV dev, TEXTMETRICW *metrics) { X11DRV_PDEVICE *physDev = get_x11drv_dev( dev ); + fontObject *pfo = XFONT_GetFontObject( physDev->font ); - if( CHECK_PFONT(physDev->font) ) + if (pfo) { - fontObject* pfo = __PFONT(physDev->font); X11DRV_cptable[pfo->fi->cptable].pGetTextMetricsW( pfo, metrics ); return TRUE; } - return FALSE; + + dev = GET_NEXT_PHYSDEV( dev, pGetTextMetrics ); + return dev->funcs->pGetTextMetrics( dev, metrics ); } @@ -3443,5 +3454,7 @@ return TRUE; } - return FALSE; + + dev = GET_NEXT_PHYSDEV( dev, pGetCharWidth ); + return dev->funcs->pGetCharWidth( dev, firstChar, lastChar, buffer ); } diff -Nru wine1.3-1.3.30/dlls/winex11.drv/xrender.c wine1.3-1.3.31/dlls/winex11.drv/xrender.c --- wine1.3-1.3.30/dlls/winex11.drv/xrender.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/winex11.drv/xrender.c 2011-10-21 18:38:36.000000000 +0000 @@ -507,7 +507,7 @@ return WXR_INVALID_FORMAT; } -static enum wxr_format get_xrender_format_from_bitmapinfo( const BITMAPINFO *info, BOOL use_alpha ) +static enum wxr_format get_xrender_format_from_bitmapinfo( const BITMAPINFO *info ) { if (info->bmiHeader.biPlanes != 1) return WXR_INVALID_FORMAT; @@ -539,8 +539,7 @@ break; } if (info->bmiHeader.biCompression != BI_RGB) break; - if (info->bmiHeader.biBitCount == 16) return WXR_FORMAT_X1R5G5B5; - return use_alpha ? WXR_FORMAT_A8R8G8B8 : WXR_FORMAT_X8R8G8B8; + return (info->bmiHeader.biBitCount == 16) ? WXR_FORMAT_X1R5G5B5 : WXR_FORMAT_A8R8G8B8; } return WXR_INVALID_FORMAT; } @@ -1097,42 +1096,50 @@ /********************************************************************** * xrenderdrv_SelectFont */ -static HFONT xrenderdrv_SelectFont( PHYSDEV dev, HFONT hfont, HANDLE gdiFont ) +static HFONT xrenderdrv_SelectFont( PHYSDEV dev, HFONT hfont ) { struct xrender_physdev *physdev = get_xrender_dev( dev ); - LFANDSIZE lfsz; + PHYSDEV next = GET_NEXT_PHYSDEV( dev, pSelectFont ); + HFONT ret = next->funcs->pSelectFont( next, hfont ); - if (!GetObjectW( hfont, sizeof(lfsz.lf), &lfsz.lf )) return HGDI_ERROR; + if (!ret) return 0; - if (!gdiFont) + if (physdev->x11dev->has_gdi_font) { - dev = GET_NEXT_PHYSDEV( dev, pSelectFont ); - return dev->funcs->pSelectFont( dev, hfont, gdiFont ); - } + LFANDSIZE lfsz; - TRACE("h=%d w=%d weight=%d it=%d charset=%d name=%s\n", - lfsz.lf.lfHeight, lfsz.lf.lfWidth, lfsz.lf.lfWeight, - lfsz.lf.lfItalic, lfsz.lf.lfCharSet, debugstr_w(lfsz.lf.lfFaceName)); - lfsz.lf.lfWidth = abs( lfsz.lf.lfWidth ); - lfsz.devsize.cx = X11DRV_XWStoDS( dev->hdc, lfsz.lf.lfWidth ); - lfsz.devsize.cy = X11DRV_YWStoDS( dev->hdc, lfsz.lf.lfHeight ); + GetObjectW( hfont, sizeof(lfsz.lf), &lfsz.lf ); - GetTransform( dev->hdc, 0x204, &lfsz.xform ); - TRACE("font transform %f %f %f %f\n", lfsz.xform.eM11, lfsz.xform.eM12, - lfsz.xform.eM21, lfsz.xform.eM22); + TRACE("h=%d w=%d weight=%d it=%d charset=%d name=%s\n", + lfsz.lf.lfHeight, lfsz.lf.lfWidth, lfsz.lf.lfWeight, + lfsz.lf.lfItalic, lfsz.lf.lfCharSet, debugstr_w(lfsz.lf.lfFaceName)); + lfsz.lf.lfWidth = abs( lfsz.lf.lfWidth ); + lfsz.devsize.cx = X11DRV_XWStoDS( dev->hdc, lfsz.lf.lfWidth ); + lfsz.devsize.cy = X11DRV_YWStoDS( dev->hdc, lfsz.lf.lfHeight ); - /* Not used fields, would break hashing */ - lfsz.xform.eDx = lfsz.xform.eDy = 0; + GetTransform( dev->hdc, 0x204, &lfsz.xform ); + TRACE("font transform %f %f %f %f\n", lfsz.xform.eM11, lfsz.xform.eM12, + lfsz.xform.eM21, lfsz.xform.eM22); - lfsz_calc_hash(&lfsz); + /* Not used fields, would break hashing */ + lfsz.xform.eDx = lfsz.xform.eDy = 0; - EnterCriticalSection(&xrender_cs); - if (physdev->cache_index != -1) - dec_ref_cache( physdev->cache_index ); - physdev->cache_index = GetCacheEntry( dev->hdc, &lfsz ); - LeaveCriticalSection(&xrender_cs); - physdev->x11dev->has_gdi_font = TRUE; - return 0; + lfsz_calc_hash(&lfsz); + + EnterCriticalSection(&xrender_cs); + if (physdev->cache_index != -1) + dec_ref_cache( physdev->cache_index ); + physdev->cache_index = GetCacheEntry( dev->hdc, &lfsz ); + LeaveCriticalSection(&xrender_cs); + } + else + { + EnterCriticalSection( &xrender_cs ); + if (physdev->cache_index != -1) dec_ref_cache( physdev->cache_index ); + physdev->cache_index = -1; + LeaveCriticalSection( &xrender_cs ); + } + return ret; } static BOOL create_xrender_dc( PHYSDEV *pdev, enum wxr_format format ) @@ -2678,7 +2685,7 @@ dst_format = physdev->format; } - src_format = get_xrender_format_from_bitmapinfo( info, TRUE ); + src_format = get_xrender_format_from_bitmapinfo( info ); if (!(pict_format = pict_formats[src_format])) goto update_format; /* make sure we can create an image with the same bpp */ @@ -2792,7 +2799,12 @@ return dev->funcs->pBlendImage( dev, info, bits, src, dst, func ); } - format = get_xrender_format_from_bitmapinfo( info, func.AlphaFormat & AC_SRC_ALPHA ); + format = get_xrender_format_from_bitmapinfo( info ); + if (!(func.AlphaFormat & AC_SRC_ALPHA)) + format = get_format_without_alpha( format ); + else if (format != WXR_FORMAT_A8R8G8B8) + return ERROR_INVALID_PARAMETER; + if (!(pict_format = pict_formats[format])) goto update_format; /* make sure we can create an image with the same bpp */ @@ -2866,18 +2878,14 @@ return dst_dev->funcs->pAlphaBlend( dst_dev, dst, src_dev, src, blendfn ); } - if (physdev_dst != physdev_src) + if ((blendfn.AlphaFormat & AC_SRC_ALPHA) && physdev_src->format != WXR_FORMAT_A8R8G8B8) { - int status = X11DRV_LockDIBSection( physdev_src->x11dev, DIB_Status_None ); - if (status == DIB_Status_AppMod || status == DIB_Status_InSync) - { - X11DRV_UnlockDIBSection( physdev_src->x11dev, FALSE ); - dst_dev = GET_NEXT_PHYSDEV( dst_dev, pAlphaBlend ); - return dst_dev->funcs->pAlphaBlend( dst_dev, dst, src_dev, src, blendfn ); - } - X11DRV_CoerceDIBSection( physdev_src->x11dev, DIB_Status_GdiMod ); + SetLastError( ERROR_INVALID_PARAMETER ); + return FALSE; } + X11DRV_LockDIBSection( physdev_dst->x11dev, DIB_Status_GdiMod ); + if (physdev_dst != physdev_src) X11DRV_LockDIBSection( physdev_src->x11dev, DIB_Status_GdiMod ); dst_pict = get_xrender_picture( physdev_dst, 0, &dst->visrect ); diff -Nru wine1.3-1.3.30/dlls/winhttp/tests/winhttp.c wine1.3-1.3.31/dlls/winhttp/tests/winhttp.c --- wine1.3-1.3.30/dlls/winhttp/tests/winhttp.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/winhttp/tests/winhttp.c 2011-10-21 18:38:36.000000000 +0000 @@ -659,7 +659,8 @@ test_header_name, buffer, &len, &index); ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError()); ok(index == 1, "WinHttpQueryHeaders failed to increment index.\n"); - ok(memcmp(buffer, reverse ? test_flag_coalesce_reverse : test_flag_coalesce, sizeof(reverse ? test_flag_coalesce_reverse : test_flag_coalesce)) == 0, "WinHttpQueryHeaders returned incorrect string.\n"); + ok(memcmp(buffer, reverse ? test_flag_coalesce_reverse : test_flag_coalesce, + reverse ? sizeof(test_flag_coalesce_reverse) : sizeof(test_flag_coalesce)) == 0, "WinHttpQueryHeaders returned incorrect string.\n"); len = sizeof(buffer); ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS, @@ -683,7 +684,8 @@ test_header_name, buffer, &len, &index); ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError()); ok(index == 1, "WinHttpQueryHeaders failed to increment index.\n"); - ok(memcmp(buffer, reverse ? test_flag_coalesce_comma_reverse : test_flag_coalesce_comma, sizeof(reverse ? test_flag_coalesce_comma_reverse : test_flag_coalesce_comma)) == 0, + ok(memcmp(buffer, reverse ? test_flag_coalesce_comma_reverse : test_flag_coalesce_comma, + reverse ? sizeof(test_flag_coalesce_comma_reverse) : sizeof(test_flag_coalesce_comma)) == 0, "WinHttpQueryHeaders returned incorrect string.\n"); len = sizeof(buffer); @@ -709,7 +711,8 @@ test_header_name, buffer, &len, &index); ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError()); ok(index == 1, "WinHttpQueryHeaders failed to increment index.\n"); - ok(memcmp(buffer, reverse ? test_flag_coalesce_semicolon_reverse : test_flag_coalesce_semicolon, sizeof(reverse ? test_flag_coalesce_semicolon_reverse : test_flag_coalesce_semicolon)) == 0, + ok(memcmp(buffer, reverse ? test_flag_coalesce_semicolon_reverse : test_flag_coalesce_semicolon, + reverse ? sizeof(test_flag_coalesce_semicolon_reverse) : sizeof(test_flag_coalesce_semicolon)) == 0, "WinHttpQueryHeaders returned incorrect string.\n"); len = sizeof(buffer); diff -Nru wine1.3-1.3.30/dlls/wininet/internet.c wine1.3-1.3.31/dlls/wininet/internet.c --- wine1.3-1.3.30/dlls/wininet/internet.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/wininet/internet.c 2011-10-21 18:38:36.000000000 +0000 @@ -287,15 +287,16 @@ g_dwTlsErrIndex = TlsAlloc(); - if (g_dwTlsErrIndex == TLS_OUT_OF_INDEXES) - return FALSE; + if (g_dwTlsErrIndex == TLS_OUT_OF_INDEXES) + return FALSE; URLCacheContainers_CreateDefaults(); WININET_hModule = hinstDLL; + break; case DLL_THREAD_ATTACH: - break; + break; case DLL_THREAD_DETACH: if (g_dwTlsErrIndex != TLS_OUT_OF_INDEXES) diff -Nru wine1.3-1.3.30/dlls/winmm/tests/capture.c wine1.3-1.3.31/dlls/winmm/tests/capture.c --- wine1.3-1.3.30/dlls/winmm/tests/capture.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/winmm/tests/capture.c 2011-10-21 18:38:36.000000000 +0000 @@ -133,6 +133,7 @@ WAVEHDR frag; MMRESULT rc; DWORD res; + MMTIME mmt; WORD nChannels = pwfx->nChannels; WORD wBitsPerSample = pwfx->wBitsPerSample; DWORD nSamplesPerSec = pwfx->nSamplesPerSec; @@ -224,6 +225,12 @@ "frag.dwBytesRecorded=%d, should=%d\n", frag.dwBytesRecorded,pwfx->nAvgBytesPerSec); + mmt.wType = TIME_SAMPLES; + rc=waveInGetPosition(win, &mmt, sizeof(mmt)); + ok(rc==MMSYSERR_NOERROR,"waveInGetPosition(%s): rc=%s\n", + dev_name(device),wave_in_error(rc)); + ok(mmt.u.cb == frag.dwBytesRecorded, "Got wrong position: %u\n", mmt.u.cb); + /* stop playing on error */ if (res!=WAIT_OBJECT_0) { rc=waveInStop(win); diff -Nru wine1.3-1.3.30/dlls/winmm/waveform.c wine1.3-1.3.31/dlls/winmm/waveform.c --- wine1.3-1.3.30/dlls/winmm/waveform.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/winmm/waveform.c 2011-10-21 18:38:36.000000000 +0000 @@ -1495,6 +1495,8 @@ hr = IAudioCaptureClient_ReleaseBuffer(device->capture, packet); if(FAILED(hr)) ERR("ReleaseBuffer failed: %08x\n", hr); + + device->played_frames += packet; } queue = device->first; @@ -1585,7 +1587,8 @@ to_copy_bytes = min(packet * device->bytes_per_frame, queue->dwBufferLength - queue->dwBytesRecorded); - memcpy(queue->lpData + queue->dwBytesRecorded, data, + memcpy(queue->lpData + queue->dwBytesRecorded, + data + (packet_len - packet) * device->bytes_per_frame, to_copy_bytes); queue->dwBytesRecorded += to_copy_bytes; @@ -1602,6 +1605,8 @@ hr = IAudioCaptureClient_ReleaseBuffer(device->capture, packet_len); if(FAILED(hr)) ERR("ReleaseBuffer failed: %08x\n", hr); + + device->played_frames += packet_len; } exit: diff -Nru wine1.3-1.3.30/dlls/ws2_32/socket.c wine1.3-1.3.31/dlls/ws2_32/socket.c --- wine1.3-1.3.30/dlls/ws2_32/socket.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/dlls/ws2_32/socket.c 2011-10-21 18:38:36.000000000 +0000 @@ -4345,6 +4345,7 @@ break; case 2: /* drop all */ clear_flags |= FD_READ|FD_WRITE; + /*fall through */ default: clear_flags |= FD_WINE_LISTENING; } @@ -5355,14 +5356,18 @@ } if ( af == AF_UNSPEC) /* did they not specify the address family? */ - switch(protocol) - { - case IPPROTO_TCP: - if (type == SOCK_STREAM) { af = AF_INET; break; } - case IPPROTO_UDP: - if (type == SOCK_DGRAM) { af = AF_INET; break; } - default: SetLastError(WSAEPROTOTYPE); return INVALID_SOCKET; + { + if ((protocol == IPPROTO_TCP && type == SOCK_STREAM) || + (protocol == IPPROTO_UDP && type == SOCK_DGRAM)) + { + af = AF_INET; + } + else + { + SetLastError(WSAEPROTOTYPE); + return INVALID_SOCKET; } + } SERVER_START_REQ( create_socket ) { diff -Nru wine1.3-1.3.30/.gitignore wine1.3-1.3.31/.gitignore --- wine1.3-1.3.30/.gitignore 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/.gitignore 2011-10-21 18:38:36.000000000 +0000 @@ -179,6 +179,7 @@ include/mimeinfo.h include/mimeole.h include/mlang.h +include/mmc.h include/mmdeviceapi.h include/mmstream.h include/mscoree.h diff -Nru wine1.3-1.3.30/include/config.h.in wine1.3-1.3.31/include/config.h.in --- wine1.3-1.3.30/include/config.h.in 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/include/config.h.in 2011-10-21 18:38:36.000000000 +0000 @@ -152,9 +152,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_FREETYPE_FTWINFNT_H -/* Define to 1 if you have the header file. */ -#undef HAVE_FREETYPE_INTERNAL_SFNT_H - /* Define to 1 if you have the header file. */ #undef HAVE_FREETYPE_TTNAMEID_H @@ -179,9 +176,6 @@ /* Define to 1 if you have the `ftruncate' function. */ #undef HAVE_FTRUNCATE -/* Define to 1 if you have the `FT_Load_Sfnt_Table' function. */ -#undef HAVE_FT_LOAD_SFNT_TABLE - /* Define to 1 if the system has the type `FT_TrueTypeEngineType'. */ #undef HAVE_FT_TRUETYPEENGINETYPE diff -Nru wine1.3-1.3.30/include/Makefile.in wine1.3-1.3.31/include/Makefile.in --- wine1.3-1.3.30/include/Makefile.in 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/include/Makefile.in 2011-10-21 18:38:36.000000000 +0000 @@ -51,6 +51,7 @@ mimeinfo.idl \ mimeole.idl \ mlang.idl \ + mmc.idl \ mmdeviceapi.idl \ mmstream.idl \ mscoree.idl \ diff -Nru wine1.3-1.3.30/include/mmc.idl wine1.3-1.3.31/include/mmc.idl --- wine1.3-1.3.30/include/mmc.idl 1970-01-01 00:00:00.000000000 +0000 +++ wine1.3-1.3.31/include/mmc.idl 2011-10-21 18:38:36.000000000 +0000 @@ -0,0 +1,49 @@ +/* + * + * Copyright 2011 Alistair Leslie-Hughes + * + * 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 + */ + +import "basetsd.h"; +import "oaidl.idl"; + +[ + uuid(A8D2C5FE-CDCB-4B9D-BDE5-A27343FF54BC), +] +interface IMMCVersionInfo : IUnknown +{ + HRESULT GetMMCVersion([out] long * pVersionMajor, [out] long * pVersionMinor); +} + + +[ + uuid(9EECDD85-B715-4188-8A72-61159ABDB8C4), + version(1.0), +] +library MMCVersionLib +{ + importlib("stdole2.tlb"); + + [ + helpstring("MMCVersionInfo coclass"), + uuid(D6FEDB1D-CF21-4BD9-AF3B-C5468E9C6684) + ] + coclass MMCVersionInfo + { + [default] interface IMMCVersionInfo; + } + +} diff -Nru wine1.3-1.3.30/include/mshtmdid.h wine1.3-1.3.31/include/mshtmdid.h --- wine1.3-1.3.30/include/mshtmdid.h 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/include/mshtmdid.h 2011-10-21 18:38:36.000000000 +0000 @@ -97,6 +97,18 @@ #define DISPID_DOMATTRIBUTE DISPID_NORMAL_FIRST #define DISPID_DOMTEXTNODE DISPID_NORMAL_FIRST #define DISPID_GENERIC DISPID_NORMAL_FIRST +#define DISPID_URN_COLL DISPID_NORMAL_FIRST +#define DISPID_NAMESPACE_COLLECTION DISPID_NORMAL_FIRST +#define DISPID_NAMESPACE DISPID_NORMAL_FIRST +#define DISPID_TAGNAMES_COLLECTION DISPID_NORMAL_FIRST +#define DISPID_XMLHTTPREQUEST DISPID_NORMAL_FIRST +#define DISPID_DOCUMENTCOMPATIBLEINFO_COLLECTION DISPID_NORMAL_FIRST +#define DISPID_DOCUMENTCOMPATIBLEINFO DISPID_NORMAL_FIRST +#define DISPID_XDOMAINREQUEST DISPID_NORMAL_FIRST +#define DISPID_DOMSTORAGEITEM DISPID_NORMAL_FIRST +#define DISPID_DOMSTORAGE DISPID_NORMAL_FIRST +#define DISPID_DOMSTORAGELIST DISPID_NORMAL_FIRST + #define DISPID_DOMIMPLEMENTATION DISPID_NORMAL_FIRST #define DISPID_DOCUMENTCOMPATIBLEINFO DISPID_NORMAL_FIRST #define DISPID_DOCUMENTCOMPATIBLEINFOCOLLECTION DISPID_NORMAL_FIRST @@ -609,9 +621,26 @@ #define DISPID_EVPROP_ONBEFOREACTIVATE (DISPID_EVENTS+90) #define DISPID_EVPROP_ONFOCUSIN (DISPID_EVENTS+91) #define DISPID_EVPROP_ONFOCUSOUT (DISPID_EVENTS+92) -#define DISPID_EVPROP_ONSTORAGE (DISPID_EVENTS+93) -#define DISPID_EVPROP_ONSTORAGECOMMIT (DISPID_EVENTS+94) -#define DISPID_EVPROPS_COUNT 95 +#define DISPID_EVPROP_ONVALUECHANGE (DISPID_EVENTS+93) +#define DISPID_EVPROP_ONSELECTADD (DISPID_EVENTS+94) +#define DISPID_EVPROP_ONSELECTREMOV (DISPID_EVENTS+95) +#define DISPID_EVPROP_ONSELECTWITHI (DISPID_EVENTS+96) +#define DISPID_EVPROP_ONSYSTEMSCROLLINGSTART (DISPID_EVENTS+97) +#define DISPID_EVPROP_ONSYSTEMSCROLLINGEND (DISPID_EVENTS+98) +#define DISPID_EVPROP_ONOBJECTCONTENTSCROLLED (DISPID_EVENTS+99) +#define DISPID_EVPROP_ONSTORAGE (DISPID_EVENTS+100) +#define DISPID_EVPROP_ONSTORAGECOMMIT (DISPID_EVENTS+101) +#define DISPID_EVPROP_ONSHOW (DISPID_EVENTS+102) +#define DISPID_EVPROP_ONHIDE (DISPID_EVENTS+103) +#define DISPID_EVPROP_ONALERT (DISPID_EVENTS+104) +#define DISPID_EVPROP_ONPOPUPMENUSTART (DISPID_EVENTS+105) +#define DISPID_EVPROP_ONPOPUPMENUEND (DISPID_EVENTS+106) +#define DISPID_EVPROP_ONONLINE (DISPID_EVENTS+107) +#define DISPID_EVPROP_ONOFFLINE (DISPID_EVENTS+108) +#define DISPID_EVPROP_ONHASHCHANGE (DISPID_EVENTS+109) +#define DISPID_EVPROP_ONMESSAGE (DISPID_EVENTS+110) +#define DISPID_EVPROP_ONDOMMUTATION (DISPID_EVENTS+111) +#define DISPID_EVPROPS_COUNT 112 #define DISPID_EVMETH_ONMOUSEOVER STDDISPID_XOBJ_ONMOUSEOVER #define DISPID_EVMETH_ONMOUSEOUT STDDISPID_XOBJ_ONMOUSEOUT @@ -1721,6 +1750,17 @@ /* IHTMLWindow5 */ #define DISPID_IHTMLWINDOW5_XMLHTTPREQUEST 1190 +/* IHTMLWindow6 */ +#define DISPID_IHTMLWINDOW6_XDOMAINREQUEST 1191 +#define DISPID_IHTMLWINDOW6_SESSIONSTORAGE 1192 +#define DISPID_IHTMLWINDOW6_LOCALSTORAGE 1193 +#define DISPID_IHTMLWINDOW6_ONHASHCHANGE DISPID_EVPROP_ONHASHCHANGE +#define DISPID_IHTMLWINDOW6_MAXCONNECTIONSPERSERVER 1194 +#define DISPID_IHTMLWINDOW6_POSTMESSAGE 1196 +#define DISPID_IHTMLWINDOW6_TOSTATICHTML 1197 +#define DISPID_IHTMLWINDOW6_ONMESSAGE DISPID_EVPROP_ONMESSAGE +#define DISPID_IHTMLWINDOW6_MSWRITEPROFILERMARK 1198 + /* IHTMLImageElementFactory */ #define DISPID_IHTMLIMAGEELEMENTFACTORY_CREATE DISPID_VALUE @@ -2724,6 +2764,15 @@ #define DISPID_IHTMLSTYLEELEMENT_DISABLED STDPROPID_XOBJ_DISABLED #define DISPID_IHTMLSTYLEELEMENT_MEDIA DISPID_STYLEELEMENT+6 +/* IHTMLStorage */ +#define DISPID_IHTMLSTORAGE_LENGTH DISPID_DOMSTORAGE+1 +#define DISPID_IHTMLSTORAGE_REMAININGSPACE DISPID_DOMSTORAGE+2 +#define DISPID_IHTMLSTORAGE_KEY DISPID_DOMSTORAGE+6 +#define DISPID_IHTMLSTORAGE_GETITEM DISPID_DOMSTORAGE+3 +#define DISPID_IHTMLSTORAGE_SETITEM DISPID_DOMSTORAGE+4 +#define DISPID_IHTMLSTORAGE_REMOVEITEM DISPID_DOMSTORAGE+5 +#define DISPID_IHTMLSTORAGE_CLEAR DISPID_DOMSTORAGE+7 + /* IHTMLControlElement */ #define DISPID_IHTMLCONTROLELEMENT_TABINDEX STDPROPID_XOBJ_TABINDEX #define DISPID_IHTMLCONTROLELEMENT_FOCUS (DISPID_SITE+0) diff -Nru wine1.3-1.3.30/include/mshtml.idl wine1.3-1.3.31/include/mshtml.idl --- wine1.3-1.3.30/include/mshtml.idl 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/include/mshtml.idl 2011-10-21 18:38:36.000000000 +0000 @@ -129,6 +129,7 @@ interface IHTMLElement2; interface IHTMLStyleSheetsCollection; interface IHTMLFrameBase; +interface IHTMLStorage; /***************************************************************************** * IHTMLFiltersCollection interface @@ -10970,6 +10971,58 @@ } /***************************************************************************** + * IHTMLWindow6 interface + */ +[ + odl, + oleautomation, + dual, + uuid(30510453-98b5-11cf-bb82-00aa00bdce0b) +] +interface IHTMLWindow6 : IDispatch +{ + [propput, id(DISPID_IHTMLWINDOW6_XDOMAINREQUEST)] + HRESULT XDomainRequest([in] VARIANT v); + + [propget, id(DISPID_IHTMLWINDOW6_XDOMAINREQUEST)] + HRESULT XDomainRequest([out, retval] VARIANT *p); + + [propget, id(DISPID_IHTMLWINDOW6_SESSIONSTORAGE)] + HRESULT sessionStorage([out, retval] IHTMLStorage **p); + + [propget, id(DISPID_IHTMLWINDOW6_LOCALSTORAGE)] + HRESULT localStorage([out, retval] IHTMLStorage **p); + + [propput, id(DISPID_IHTMLWINDOW6_ONHASHCHANGE), displaybind, bindable] + HRESULT onhashchange([in] VARIANT v); + + [propget, id(DISPID_IHTMLWINDOW6_ONHASHCHANGE), displaybind, bindable] + HRESULT onhashchange([out, retval] VARIANT *p); + + [propget, id(DISPID_IHTMLWINDOW6_MAXCONNECTIONSPERSERVER)] + HRESULT maxConnectionsPerServer([out, retval] long *p); + + [id(DISPID_IHTMLWINDOW6_POSTMESSAGE)] + HRESULT postMessage( + [in] BSTR msg, + [in, optional] VARIANT targetOrigin); + + [id(DISPID_IHTMLWINDOW6_TOSTATICHTML)] + HRESULT toStaticHTML( + [in] BSTR bstrHTML, + [out, retval] BSTR *pbstrStaticHTML); + + [propput, id(DISPID_IHTMLWINDOW6_ONMESSAGE), displaybind, bindable] + HRESULT onmessage([in] VARIANT v); + + [propget, id(DISPID_IHTMLWINDOW6_ONMESSAGE), displaybind, bindable] + HRESULT onmessage([out, retval] VARIANT *p); + + [id(DISPID_IHTMLWINDOW6_MSWRITEPROFILERMARK)] + HRESULT msWriteProfilerMark([in] BSTR bstrProfilerMarkName); +} + +/***************************************************************************** * DispHTMLScreen dispinterface */ [ @@ -11315,6 +11368,40 @@ [propget, id(DISPID_IHTMLWINDOW4_FRAMEELEMENT)] IHTMLFrameBase *frameElement(); + + [propget, id(DISPID_IHTMLWINDOW6_SESSIONSTORAGE)] + IHTMLStorage *sessionStorage(); + + [propget, id(DISPID_IHTMLWINDOW6_LOCALSTORAGE)] + IHTMLStorage *localStorage(); + + [propput, id(DISPID_IHTMLWINDOW6_ONHASHCHANGE), displaybind, bindable] + void onhashchange(VARIANT v); + + [propget, id(DISPID_IHTMLWINDOW6_ONHASHCHANGE), displaybind, bindable] + VARIANT onhashchange(); + + [propget, id(DISPID_IHTMLWINDOW6_MAXCONNECTIONSPERSERVER)] + long maxConnectionsPerServer(); + + [id(DISPID_IHTMLWINDOW6_POSTMESSAGE)] + void postMessage( + [in] BSTR msg, + [in, optional] VARIANT targetOrigin); + + [id(DISPID_IHTMLWINDOW6_TOSTATICHTML)] + BSTR toStaticHTML([in] BSTR bstrHTML); + + [propput, id(DISPID_IHTMLWINDOW6_ONMESSAGE), displaybind, bindable] + void onmessage(VARIANT v); + + [propget, id(DISPID_IHTMLWINDOW6_ONMESSAGE), displaybind, bindable] + VARIANT onmessage(); + + [id(DISPID_IHTMLWINDOW6_MSWRITEPROFILERMARK)] + void msWriteProfilerMark([in] BSTR bstrProfilerMarkName); + + WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL; } /***************************************************************************** @@ -11606,6 +11693,40 @@ [propget, id(DISPID_IHTMLWINDOW5_XMLHTTPREQUEST)] VARIANT XMLHttpRequest(); + + [propget, id(DISPID_IHTMLWINDOW6_SESSIONSTORAGE)] + IHTMLStorage *sessionStorage(); + + [propget, id(DISPID_IHTMLWINDOW6_LOCALSTORAGE)] + IHTMLStorage *localStorage(); + + [propput, id(DISPID_IHTMLWINDOW6_ONHASHCHANGE), displaybind, bindable] + void onhashchange(VARIANT v); + + [propget, id(DISPID_IHTMLWINDOW6_ONHASHCHANGE), displaybind, bindable] + VARIANT onhashchange(); + + [propget, id(DISPID_IHTMLWINDOW6_MAXCONNECTIONSPERSERVER)] + long maxConnectionsPerServer(); + + [id(DISPID_IHTMLWINDOW6_POSTMESSAGE)] + void postMessage( + [in] BSTR msg, + [in, optional] VARIANT targetOrigin); + + [id(DISPID_IHTMLWINDOW6_TOSTATICHTML)] + BSTR toStaticHTML([in] BSTR bstrHTML); + + [propput, id(DISPID_IHTMLWINDOW6_ONMESSAGE), displaybind, bindable] + void onmessage(VARIANT v); + + [propget, id(DISPID_IHTMLWINDOW6_ONMESSAGE), displaybind, bindable] + VARIANT onmessage(); + + [id(DISPID_IHTMLWINDOW6_MSWRITEPROFILERMARK)] + void msWriteProfilerMark([in] BSTR bstrProfilerMarkName); + + WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL; } /***************************************************************************** @@ -16456,6 +16577,45 @@ } /***************************************************************************** + * IHTMLStorage interface + */ +[ + odl, + oleautomation, + dual, + uuid(30510474-98b5-11cf-bb82-00aa00bdce0b) +] +interface IHTMLStorage : IDispatch +{ + [propget, id(DISPID_IHTMLSTORAGE_LENGTH), hidden] + HRESULT length([out, retval] long *p); + + [propget, id(DISPID_IHTMLSTORAGE_REMAININGSPACE), hidden] + HRESULT remainingSpace([out, retval] long *p); + + [id(DISPID_IHTMLSTORAGE_KEY)] + HRESULT key( + [in] long lIndex, + [out, retval] BSTR *); + + [id(DISPID_IHTMLSTORAGE_GETITEM)] + HRESULT getItem( + [in] BSTR bstrKey, + [out, retval] VARIANT *); + + [id(DISPID_IHTMLSTORAGE_SETITEM)] + HRESULT setItem( + [in] BSTR bstrKey, + [in] BSTR bstrValue); + + [id(DISPID_IHTMLSTORAGE_REMOVEITEM)] + HRESULT removeItem([in] BSTR bstrKey); + + [id(DISPID_IHTMLSTORAGE_CLEAR)] + HRESULT clear(); +} + +/***************************************************************************** * IMarkupContainer interface */ [ diff -Nru wine1.3-1.3.30/include/urlmon.idl wine1.3-1.3.31/include/urlmon.idl --- wine1.3-1.3.30/include/urlmon.idl 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/include/urlmon.idl 2011-10-21 18:38:36.000000000 +0000 @@ -881,7 +881,8 @@ QUERY_USES_CACHE, QUERY_IS_SECURE, QUERY_IS_SAFE, - QUERY_USES_HISTORYFOLDER + QUERY_USES_HISTORYFOLDER, + QUERY_IS_CACHED_AND_USABLE_OFFLINE } QUERYOPTION; HRESULT ParseUrl( diff -Nru wine1.3-1.3.30/include/wine/gdi_driver.h wine1.3-1.3.31/include/wine/gdi_driver.h --- wine1.3-1.3.30/include/wine/gdi_driver.h 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/include/wine/gdi_driver.h 2011-10-21 18:38:36.000000000 +0000 @@ -134,7 +134,7 @@ HBITMAP (*pSelectBitmap)(PHYSDEV,HBITMAP); HBRUSH (*pSelectBrush)(PHYSDEV,HBRUSH); BOOL (*pSelectClipPath)(PHYSDEV,INT); - HFONT (*pSelectFont)(PHYSDEV,HFONT,HANDLE); + HFONT (*pSelectFont)(PHYSDEV,HFONT); HPALETTE (*pSelectPalette)(PHYSDEV,HPALETTE,BOOL); HPEN (*pSelectPen)(PHYSDEV,HPEN); INT (*pSetArcDirection)(PHYSDEV,INT); @@ -190,7 +190,7 @@ }; /* increment this when you change the DC function table */ -#define WINE_GDI_DRIVER_VERSION 14 +#define WINE_GDI_DRIVER_VERSION 15 static inline PHYSDEV get_physdev_entry_point( PHYSDEV dev, size_t offset ) { diff -Nru wine1.3-1.3.30/include/wine/wined3d.h wine1.3-1.3.31/include/wine/wined3d.h --- wine1.3-1.3.30/include/wine/wined3d.h 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/include/wine/wined3d.h 2011-10-21 18:38:36.000000000 +0000 @@ -1234,8 +1234,7 @@ #define WINED3DDEVCAPS_RTPATCHHANDLEZERO 0x00800000 #define WINED3DDEVCAPS_NPATCHES 0x01000000 -#define WINED3D_PALETTE_PER_SURFACE 0x00000001 -#define WINED3D_LEGACY_DEPTH_BIAS 0x00000002 +#define WINED3D_LEGACY_DEPTH_BIAS 0x00000001 /* dwDDFX */ /* arithmetic stretching along y axis */ @@ -2210,25 +2209,23 @@ INT __cdecl wined3d_device_get_base_vertex_index(const struct wined3d_device *device); HRESULT __cdecl wined3d_device_get_clip_plane(const struct wined3d_device *device, UINT plane_idx, float *plane); HRESULT __cdecl wined3d_device_get_clip_status(const struct wined3d_device *device, WINED3DCLIPSTATUS *clip_status); -HRESULT __cdecl wined3d_device_get_creation_parameters(struct wined3d_device *device, +HRESULT __cdecl wined3d_device_get_creation_parameters(const struct wined3d_device *device, WINED3DDEVICE_CREATION_PARAMETERS *creation_parameters); -HRESULT __cdecl wined3d_device_get_current_texture_palette(struct wined3d_device *device, UINT *palette_idx); -HRESULT __cdecl wined3d_device_get_depth_stencil(struct wined3d_device *device, +HRESULT __cdecl wined3d_device_get_depth_stencil(const struct wined3d_device *device, struct wined3d_surface **depth_stencil); HRESULT __cdecl wined3d_device_get_device_caps(const struct wined3d_device *device, WINED3DCAPS *caps); HRESULT __cdecl wined3d_device_get_display_mode(const struct wined3d_device *device, UINT swapchain_idx, WINED3DDISPLAYMODE *mode); -HRESULT __cdecl wined3d_device_get_front_buffer_data(struct wined3d_device *device, +HRESULT __cdecl wined3d_device_get_front_buffer_data(const struct wined3d_device *device, UINT swapchain_idx, struct wined3d_surface *dst_surface); -void __cdecl wined3d_device_get_gamma_ramp(struct wined3d_device *device, UINT swapchain_idx, WINED3DGAMMARAMP *ramp); +void __cdecl wined3d_device_get_gamma_ramp(const struct wined3d_device *device, + UINT swapchain_idx, WINED3DGAMMARAMP *ramp); HRESULT __cdecl wined3d_device_get_index_buffer(const struct wined3d_device *device, struct wined3d_buffer **index_buffer); HRESULT __cdecl wined3d_device_get_light(const struct wined3d_device *device, UINT light_idx, WINED3DLIGHT *light); HRESULT __cdecl wined3d_device_get_light_enable(const struct wined3d_device *device, UINT light_idx, BOOL *enable); HRESULT __cdecl wined3d_device_get_material(const struct wined3d_device *device, WINED3DMATERIAL *material); -float __cdecl wined3d_device_get_npatch_mode(struct wined3d_device *device); -HRESULT __cdecl wined3d_device_get_palette_entries(struct wined3d_device *device, - UINT palette_idx, PALETTEENTRY *entries); +float __cdecl wined3d_device_get_npatch_mode(const struct wined3d_device *device); struct wined3d_shader * __cdecl wined3d_device_get_pixel_shader(const struct wined3d_device *device); void __cdecl wined3d_device_get_primitive_type(const struct wined3d_device *device, WINED3DPRIMITIVETYPE *primitive_topology); @@ -2238,21 +2235,21 @@ UINT start_register, float *constants, UINT vector4f_count); HRESULT __cdecl wined3d_device_get_ps_consts_i(const struct wined3d_device *device, UINT start_register, int *constants, UINT vector4i_count); -HRESULT __cdecl wined3d_device_get_raster_status(struct wined3d_device *device, +HRESULT __cdecl wined3d_device_get_raster_status(const struct wined3d_device *device, UINT swapchain_idx, WINED3DRASTER_STATUS *raster_status); HRESULT __cdecl wined3d_device_get_render_state(const struct wined3d_device *device, WINED3DRENDERSTATETYPE state, DWORD *value); -HRESULT __cdecl wined3d_device_get_render_target(struct wined3d_device *device, +HRESULT __cdecl wined3d_device_get_render_target(const struct wined3d_device *device, UINT render_target_idx, struct wined3d_surface **render_target); HRESULT __cdecl wined3d_device_get_sampler_state(const struct wined3d_device *device, UINT sampler_idx, WINED3DSAMPLERSTATETYPE state, DWORD *value); HRESULT __cdecl wined3d_device_get_scissor_rect(const struct wined3d_device *device, RECT *rect); -BOOL __cdecl wined3d_device_get_software_vertex_processing(struct wined3d_device *device); +BOOL __cdecl wined3d_device_get_software_vertex_processing(const struct wined3d_device *device); HRESULT __cdecl wined3d_device_get_stream_source(const struct wined3d_device *device, UINT stream_idx, struct wined3d_buffer **buffer, UINT *offset, UINT *stride); HRESULT __cdecl wined3d_device_get_stream_source_freq(const struct wined3d_device *device, UINT stream_idx, UINT *divider); -HRESULT __cdecl wined3d_device_get_surface_from_dc(struct wined3d_device *device, +HRESULT __cdecl wined3d_device_get_surface_from_dc(const struct wined3d_device *device, HDC dc, struct wined3d_surface **surface); HRESULT __cdecl wined3d_device_get_swapchain(const struct wined3d_device *device, UINT swapchain_idx, struct wined3d_swapchain **swapchain); @@ -2286,12 +2283,11 @@ const struct wined3d_vertex_declaration *declaration, DWORD flags, DWORD dst_fvf); void __cdecl wined3d_device_release_focus_window(struct wined3d_device *device); HRESULT __cdecl wined3d_device_reset(struct wined3d_device *device, - WINED3DPRESENT_PARAMETERS *present_parameters, wined3d_device_reset_cb callback); + const WINED3DPRESENT_PARAMETERS *present_parameters, wined3d_device_reset_cb callback); void __cdecl wined3d_device_restore_fullscreen_window(struct wined3d_device *device, HWND window); HRESULT __cdecl wined3d_device_set_base_vertex_index(struct wined3d_device *device, INT base_index); HRESULT __cdecl wined3d_device_set_clip_plane(struct wined3d_device *device, UINT plane_idx, const float *plane); HRESULT __cdecl wined3d_device_set_clip_status(struct wined3d_device *device, const WINED3DCLIPSTATUS *clip_status); -HRESULT __cdecl wined3d_device_set_current_texture_palette(struct wined3d_device *device, UINT palette_idx); void __cdecl wined3d_device_set_cursor_position(struct wined3d_device *device, int x_screen_space, int y_screen_space, DWORD flags); HRESULT __cdecl wined3d_device_set_cursor_properties(struct wined3d_device *device, @@ -2300,7 +2296,7 @@ HRESULT __cdecl wined3d_device_set_dialog_box_mode(struct wined3d_device *device, BOOL enable_dialogs); HRESULT __cdecl wined3d_device_set_display_mode(struct wined3d_device *device, UINT swapchain_idx, const WINED3DDISPLAYMODE *mode); -void __cdecl wined3d_device_set_gamma_ramp(struct wined3d_device *device, +void __cdecl wined3d_device_set_gamma_ramp(const struct wined3d_device *device, UINT swapchain_idx, DWORD flags, const WINED3DGAMMARAMP *ramp); HRESULT __cdecl wined3d_device_set_index_buffer(struct wined3d_device *device, struct wined3d_buffer *index_buffer, enum wined3d_format_id format_id); @@ -2309,8 +2305,6 @@ HRESULT __cdecl wined3d_device_set_material(struct wined3d_device *device, const WINED3DMATERIAL *material); void __cdecl wined3d_device_set_multithreaded(struct wined3d_device *device); HRESULT __cdecl wined3d_device_set_npatch_mode(struct wined3d_device *device, float segments); -HRESULT __cdecl wined3d_device_set_palette_entries(struct wined3d_device *device, - UINT palette_idx, const PALETTEENTRY *entries); HRESULT __cdecl wined3d_device_set_pixel_shader(struct wined3d_device *device, struct wined3d_shader *shader); void __cdecl wined3d_device_set_primitive_type(struct wined3d_device *device, WINED3DPRIMITIVETYPE primitive_topology); HRESULT __cdecl wined3d_device_set_ps_consts_b(struct wined3d_device *device, @@ -2353,7 +2347,7 @@ const RECT *src_rect, struct wined3d_surface *dst_surface, const POINT *dst_point); HRESULT __cdecl wined3d_device_update_texture(struct wined3d_device *device, struct wined3d_texture *src_texture, struct wined3d_texture *dst_texture); -HRESULT __cdecl wined3d_device_validate_device(struct wined3d_device *device, DWORD *num_passes); +HRESULT __cdecl wined3d_device_validate_device(const struct wined3d_device *device, DWORD *num_passes); HRESULT __cdecl wined3d_palette_create(struct wined3d_device *device, DWORD flags, const PALETTEENTRY *entries, void *parent, struct wined3d_palette **palette); diff -Nru wine1.3-1.3.30/include/wingdi.h wine1.3-1.3.31/include/wingdi.h --- wine1.3-1.3.30/include/wingdi.h 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/include/wingdi.h 2011-10-21 18:38:36.000000000 +0000 @@ -353,6 +353,11 @@ #define ENCAPSULATED_POSTSCRIPT 4116 #define POSTSCRIPT_IDENTIFY 4117 #define POSTSCRIPT_INJECTION 4118 +#define CHECKJPEGFORMAT 4119 +#define CHECKPNGFORMAT 4120 +#define GET_PS_FEATURESETTING 4121 +#define GDIPLUS_TS_QUERYVER 4122 +#define GDIPLUS_TS_RECORD 4123 /* for POSTSCRIPT_IDENTIFY */ #define PSIDENT_GDICENTRIC 0 diff -Nru wine1.3-1.3.30/libs/wine/Makefile.in wine1.3-1.3.31/libs/wine/Makefile.in --- wine1.3-1.3.30/libs/wine/Makefile.in 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/libs/wine/Makefile.in 2011-10-21 18:38:36.000000000 +0000 @@ -128,7 +128,7 @@ libwine.dll: $(OBJS) wine.def Makefile.in $(DLLWRAP) --def $(srcdir)/wine.def -o $@ $(OBJS) $(EXTRALIBS) -DYLIB_LDFLAGS = -compatibility_version $(SOVERSION) -current_version $(VERSION) -headerpad_max_install_names +DYLIB_LDFLAGS = -compatibility_version $(SOVERSION) -current_version $(VERSION) -Wl,-headerpad_max_install_names libwine.$(VERSION).dylib: $(OBJS) $(RELPATH) Makefile.in $(LDSHARED) -install_name $(libdir)/$(DYNAME) $(DYLIB_LDFLAGS) $(OBJS) $(EXTRALIBS) $(LDFLAGS) $(LIBS) -o $@ diff -Nru wine1.3-1.3.30/po/ar.po wine1.3-1.3.31/po/ar.po --- wine1.3-1.3.30/po/ar.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/ar.po 2011-10-21 18:38:36.000000000 +0000 @@ -113,7 +113,7 @@ msgstr "" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "" #: comctl32.rc:39 @@ -6680,7 +6680,7 @@ msgstr "" #: shlwapi.rc:27 -msgid "%ld bytes" +msgid "%d bytes" msgstr "" #: shlwapi.rc:28 @@ -7519,9 +7519,9 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 +#: attrib.rc:28 #, fuzzy -msgid "%s: File Not Found\n" +msgid "%1: File Not Found\n" msgstr "تعذّر إيجاد '%s'." #: attrib.rc:47 @@ -7994,6 +7994,11 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +#, fuzzy +msgid "%s: File Not Found\n" +msgstr "تعذّر إيجاد '%s'." + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -8022,7 +8027,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "" @@ -8212,11 +8217,11 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" +msgid "Could not stop service %1\n" msgstr "" #: net.rc:32 @@ -8228,27 +8233,27 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" +msgid "The %1 service is starting.\n" msgstr "" #: net.rc:35 -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "" #: net.rc:36 -msgid "The %s service failed to start.\n" +msgid "The %1 service failed to start.\n" msgstr "" #: net.rc:37 -msgid "The %s service is stopping.\n" +msgid "The %1 service is stopping.\n" msgstr "" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "" #: net.rc:39 -msgid "The %s service failed to stop.\n" +msgid "The %1 service failed to stop.\n" msgstr "" #: net.rc:41 @@ -8263,7 +8268,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -10250,7 +10255,7 @@ msgstr "" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "" #: wineconsole.rc:35 @@ -10464,7 +10469,7 @@ msgstr "" #: winefile.rc:120 -msgid "%s of %s free" +msgid "%1 of %2 free" msgstr "" #: winemine.rc:34 @@ -10898,7 +10903,7 @@ msgstr "" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" #: xcopy.rc:29 @@ -10906,34 +10911,38 @@ msgstr "" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" msgstr "" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" msgstr "" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +msgid "%1? (Yes|No)\n" msgstr "" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" msgstr "" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" msgstr "" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/bg.po wine1.3-1.3.31/po/bg.po --- wine1.3-1.3.30/po/bg.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/bg.po 2011-10-21 18:38:36.000000000 +0000 @@ -119,8 +119,8 @@ msgstr "" #: browseui.rc:25 -msgid "Cancelling..." -msgstr "" +msgid "Canceling..." +msgstr "Инсталиране..." #: comctl32.rc:39 msgid "Separator" @@ -6804,7 +6804,7 @@ msgstr "" #: shlwapi.rc:27 -msgid "%ld bytes" +msgid "%d bytes" msgstr "" #: shlwapi.rc:28 @@ -7638,9 +7638,9 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 +#: attrib.rc:28 #, fuzzy -msgid "%s: File Not Found\n" +msgid "%1: File Not Found\n" msgstr "Файлът не е намерен" #: attrib.rc:47 @@ -8112,6 +8112,11 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +#, fuzzy +msgid "%s: File Not Found\n" +msgstr "Файлът не е намерен" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -8140,7 +8145,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "" @@ -8331,11 +8336,11 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" +msgid "Could not stop service %1\n" msgstr "" #: net.rc:32 @@ -8347,28 +8352,31 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" +msgid "The %1 service is starting.\n" msgstr "" #: net.rc:35 -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "" #: net.rc:36 -msgid "The %s service failed to start.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to start.\n" +msgstr "Оставащ размер" #: net.rc:37 -msgid "The %s service is stopping.\n" -msgstr "" +#, fuzzy +msgid "The %1 service is stopping.\n" +msgstr "Капака на принтера е отворен; " #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "" #: net.rc:39 -msgid "The %s service failed to stop.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to stop.\n" +msgstr "Оставащ размер" #: net.rc:41 msgid "There are no entries in the list.\n" @@ -8382,7 +8390,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -10405,7 +10413,7 @@ msgstr "" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "" #: wineconsole.rc:35 @@ -10621,7 +10629,7 @@ msgstr "" #: winefile.rc:120 -msgid "%s of %s free" +msgid "%1 of %2 free" msgstr "" #: winemine.rc:34 @@ -11056,7 +11064,7 @@ msgstr "" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" #: xcopy.rc:29 @@ -11064,34 +11072,38 @@ msgstr "" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" msgstr "" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" msgstr "" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +msgid "%1? (Yes|No)\n" msgstr "" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" msgstr "" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" msgstr "" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/ca.po wine1.3-1.3.31/po/ca.po --- wine1.3-1.3.30/po/ca.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/ca.po 2011-10-21 18:38:36.000000000 +0000 @@ -15,537 +15,560 @@ #: appwiz.rc:28 msgid "Add/Remove Programs" -msgstr "" +msgstr "Afegeix/Treu Programas" #: appwiz.rc:29 msgid "" "Allows you to install new software, or remove existing software from your " "computer." msgstr "" +"Us permet instalar nou programari o treure programari existent del vostre " +"ordinador." #: appwiz.rc:30 taskmgr.rc:262 winecfg.rc:30 msgid "Applications" -msgstr "" +msgstr "Aplicacions" #: appwiz.rc:32 msgid "" "Unable to execute the uninstaller, '%s'. Do you want to remove the uninstall " "entry for this program from the registry?" msgstr "" +"No es pot executar el desinstalador '%s'. Voleu treure l'entrada de " +"desinstal·lació d'aquest programa del registre?" #: appwiz.rc:33 msgid "Not specified" -msgstr "" +msgstr "No especificat" #: appwiz.rc:35 shell32.rc:141 shell32.rc:251 regedit.rc:122 winefile.rc:110 msgid "Name" -msgstr "" +msgstr "Nom" #: appwiz.rc:36 msgid "Publisher" -msgstr "" +msgstr "Editor" #: appwiz.rc:37 cryptui.rc:51 msgid "Version" -msgstr "" +msgstr "Versió" #: appwiz.rc:38 msgid "Installation programs" -msgstr "" +msgstr "Programas d'instal·lació" #: appwiz.rc:39 msgid "Programs (*.exe)" -msgstr "" +msgstr "Programas (*.exe)" #: appwiz.rc:40 avifil32.rc:30 cryptui.rc:80 shell32.rc:196 notepad.rc:75 #: oleview.rc:101 progman.rc:79 regedit.rc:195 winhlp32.rc:87 msgid "All files (*.*)" -msgstr "" +msgstr "Tots els fitxers (*.*)" #: appwiz.rc:42 msgid "&Remove" -msgstr "" +msgstr "T&reu" #: appwiz.rc:43 msgid "&Modify/Remove" -msgstr "" +msgstr "&Modifica/Treu" #: appwiz.rc:48 msgid "Downloading..." -msgstr "" +msgstr "Descarregant..." #: appwiz.rc:49 msgid "Installing..." -msgstr "" +msgstr "Instal·lant..." #: appwiz.rc:50 msgid "" "Unexpected checksum of downloaded file. Aborting installation of corrupted " "file." msgstr "" +"Checksum inesperat de fitxer descarregat. Abortant instal·lació de fitxer " +"corromput." #: avifil32.rc:27 msgid "Waveform: %s" -msgstr "" +msgstr "Forma d'ona: %s" #: avifil32.rc:28 msgid "Waveform" -msgstr "" +msgstr "Forma d'ona" #: avifil32.rc:29 msgid "All multimedia files" -msgstr "" +msgstr "Tots el fitxers multimèdia" #: avifil32.rc:31 msgid "video" -msgstr "" +msgstr "vídeo" #: avifil32.rc:32 msgid "audio" -msgstr "" +msgstr "àudio" #: avifil32.rc:33 msgid "Wine AVI-default-filehandler" -msgstr "" +msgstr "Manejador de fitxer AVI predeterminat de Wine" #: avifil32.rc:34 msgid "uncompressed" -msgstr "" +msgstr "no comprimit" #: browseui.rc:25 -msgid "Cancelling..." -msgstr "" +msgid "Canceling..." +msgstr "Cancel·lant..." #: comctl32.rc:39 msgid "Separator" -msgstr "" +msgstr "Separador" #: comctl32.rc:44 progman.rc:78 msgctxt "hotkey" msgid "None" -msgstr "" +msgstr "Cap" #: comctl32.rc:28 wordpad.rc:169 msgid "Close" -msgstr "" +msgstr "Tanca" #: comctl32.rc:33 msgid "Today:" -msgstr "" +msgstr "Avui:" #: comctl32.rc:34 msgid "Go to today" -msgstr "" +msgstr "Anar a avui" #: comdlg32.rc:29 msgid "&About FolderPicker Test" -msgstr "" +msgstr "Qu&ant a la prova FolderPicker" #: comdlg32.rc:30 msgid "Document Folders" -msgstr "" +msgstr "Carpetas de Documents" #: comdlg32.rc:31 shell32.rc:200 msgid "My Documents" -msgstr "" +msgstr "Els meus documents" #: comdlg32.rc:32 msgid "My Favorites" -msgstr "" +msgstr "Els meus preferits" #: comdlg32.rc:33 msgid "System Path" -msgstr "" +msgstr "Ruta del Sistema" #: comdlg32.rc:34 shell32.rc:153 winecfg.rc:98 winefile.rc:103 msgctxt "display name" msgid "Desktop" -msgstr "" +msgstr "Escriptori" #: comdlg32.rc:35 winhlp32.rc:46 winhlp32.rc:67 msgid "Fonts" -msgstr "" +msgstr "Fonts" #: comdlg32.rc:36 shell32.rc:154 regedit.rc:200 msgid "My Computer" -msgstr "" +msgstr "El meu ordinador" #: comdlg32.rc:41 msgid "System Folders" -msgstr "" +msgstr "Carpetas de Sistema" #: comdlg32.rc:42 msgid "Local Hard Drives" -msgstr "" +msgstr "Discs Durs Locals" #: comdlg32.rc:43 msgid "File not found" -msgstr "" +msgstr "Fitxer no trobat" #: comdlg32.rc:44 msgid "Please verify that the correct file name was given" -msgstr "" +msgstr "Si us plau, verifiqueu que es hagués donat el nom correct del fitxer" #: comdlg32.rc:45 msgid "" "File does not exist.\n" "Do you want to create file?" msgstr "" +"El fitxer no existeix.\n" +"El voleu crear?" #: comdlg32.rc:46 msgid "" "File already exists.\n" "Do you want to replace it?" msgstr "" +"El fitxer ja existeix.\n" +"El voleu reemplaçar?" #: comdlg32.rc:47 msgid "Invalid character(s) in path" -msgstr "" +msgstr "Hi ha caràcters invàlids en la ruta" #: comdlg32.rc:48 msgid "" "A filename cannot contain any of the following characters:\n" " / : < > |" msgstr "" +"Un nom de fitxer no pot contenir cualsevol dels caràcters següents:\n" +" / : < > |" #: comdlg32.rc:49 msgid "Path does not exist" -msgstr "" +msgstr "La ruta no existeix" #: comdlg32.rc:50 msgid "File does not exist" -msgstr "" +msgstr "El fitxer no existeix" #: comdlg32.rc:55 msgid "Up One Level" -msgstr "" +msgstr "Un Nivell Amunt" #: comdlg32.rc:56 msgid "Create New Folder" -msgstr "" +msgstr "Crear Nova Carpeta" #: comdlg32.rc:57 msgid "List" -msgstr "" +msgstr "Llista" #: comdlg32.rc:58 msgid "Details" -msgstr "" +msgstr "Detalls" #: comdlg32.rc:59 msgid "Browse to Desktop" -msgstr "" +msgstr "Anar a Escriptori" #: comdlg32.rc:123 msgid "Regular" -msgstr "" +msgstr "Regular" #: comdlg32.rc:124 msgid "Bold" -msgstr "" +msgstr "Negreta" #: comdlg32.rc:125 msgid "Italic" -msgstr "" +msgstr "Cursiva" #: comdlg32.rc:126 msgid "Bold Italic" -msgstr "" +msgstr "Negreta Cursiva" #: comdlg32.rc:131 wordpad.rc:114 msgid "Black" -msgstr "" +msgstr "Negre" #: comdlg32.rc:132 wordpad.rc:115 msgid "Maroon" -msgstr "" +msgstr "Granat" #: comdlg32.rc:133 wordpad.rc:116 msgid "Green" -msgstr "" +msgstr "Verd" #: comdlg32.rc:134 wordpad.rc:117 msgid "Olive" -msgstr "" +msgstr "Oliva" #: comdlg32.rc:135 wordpad.rc:118 msgid "Navy" -msgstr "" +msgstr "Marí" #: comdlg32.rc:136 wordpad.rc:119 msgid "Purple" -msgstr "" +msgstr "Porpra" #: comdlg32.rc:137 wordpad.rc:120 msgid "Teal" -msgstr "" +msgstr "Xarxet" #: comdlg32.rc:138 wordpad.rc:121 msgid "Gray" -msgstr "" +msgstr "Gris" #: comdlg32.rc:139 wordpad.rc:122 msgid "Silver" -msgstr "" +msgstr "Plata" #: comdlg32.rc:140 wordpad.rc:123 msgid "Red" -msgstr "" +msgstr "Vermell" #: comdlg32.rc:141 wordpad.rc:124 msgid "Lime" -msgstr "" +msgstr "Llima" #: comdlg32.rc:142 wordpad.rc:125 msgid "Yellow" -msgstr "" +msgstr "Groc" #: comdlg32.rc:143 wordpad.rc:126 msgid "Blue" -msgstr "" +msgstr "Blau" #: comdlg32.rc:144 wordpad.rc:127 msgid "Fuchsia" -msgstr "" +msgstr "Fúcsia" #: comdlg32.rc:145 wordpad.rc:128 msgid "Aqua" -msgstr "" +msgstr "Aigua" #: comdlg32.rc:146 wordpad.rc:129 msgid "White" -msgstr "" +msgstr "Blanc" #: comdlg32.rc:66 msgid "Unreadable Entry" -msgstr "" +msgstr "Entrada Il·legible" #: comdlg32.rc:68 msgid "" "This value does not lie within the page range.\n" "Please enter a value between %d and %d." msgstr "" +"Aquest valor no cau entre l'abast de la pàgina.\n" +"Si us plau, introdueix un valor entre %d i %d." #: comdlg32.rc:70 msgid "The 'from' entry cannot exceed the 'to' entry." -msgstr "" +msgstr "La entrada 'de' no pot superar la entrada 'a'." #: comdlg32.rc:72 msgid "" "Margins overlap or fall outside Paper boundaries.\n" "Please reenter margins." msgstr "" +"Els marges es superposen o cauen fora dels límits de la pàgina.\n" +"Si us plau, reintrodueix els marges." #: comdlg32.rc:74 msgid "The 'Number of copies' field cannot be empty." -msgstr "" +msgstr "El camp 'Nombre de còpies' no pot estar buit." #: comdlg32.rc:76 msgid "" "This large number of copies is not supported by your printer.\n" "Please enter a value between 1 and %d." msgstr "" +"Aquest gran nombre de còpies no és compatible amb la vostre impressora.\n" +"Si us plau, introduïu un valor entre 1 i %d." #: comdlg32.rc:77 msgid "A printer error occurred." -msgstr "" +msgstr "S'ha produït un error d'impressora." #: comdlg32.rc:78 msgid "No default printer defined." -msgstr "" +msgstr "No s'ha seleccionat cap impressora predeterminada." #: comdlg32.rc:79 msgid "Cannot find the printer." -msgstr "" +msgstr "No es pot trobar la impressora." #: comdlg32.rc:80 progman.rc:73 msgid "Out of memory." -msgstr "" +msgstr "No queda memòria." #: comdlg32.rc:81 msgid "An error occurred." -msgstr "" +msgstr "Un error s'ha produït." #: comdlg32.rc:82 msgid "Unknown printer driver." -msgstr "" +msgstr "Controlador d'impressora desconegut." #: comdlg32.rc:85 msgid "" "Before you can perform printer-related tasks such as page setup or printing " "a document, you need to install a printer. Please install one and retry." msgstr "" +"Abans que pugueu realitzar tasques relacionats amb la impressora com " +"configurar la pàgina o imprimir un document, cal instal·lar una impressora. " +"Si us plau, instal·leu una i torneu a intentar." #: comdlg32.rc:151 msgid "Select a font size between %d and %d points." -msgstr "" +msgstr "Seleccioneu una mida de lletra entre %d i %d punts." #: comdlg32.rc:152 ieframe.rc:32 msgid "&Save" -msgstr "" +msgstr "&Desa" #: comdlg32.rc:153 msgid "Save &in:" -msgstr "" +msgstr "Desa &en:" #: comdlg32.rc:154 msgid "Save" -msgstr "" +msgstr "Desa" #: comdlg32.rc:155 msgid "Save as" -msgstr "" +msgstr "Anomena i desa" #: comdlg32.rc:156 msgid "Open File" -msgstr "" +msgstr "Obre Fitxer" #: comdlg32.rc:93 oleview.rc:95 msgid "Ready" -msgstr "" +msgstr "Llest" #: comdlg32.rc:94 msgid "Paused; " -msgstr "" +msgstr "Pausada; " #: comdlg32.rc:95 msgid "Error; " -msgstr "" +msgstr "Error; " #: comdlg32.rc:96 msgid "Pending deletion; " -msgstr "" +msgstr "Pendent d'eliminació; " #: comdlg32.rc:97 msgid "Paper jam; " -msgstr "" +msgstr "Embús de paper; " #: comdlg32.rc:98 msgid "Out of paper; " -msgstr "" +msgstr "No queda paper; " #: comdlg32.rc:99 msgid "Feed paper manual; " -msgstr "" +msgstr "Introduir paper manualment; " #: comdlg32.rc:100 msgid "Paper problem; " -msgstr "" +msgstr "Problema de paper; " #: comdlg32.rc:101 msgid "Printer offline; " -msgstr "" +msgstr "Impressora fora de línea; " #: comdlg32.rc:102 msgid "I/O Active; " -msgstr "" +msgstr "E/S Actius; " #: comdlg32.rc:103 msgid "Busy; " -msgstr "" +msgstr "Ocupada; " #: comdlg32.rc:104 msgid "Printing; " -msgstr "" +msgstr "Imprimint; " #: comdlg32.rc:105 msgid "Output tray is full; " -msgstr "" +msgstr "La safata de sortida està plena; " #: comdlg32.rc:106 msgid "Not available; " -msgstr "" +msgstr "No disponible; " #: comdlg32.rc:107 msgid "Waiting; " -msgstr "" +msgstr "Esperant; " #: comdlg32.rc:108 msgid "Processing; " -msgstr "" +msgstr "Realitzant; " #: comdlg32.rc:109 msgid "Initialising; " -msgstr "" +msgstr "Inicialitzant; " #: comdlg32.rc:110 msgid "Warming up; " -msgstr "" +msgstr "Escalfant; " #: comdlg32.rc:111 msgid "Toner low; " -msgstr "" +msgstr "Tòner baix; " #: comdlg32.rc:112 msgid "No toner; " -msgstr "" +msgstr "Falta tòner; " #: comdlg32.rc:113 msgid "Page punt; " -msgstr "" +msgstr "Expulsió de pàgina; " #: comdlg32.rc:114 msgid "Interrupted by user; " -msgstr "" +msgstr "Interromput per usuari; " #: comdlg32.rc:115 msgid "Out of memory; " -msgstr "" +msgstr "No queda memòria; " #: comdlg32.rc:116 msgid "The printer door is open; " -msgstr "" +msgstr "La porta de la impressora està oberta; " #: comdlg32.rc:117 msgid "Print server unknown; " -msgstr "" +msgstr "Servidor d'impresió desconegut; " #: comdlg32.rc:118 msgid "Power save mode; " -msgstr "" +msgstr "Mode d'estalvi d'energia; " #: comdlg32.rc:87 msgid "Default Printer; " -msgstr "" +msgstr "Impressora Predeterminada; " #: comdlg32.rc:88 msgid "There are %d documents in the queue" -msgstr "" +msgstr "Hi ha %d documents en la cua" #: comdlg32.rc:89 msgid "Margins [inches]" -msgstr "" +msgstr "Marges [polzades]" #: comdlg32.rc:90 msgid "Margins [mm]" -msgstr "" +msgstr "Marges [mm]" #: comdlg32.rc:91 sane.rc:33 msgctxt "unit: millimeters" msgid "mm" -msgstr "" +msgstr "unidad: mil·límetres" #: comdlg32.rc:64 hhctrl.rc:46 wordpad.rc:162 msgid "Print" -msgstr "" +msgstr "Imprimeix" #: credui.rc:27 msgid "Connect to %s" -msgstr "" +msgstr "Connecta a %s" #: credui.rc:28 msgid "Connecting to %s" -msgstr "" +msgstr "Connectant a $s" #: credui.rc:29 msgid "Logon unsuccessful" -msgstr "" +msgstr "Inici de sessió sense èxit" #: credui.rc:30 msgid "" "Make sure that your user name\n" "and password are correct." msgstr "" +"Comproveu que el nom d'usuari\n" +"i la contrasenya siguin correctes." #: credui.rc:32 msgid "" @@ -554,114 +577,119 @@ "Press the Caps Lock key on your keyboard to turn off Caps Lock before\n" "entering your password." msgstr "" +"Tenir el bloqueig de majúscules activat pot causar que introduïu la " +"contrasenya de forma incorrecta.\n" +"\n" +"Premeu la tecla Bloq Maj en el vostre teclat per desactivar el bloqueig de " +"majúscules abans d'introduir la vostre contrasenya." #: credui.rc:31 msgid "Caps Lock is On" -msgstr "" +msgstr "Bloqueig de Majúscules Activat" #: crypt32.rc:27 msgid "Authority Key Identifier" -msgstr "" +msgstr "Identificador de Clau de l'Autoritat" #: crypt32.rc:28 msgid "Key Attributes" -msgstr "" +msgstr "Atributs de Clau" #: crypt32.rc:29 msgid "Key Usage Restriction" -msgstr "" +msgstr "Restricció d'Ús de Clau" #: crypt32.rc:30 msgid "Subject Alternative Name" -msgstr "" +msgstr "Nom Alternatiu del Subjecte" #: crypt32.rc:31 msgid "Issuer Alternative Name" -msgstr "" +msgstr "Nom Alternatiu de l'Emissor" #: crypt32.rc:32 msgid "Basic Constraints" -msgstr "" +msgstr "Restriccions Bàsiques" #: crypt32.rc:33 msgid "Key Usage" -msgstr "" +msgstr "Ús de Clau" #: crypt32.rc:34 msgid "Certificate Policies" -msgstr "" +msgstr "Polítiques de Certificació" #: crypt32.rc:35 msgid "Subject Key Identifier" -msgstr "" +msgstr "Identificador de Clau de Subjecte" #: crypt32.rc:36 msgid "CRL Reason Code" -msgstr "" +msgstr "Codi de Raó CRL" #: crypt32.rc:37 msgid "CRL Distribution Points" -msgstr "" +msgstr "Punts de Distribució CRL" #: crypt32.rc:38 msgid "Enhanced Key Usage" -msgstr "" +msgstr "Ús Millorat de Clau" #: crypt32.rc:39 msgid "Authority Information Access" -msgstr "" +msgstr "Accés d'Informació de l'Autoritat" #: crypt32.rc:40 msgid "Certificate Extensions" -msgstr "" +msgstr "Extensions del Certificat" #: crypt32.rc:41 msgid "Next Update Location" -msgstr "" +msgstr "Propera Ubicació d'Actualització" #: crypt32.rc:42 msgid "Yes or No Trust" -msgstr "" +msgstr "Confiança Sí o No" #: crypt32.rc:43 msgid "Email Address" -msgstr "" +msgstr "Adreça de Correu Electrònic" #: crypt32.rc:44 msgid "Unstructured Name" -msgstr "" +msgstr "Nom no Estructurat" #: crypt32.rc:45 msgid "Content Type" -msgstr "" +msgstr "Tipus de Contingut" #: crypt32.rc:46 msgid "Message Digest" -msgstr "" +msgstr "Digest de Missatge" #: crypt32.rc:47 msgid "Signing Time" -msgstr "" +msgstr "Hora de Signatura" #: crypt32.rc:48 msgid "Counter Sign" -msgstr "" +msgstr "Co-signatura" #: crypt32.rc:49 msgid "Challenge Password" -msgstr "" +msgstr "Contrasenya de Desafiament" #: crypt32.rc:50 msgid "Unstructured Address" -msgstr "" +msgstr "Adreça no Estructurada" #: crypt32.rc:51 msgid "S/MIME Capabilities" -msgstr "" +msgstr "Capacitats de S/MIME" #: crypt32.rc:52 msgid "Prefer Signed Data" -msgstr "" +msgstr "Prefereix Dades Signades" #: crypt32.rc:53 cryptdlg.rc:31 msgctxt "Certification Practice Statement" @@ -670,7 +698,7 @@ #: crypt32.rc:54 cryptdlg.rc:32 msgid "User Notice" -msgstr "" +msgstr "Notificació d'Usuari" #: crypt32.rc:55 msgid "On-line Certificate Status Protocol" @@ -678,51 +706,51 @@ #: crypt32.rc:56 msgid "Certification Authority Issuer" -msgstr "" +msgstr "Emissor d'Autoritat de Certificació" #: crypt32.rc:57 msgid "Certification Template Name" -msgstr "" +msgstr "Nom de Plantilla de Certificació" #: crypt32.rc:58 msgid "Certificate Type" -msgstr "" +msgstr "Tipus de Certificat" #: crypt32.rc:59 msgid "Certificate Manifold" -msgstr "" +msgstr "Manifold de Certificat" #: crypt32.rc:60 msgid "Netscape Cert Type" -msgstr "" +msgstr "Tipus de Certificat Netscape" #: crypt32.rc:61 msgid "Netscape Base URL" -msgstr "" +msgstr "URL Base de Netscape" #: crypt32.rc:62 msgid "Netscape Revocation URL" -msgstr "" +msgstr "URL de Revocació de Netscape" #: crypt32.rc:63 msgid "Netscape CA Revocation URL" -msgstr "" +msgstr "URL de Revocació de CA de Netscape" #: crypt32.rc:64 msgid "Netscape Cert Renewal URL" -msgstr "" +msgstr "URL de Renovació de Certificat de Netscape" #: crypt32.rc:65 msgid "Netscape CA Policy URL" -msgstr "" +msgstr "URL de Política de CA de Netscape" #: crypt32.rc:66 msgid "Netscape SSL ServerName" -msgstr "" +msgstr "SSL ServerName de Netscape" #: crypt32.rc:67 msgid "Netscape Comment" -msgstr "" +msgstr "Comentari de Netscape" #: crypt32.rc:68 msgid "SpcSpAgencyInfo" @@ -738,71 +766,71 @@ #: crypt32.rc:71 msgid "Country/Region" -msgstr "" +msgstr "País/Regió" #: crypt32.rc:72 msgid "Organization" -msgstr "" +msgstr "Organització" #: crypt32.rc:73 msgid "Organizational Unit" -msgstr "" +msgstr "Unitat Organitzativa" #: crypt32.rc:74 msgid "Common Name" -msgstr "" +msgstr "Nom Comú" #: crypt32.rc:75 msgid "Locality" -msgstr "" +msgstr "Localitat" #: crypt32.rc:76 msgid "State or Province" -msgstr "" +msgstr "Estat o Província" #: crypt32.rc:77 msgid "Title" -msgstr "" +msgstr "Títol" #: crypt32.rc:78 msgid "Given Name" -msgstr "" +msgstr "Nom Donat" #: crypt32.rc:79 msgid "Initials" -msgstr "" +msgstr "Inicials" #: crypt32.rc:80 msgid "Surname" -msgstr "" +msgstr "Cognom" #: crypt32.rc:81 msgid "Domain Component" -msgstr "" +msgstr "Component de Domini" #: crypt32.rc:82 msgid "Street Address" -msgstr "" +msgstr "Direcció de Correu" #: crypt32.rc:83 msgid "Serial Number" -msgstr "" +msgstr "Número de Sèrie" #: crypt32.rc:84 msgid "CA Version" -msgstr "" +msgstr "Versió de CA" #: crypt32.rc:85 msgid "Cross CA Version" -msgstr "" +msgstr "Versió de CA Mutual" #: crypt32.rc:86 msgid "Serialized Signature Serial Number" -msgstr "" +msgstr "Número de Sèrie de Signatura Serialitzat" #: crypt32.rc:87 msgid "Principal Name" -msgstr "" +msgstr "Nom Principal" #: crypt32.rc:88 msgid "Windows Product Update" @@ -810,99 +838,99 @@ #: crypt32.rc:89 msgid "Enrollment Name Value Pair" -msgstr "" +msgstr "Parell de Nom Valor d'Inscripció" #: crypt32.rc:90 msgid "OS Version" -msgstr "" +msgstr "Versió de SO" #: crypt32.rc:91 msgid "Enrollment CSP" -msgstr "" +msgstr "CSP d'Inscripció" #: crypt32.rc:92 msgid "CRL Number" -msgstr "" +msgstr "Nombre CRL" #: crypt32.rc:93 msgid "Delta CRL Indicator" -msgstr "" +msgstr "Indicador de CRL Delta" #: crypt32.rc:94 msgid "Issuing Distribution Point" -msgstr "" +msgstr "Punt de Distribució Emitent" #: crypt32.rc:95 msgid "Freshest CRL" -msgstr "" +msgstr "CRL més recent" #: crypt32.rc:96 msgid "Name Constraints" -msgstr "" +msgstr "Restriccions de Nom" #: crypt32.rc:97 msgid "Policy Mappings" -msgstr "" +msgstr "Mappings de Política" #: crypt32.rc:98 msgid "Policy Constraints" -msgstr "" +msgstr "Restriccions de Polítiques" #: crypt32.rc:99 msgid "Cross-Certificate Distribution Points" -msgstr "" +msgstr "Punts de Distribució de Certificats Mutuals" #: crypt32.rc:100 msgid "Application Policies" -msgstr "" +msgstr "Polítiques d'Aplicació" #: crypt32.rc:101 msgid "Application Policy Mappings" -msgstr "" +msgstr "Mappings de Política d'Aplicació" #: crypt32.rc:102 msgid "Application Policy Constraints" -msgstr "" +msgstr "Restriccions de Política d'Aplicació" #: crypt32.rc:103 msgid "CMC Data" -msgstr "" +msgstr "Dades CMC" #: crypt32.rc:104 msgid "CMC Response" -msgstr "" +msgstr "Resposta de CMC" #: crypt32.rc:105 msgid "Unsigned CMC Request" -msgstr "" +msgstr "Sol·licitud CMC No Signat" #: crypt32.rc:106 msgid "CMC Status Info" -msgstr "" +msgstr "Informació d'Estat CMC" #: crypt32.rc:107 msgid "CMC Extensions" -msgstr "" +msgstr "Extensions CMC" #: crypt32.rc:108 msgid "CMC Attributes" -msgstr "" +msgstr "Atributs CMC" #: crypt32.rc:109 msgid "PKCS 7 Data" -msgstr "" +msgstr "PKCS 7 Dades" #: crypt32.rc:110 msgid "PKCS 7 Signed" -msgstr "" +msgstr "PKCS 7 Signat" #: crypt32.rc:111 msgid "PKCS 7 Enveloped" -msgstr "" +msgstr "PKCS 7 Embolicat" #: crypt32.rc:112 msgid "PKCS 7 Signed Enveloped" -msgstr "" +msgstr "PKCS 7 Signat Embolicat" #: crypt32.rc:113 msgid "PKCS 7 Digested" @@ -910,243 +938,243 @@ #: crypt32.rc:114 msgid "PKCS 7 Encrypted" -msgstr "" +msgstr "PKCS 7 Xifrat" #: crypt32.rc:115 msgid "Previous CA Certificate Hash" -msgstr "" +msgstr "Resum de Certificat CA Anterior" #: crypt32.rc:116 msgid "Virtual Base CRL Number" -msgstr "" +msgstr "Nombre CRL de Base Virtual" #: crypt32.rc:117 msgid "Next CRL Publish" -msgstr "" +msgstr "Proper Publicació CRL" #: crypt32.rc:118 msgid "CA Encryption Certificate" -msgstr "" +msgstr "Certificat de Xifratge CA" #: crypt32.rc:119 cryptui.rc:145 msgid "Key Recovery Agent" -msgstr "" +msgstr "Agent de Recuperació de Clau" #: crypt32.rc:120 msgid "Certificate Template Information" -msgstr "" +msgstr "Informació de Plantilla de Certificat" #: crypt32.rc:121 msgid "Enterprise Root OID" -msgstr "" +msgstr "OID d'Arrel d'Empresa" #: crypt32.rc:122 msgid "Dummy Signer" -msgstr "" +msgstr "Maniquí Signatori" #: crypt32.rc:123 msgid "Encrypted Private Key" -msgstr "" +msgstr "Clau Privada Xifrada" #: crypt32.rc:124 msgid "Published CRL Locations" -msgstr "" +msgstr "Ubicacions Publicades de CRL" #: crypt32.rc:125 msgid "Enforce Certificate Chain Policy" -msgstr "" +msgstr "Reforçar la Política de Cadena de Certificats" #: crypt32.rc:126 msgid "Transaction Id" -msgstr "" +msgstr "Id de transacció" #: crypt32.rc:127 msgid "Sender Nonce" -msgstr "" +msgstr "Nonce de Remitent" #: crypt32.rc:128 msgid "Recipient Nonce" -msgstr "" +msgstr "Nonce de Destinatari" #: crypt32.rc:129 msgid "Reg Info" -msgstr "" +msgstr "Informació de Reg" #: crypt32.rc:130 msgid "Get Certificate" -msgstr "" +msgstr "Obté Certificat" #: crypt32.rc:131 msgid "Get CRL" -msgstr "" +msgstr "Obté CRL" #: crypt32.rc:132 msgid "Revoke Request" -msgstr "" +msgstr "Revoca sol·licitud" #: crypt32.rc:133 msgid "Query Pending" -msgstr "" +msgstr "Consulta Pendent" #: crypt32.rc:134 cryptui.rc:92 msgid "Certificate Trust List" -msgstr "" +msgstr "Llista de Certificats de Confiança" #: crypt32.rc:135 msgid "Archived Key Certificate Hash" -msgstr "" +msgstr "Resum de Clau de Certificat Arxivat" #: crypt32.rc:136 msgid "Private Key Usage Period" -msgstr "" +msgstr "Període d'Ús de Clau Privada" #: crypt32.rc:137 msgid "Client Information" -msgstr "" +msgstr "Informació de Client" #: crypt32.rc:138 msgid "Server Authentication" -msgstr "" +msgstr "Autenticació de Servidor" #: crypt32.rc:139 msgid "Client Authentication" -msgstr "" +msgstr "Autenticació de Client" #: crypt32.rc:140 msgid "Code Signing" -msgstr "" +msgstr "Signatura de Codi" #: crypt32.rc:141 msgid "Secure Email" -msgstr "" +msgstr "Correu Electrònic Segur" #: crypt32.rc:142 msgid "Time Stamping" -msgstr "" +msgstr "Segellament de Temps" #: crypt32.rc:143 msgid "Microsoft Trust List Signing" -msgstr "" +msgstr "Segellament de Llista de Confiança de Microsoft" #: crypt32.rc:144 msgid "Microsoft Time Stamping" -msgstr "" +msgstr "Segellament de Temps de Microsoft" #: crypt32.rc:145 msgid "IP security end system" -msgstr "" +msgstr "Sistema final de seguretat IP" #: crypt32.rc:146 msgid "IP security tunnel termination" -msgstr "" +msgstr "Terminació de túnel de seguretat IP" #: crypt32.rc:147 msgid "IP security user" -msgstr "" +msgstr "Usuari de seguretat IP" #: crypt32.rc:148 msgid "Encrypting File System" -msgstr "" +msgstr "Sistema de Fitxers Xifrant" #: crypt32.rc:149 cryptui.rc:130 msgid "Windows Hardware Driver Verification" -msgstr "" +msgstr "Verificació de Controladors de Maquinari de Windows" #: crypt32.rc:150 cryptui.rc:131 msgid "Windows System Component Verification" -msgstr "" +msgstr "Verificació de Components de Sistema de Windows" #: crypt32.rc:151 cryptui.rc:132 msgid "OEM Windows System Component Verification" -msgstr "" +msgstr "Verificació de Components de Sistema de Windows OEM" #: crypt32.rc:152 cryptui.rc:133 msgid "Embedded Windows System Component Verification" -msgstr "" +msgstr "Verificació de Components de Sistema de Windows Incorporat" #: crypt32.rc:153 cryptui.rc:140 msgid "Key Pack Licenses" -msgstr "" +msgstr "Llicències de Paquet de Claus" #: crypt32.rc:154 cryptui.rc:141 msgid "License Server Verification" -msgstr "" +msgstr "Verificació de Servidor de Llicència" #: crypt32.rc:155 cryptui.rc:143 msgid "Smart Card Logon" -msgstr "" +msgstr "Inici de Targeta Intel·ligent" #: crypt32.rc:156 cryptui.rc:139 msgid "Digital Rights" -msgstr "" +msgstr "Drets Digitals" #: crypt32.rc:157 cryptui.rc:135 msgid "Qualified Subordination" -msgstr "" +msgstr "Subordinació Qualificada" #: crypt32.rc:158 cryptui.rc:136 msgid "Key Recovery" -msgstr "" +msgstr "Recuperació de Clau" #: crypt32.rc:159 cryptui.rc:137 msgid "Document Signing" -msgstr "" +msgstr "Signatura de Document" #: crypt32.rc:160 msgid "IP security IKE intermediate" -msgstr "" +msgstr "Intermedi IKE de seguretat IP" #: crypt32.rc:161 cryptui.rc:129 msgid "File Recovery" -msgstr "" +msgstr "Recuperació de Fitxers" #: crypt32.rc:162 cryptui.rc:134 msgid "Root List Signer" -msgstr "" +msgstr "Signatari de Llista d'Arrel" #: crypt32.rc:163 msgid "All application policies" -msgstr "" +msgstr "Totes les polítiques d'aplicació" #: crypt32.rc:164 cryptui.rc:146 msgid "Directory Service Email Replication" -msgstr "" +msgstr "Replicació de Correu Electrònic de Servei de Directori" #: crypt32.rc:165 cryptui.rc:142 msgid "Certificate Request Agent" -msgstr "" +msgstr "Agent de Petició de Certificat" #: crypt32.rc:166 cryptui.rc:138 msgid "Lifetime Signing" -msgstr "" +msgstr "Signatura de Tota la Vida" #: crypt32.rc:167 msgid "All issuance policies" -msgstr "" +msgstr "Totes les polítiques d'emissió" #: crypt32.rc:172 msgid "Trusted Root Certification Authorities" -msgstr "" +msgstr "Autoritats de Certificació d'Arrel de Confiança" #: crypt32.rc:173 msgid "Personal" -msgstr "" +msgstr "Personal" #: crypt32.rc:174 msgid "Intermediate Certification Authorities" -msgstr "" +msgstr "Autoritats Intermedis de Certificació" #: crypt32.rc:175 msgid "Other People" -msgstr "" +msgstr "Altres Persones" #: crypt32.rc:176 msgid "Trusted Publishers" -msgstr "" +msgstr "Editors de Confiança" #: crypt32.rc:177 msgid "Untrusted Certificates" -msgstr "" +msgstr "Certificats no de Confiança" #: crypt32.rc:182 msgid "KeyID=" @@ -1154,142 +1182,142 @@ #: crypt32.rc:183 msgid "Certificate Issuer" -msgstr "" +msgstr "Emissor de Certificat" #: crypt32.rc:184 msgid "Certificate Serial Number=" -msgstr "" +msgstr "Número de Sèrie de Certificat=" #: crypt32.rc:185 msgid "Other Name=" -msgstr "" +msgstr "Altre Nom=" #: crypt32.rc:186 msgid "Email Address=" -msgstr "" +msgstr "Adreça de Correu Electrònic=" #: crypt32.rc:187 msgid "DNS Name=" -msgstr "" +msgstr "Nom DNS=" #: crypt32.rc:188 msgid "Directory Address" -msgstr "" +msgstr "Adreça de Directori" #: crypt32.rc:189 msgid "URL=" -msgstr "" +msgstr "URL=" #: crypt32.rc:190 msgid "IP Address=" -msgstr "" +msgstr "Adreça IP=" #: crypt32.rc:191 msgid "Mask=" -msgstr "" +msgstr "Màscara=" #: crypt32.rc:192 msgid "Registered ID=" -msgstr "" +msgstr "ID Registrada=" #: crypt32.rc:193 msgid "Unknown Key Usage" -msgstr "" +msgstr "Ús de Clau Desconegut" #: crypt32.rc:194 msgid "Subject Type=" -msgstr "" +msgstr "Tipus d'Entitat" #: crypt32.rc:195 msgctxt "Certificate Authority" msgid "CA" -msgstr "" +msgstr "CA" #: crypt32.rc:196 msgid "End Entity" -msgstr "" +msgstr "Entitat Final" #: crypt32.rc:197 msgid "Path Length Constraint=" -msgstr "" +msgstr "Restricció de Longitud de Ruta" #: crypt32.rc:198 msgctxt "path length" msgid "None" -msgstr "" +msgstr "longitud de ruta" #: crypt32.rc:199 msgid "Information Not Available" -msgstr "" +msgstr "Informació No Disponible" #: crypt32.rc:200 msgid "Authority Info Access" -msgstr "" +msgstr "Accés d'Informació d'Autoritat" #: crypt32.rc:201 msgid "Access Method=" -msgstr "" +msgstr "Mètode d'Accés=" #: crypt32.rc:202 msgctxt "Online Certificate Status Protocol" msgid "OCSP" -msgstr "" +msgstr "OCSP" #: crypt32.rc:203 msgid "CA Issuers" -msgstr "" +msgstr "Emissors CA" #: crypt32.rc:204 msgid "Unknown Access Method" -msgstr "" +msgstr "Mètode d'Accés Desconegut" #: crypt32.rc:205 msgid "Alternative Name" -msgstr "" +msgstr "Nom Alternatiu" #: crypt32.rc:206 msgid "CRL Distribution Point" -msgstr "" +msgstr "Punt de Distribució CRL" #: crypt32.rc:207 msgid "Distribution Point Name" -msgstr "" +msgstr "Nom de Punt de Distribució" #: crypt32.rc:208 msgid "Full Name" -msgstr "" +msgstr "Nom Complet" #: crypt32.rc:209 msgid "RDN Name" -msgstr "" +msgstr "Nom de RDN" #: crypt32.rc:210 msgid "CRL Reason=" -msgstr "" +msgstr "CRL Motiu=" #: crypt32.rc:211 msgid "CRL Issuer" -msgstr "" +msgstr "Emissor de CRL" #: crypt32.rc:212 msgid "Key Compromise" -msgstr "" +msgstr "Compromís de Clau" #: crypt32.rc:213 msgid "CA Compromise" -msgstr "" +msgstr "Compromís de CA" #: crypt32.rc:214 msgid "Affiliation Changed" -msgstr "" +msgstr "Afiliació Canviada" #: crypt32.rc:215 msgid "Superseded" -msgstr "" +msgstr "Reemplaçat" #: crypt32.rc:216 msgid "Operation Ceased" -msgstr "" +msgstr "Operació Cessat" #: crypt32.rc:217 msgid "Certificate Hold" @@ -1297,75 +1325,75 @@ #: crypt32.rc:218 msgid "Financial Information=" -msgstr "" +msgstr "Informació Financera=" #: crypt32.rc:219 msgid "Available" -msgstr "" +msgstr "Disponible" #: crypt32.rc:220 msgid "Not Available" -msgstr "" +msgstr "No Disponible" #: crypt32.rc:221 msgid "Meets Criteria=" -msgstr "" +msgstr "Reuneix els Criteri=" #: crypt32.rc:222 cryptui.rc:163 oleaut32.rc:29 ipconfig.rc:44 msgid "Yes" -msgstr "" +msgstr "Sí" #: crypt32.rc:223 cryptui.rc:164 oleaut32.rc:30 ipconfig.rc:45 msgid "No" -msgstr "" +msgstr "No" #: crypt32.rc:224 msgid "Digital Signature" -msgstr "" +msgstr "Signatura Digital" #: crypt32.rc:225 msgid "Non-Repudiation" -msgstr "" +msgstr "No Repudiació" #: crypt32.rc:226 msgid "Key Encipherment" -msgstr "" +msgstr "Xifratge de Clau" #: crypt32.rc:227 msgid "Data Encipherment" -msgstr "" +msgstr "Xifratge de Dades" #: crypt32.rc:228 msgid "Key Agreement" -msgstr "" +msgstr "Acord de Clau" #: crypt32.rc:229 msgid "Certificate Signing" -msgstr "" +msgstr "Signatura de Certificat" #: crypt32.rc:230 msgid "Off-line CRL Signing" -msgstr "" +msgstr "Signatura CRL fora de línia" #: crypt32.rc:231 msgid "CRL Signing" -msgstr "" +msgstr "Signatura CRL" #: crypt32.rc:232 msgid "Encipher Only" -msgstr "" +msgstr "Només Xifrar" #: crypt32.rc:233 msgid "Decipher Only" -msgstr "" +msgstr "Només Desxifrar" #: crypt32.rc:234 msgid "SSL Client Authentication" -msgstr "" +msgstr "Autenticació de Client SSL" #: crypt32.rc:235 msgid "SSL Server Authentication" -msgstr "" +msgstr "Autenticació de Servidor SSL" #: crypt32.rc:236 msgid "S/MIME" @@ -1373,7 +1401,7 @@ #: crypt32.rc:237 msgid "Signature" -msgstr "" +msgstr "Signatura" #: crypt32.rc:238 msgid "SSL CA" @@ -1385,239 +1413,249 @@ #: crypt32.rc:240 msgid "Signature CA" -msgstr "" +msgstr "CA de Signatura" #: cryptdlg.rc:27 msgid "Certificate Policy" -msgstr "" +msgstr "Política de Certificat" #: cryptdlg.rc:28 msgid "Policy Identifier: " -msgstr "" +msgstr "Identificador de Política: " #: cryptdlg.rc:29 msgid "Policy Qualifier Info" -msgstr "" +msgstr "Informació de Qualificador de Política" #: cryptdlg.rc:30 msgid "Policy Qualifier Id=" -msgstr "" +msgstr "Id de Qualificador de Política=" #: cryptdlg.rc:33 msgid "Qualifier" -msgstr "" +msgstr "Qualificador" #: cryptdlg.rc:34 msgid "Notice Reference" -msgstr "" +msgstr "Referència d'Anunci" #: cryptdlg.rc:35 msgid "Organization=" -msgstr "" +msgstr "Organització=" #: cryptdlg.rc:36 msgid "Notice Number=" -msgstr "" +msgstr "Nombre d'Anunci=" #: cryptdlg.rc:37 msgid "Notice Text=" -msgstr "" +msgstr "Text d'Anunci=" #: cryptui.rc:27 cryptui.rc:90 msgid "Certificate" -msgstr "" +msgstr "Certificat" #: cryptui.rc:28 msgid "Certificate Information" -msgstr "" +msgstr "Informació de Certificat" #: cryptui.rc:29 msgid "" "This certificate has an invalid signature. The certificate may have been " "altered or corrupted." msgstr "" +"Aquet certificat té una signatura invàlida. Pot que el certificat es hagués " +"modificat o corromput." #: cryptui.rc:30 msgid "" "This root certificate is not trusted. To trust it, add it to your system's " "trusted root certificate store." msgstr "" +"Aquest certificat d'arrel no és de confiança. Per confiar en ell, afegeix-lo " +"al magatzem de certificats d'arrel de confiança del vostre sistema." #: cryptui.rc:31 msgid "This certificate could not be validated to a trusted root certificate." msgstr "" +"No s'ha pogut validar aquest certificat a un certificat d'arrel de confiança." #: cryptui.rc:32 msgid "This certificate's issuer could not be found." -msgstr "" +msgstr "No s'ha pogut trobar l'emissor d'aquest certificat." #: cryptui.rc:33 msgid "All the intended purposes of this certificate could not be verified." msgstr "" +"No s'ha pogut verificar tots els propòsits destinats d'aquest certificat." #: cryptui.rc:34 msgid "This certificate is intended for the following purposes:" -msgstr "" +msgstr "Aquest certificat no s'destina per als propòsits següents:" #: cryptui.rc:35 msgid "Issued to: " -msgstr "" +msgstr "Emès a: " #: cryptui.rc:36 msgid "Issued by: " -msgstr "" +msgstr "Emès de: " #: cryptui.rc:37 msgid "Valid from " -msgstr "" +msgstr "Vàlid de " #: cryptui.rc:38 msgid " to " -msgstr "" +msgstr " a " #: cryptui.rc:39 msgid "This certificate has an invalid signature." -msgstr "" +msgstr "Aquest certificat té una signatura no vàlida." #: cryptui.rc:40 msgid "This certificate has expired or is not yet valid." -msgstr "" +msgstr "Aquest certificat ha caducat o encara no és vàlid." #: cryptui.rc:41 msgid "This certificate's validity period exceeds that of its issuer." -msgstr "" +msgstr "El periode de validesa d'aquest certificat supera el del seu emissor." #: cryptui.rc:42 msgid "This certificate was revoked by its issuer." -msgstr "" +msgstr "L'emissor d'aquest certificat el ha revocat." #: cryptui.rc:43 msgid "This certificate is OK." -msgstr "" +msgstr "Aquest certificat està bé." #: cryptui.rc:44 msgid "Field" -msgstr "" +msgstr "Camp" #: cryptui.rc:45 msgid "Value" -msgstr "" +msgstr "Valor" #: cryptui.rc:46 cryptui.rc:99 cryptui.rc:105 msgid "" -msgstr "" +msgstr "" #: cryptui.rc:47 msgid "Version 1 Fields Only" -msgstr "" +msgstr "Només Camps de Versió 1" #: cryptui.rc:48 msgid "Extensions Only" -msgstr "" +msgstr "Només Extensions" #: cryptui.rc:49 msgid "Critical Extensions Only" -msgstr "" +msgstr "Només Extensions Críticas" #: cryptui.rc:50 msgid "Properties Only" -msgstr "" +msgstr "Només Propietats" #: cryptui.rc:52 msgid "Serial number" -msgstr "" +msgstr "Nombre de sèrie" #: cryptui.rc:53 msgid "Issuer" -msgstr "" +msgstr "Emissor" #: cryptui.rc:54 msgid "Valid from" -msgstr "" +msgstr "Vàlid des de" #: cryptui.rc:55 msgid "Valid to" -msgstr "" +msgstr "Vàlid fins" #: cryptui.rc:56 msgid "Subject" -msgstr "" +msgstr "Entitat" #: cryptui.rc:57 msgid "Public key" -msgstr "" +msgstr "Clau Pública" #: cryptui.rc:58 msgid "%s (%d bits)" -msgstr "" +msgstr "%s (%d bits)" #: cryptui.rc:59 msgid "SHA1 hash" -msgstr "" +msgstr "Resum SHA1" #: cryptui.rc:60 msgid "Enhanced key usage (property)" -msgstr "" +msgstr "Ús millorat de clau (propietat)" #: cryptui.rc:61 msgid "Friendly name" -msgstr "" +msgstr "Nom amistós" #: cryptui.rc:62 shell32.rc:252 ipconfig.rc:41 msgid "Description" -msgstr "" +msgstr "Descripció" #: cryptui.rc:63 msgid "Certificate Properties" -msgstr "" +msgstr "Propietats de Certificat" #: cryptui.rc:64 msgid "Please enter an OID in the form 1.2.3.4" -msgstr "" +msgstr "Si us plau, introduïu un OID en la forma 1.2.3.4" #: cryptui.rc:65 msgid "The OID you entered already exists." -msgstr "" +msgstr "El OID que heu introduït ja existeix." #: cryptui.rc:66 msgid "Select Certificate Store" -msgstr "" +msgstr "Seleccionar Magatzem de Certificats" #: cryptui.rc:67 msgid "Please select a certificate store." -msgstr "" +msgstr "Si us plau, seleccioneu un magatzem de certificats." #: cryptui.rc:68 msgid "Certificate Import Wizard" -msgstr "" +msgstr "Assistent d'Importació de Certificats" #: cryptui.rc:69 msgid "" "The file contains objects that do not match the given criteria. Please " "select another file." msgstr "" +"El fitxer conté objectes que no coincideixen amb els criteris donats. Si us " +"plau, seleccioneu un altre fitxer." #: cryptui.rc:70 msgid "File to Import" -msgstr "" +msgstr "Fitxer per a Importar" #: cryptui.rc:71 msgid "Specify the file you want to import." -msgstr "" +msgstr "Especifiqueu el fitxer que voleu importar." #: cryptui.rc:72 cryptui.rc:95 msgid "Certificate Store" -msgstr "" +msgstr "Magatzem de Certificats" #: cryptui.rc:73 msgid "" "Certificate stores are collections of certificates, certificate revocation " "lists, and certificate trust lists." msgstr "" +"Els magatzems de certificats són conjunts de certificats, llistes de " +"revocació de certificats, i llistes de certificats de confiança." #: cryptui.rc:74 msgid "X.509 Certificate (*.cer; *.crt)" -msgstr "" +msgstr "Certificat X.509 (*.cer; *.crt)" #: cryptui.rc:75 msgid "Personal Information Exchange (*.pfx; *.p12)" @@ -1625,63 +1663,64 @@ #: cryptui.rc:76 cryptui.rc:155 msgid "Certificate Revocation List (*.crl)" -msgstr "" +msgstr "Llista de Certificats Revocats (*.crl)" #: cryptui.rc:77 cryptui.rc:156 msgid "Certificate Trust List (*.stl)" -msgstr "" +msgstr "Llista de Certificats de Confiança (*.stl)" #: cryptui.rc:78 msgid "Microsoft Serialized Certificate Store (*.sst)" -msgstr "" +msgstr "Magatzem de Certificats Serialitzat de Microsoft (*.sst)" #: cryptui.rc:79 msgid "CMS/PKCS #7 Messages (*.spc; *.p7b)" -msgstr "" +msgstr "Missatges CMS/PKCS #7 (*.spc; *.p7b)" #: cryptui.rc:81 msgid "Please select a file." -msgstr "" +msgstr "Si us plau, seleccioneu un fitxer." #: cryptui.rc:82 msgid "The file format is not recognized. Please select another file." msgstr "" +"El format de fitxer no es reconeix. Si us plau, seleccioneu un altre fitxer." #: cryptui.rc:83 msgid "Could not open " -msgstr "" +msgstr "No s'ha pogut obrir " #: cryptui.rc:84 msgid "Determined by the program" -msgstr "" +msgstr "Determinat pel programa" #: cryptui.rc:85 msgid "Please select a store" -msgstr "" +msgstr "Si us plau, selecciona un magatzem" #: cryptui.rc:86 msgid "Certificate Store Selected" -msgstr "" +msgstr "Magatzem de Certificats Seleccionat" #: cryptui.rc:87 msgid "Automatically determined by the program" -msgstr "" +msgstr "Determinat automàticament pel programa" #: cryptui.rc:88 shell32.rc:134 msgid "File" -msgstr "" +msgstr "Fitxer" #: cryptui.rc:89 msgid "Content" -msgstr "" +msgstr "Contingut" #: cryptui.rc:91 msgid "Certificate Revocation List" -msgstr "" +msgstr "Llista de Certificats Revocats" #: cryptui.rc:93 msgid "CMS/PKCS #7 Message" -msgstr "" +msgstr "Missatge CMS/PKCS #7" #: cryptui.rc:94 msgid "Personal Information Exchange" @@ -1689,11 +1728,11 @@ #: cryptui.rc:96 msgid "The import was successful." -msgstr "" +msgstr "La importació ha tingut èxit." #: cryptui.rc:97 msgid "The import failed." -msgstr "" +msgstr "La importació ha fallat." #: cryptui.rc:98 msgid "Arial" @@ -1701,27 +1740,27 @@ #: cryptui.rc:100 msgid "" -msgstr "" +msgstr "" #: cryptui.rc:101 msgid "Issued To" -msgstr "" +msgstr "Emès a" #: cryptui.rc:102 msgid "Issued By" -msgstr "" +msgstr "Emès de" #: cryptui.rc:103 msgid "Expiration Date" -msgstr "" +msgstr "Dada de caducació" #: cryptui.rc:104 msgid "Friendly Name" -msgstr "" +msgstr "Nom amostós" #: cryptui.rc:106 cryptui.rc:120 msgid "" -msgstr "" +msgstr "" #: cryptui.rc:107 msgid "" @@ -1729,6 +1768,9 @@ "sign messages with it.\n" "Are you sure you want to remove this certificate?" msgstr "" +"Ja no sereu capaç de desxifrar missatges amb aquest certificat, o signar " +"missatges amb ell.\n" +"Esteu segur que voleu treure aquest certificat?" #: cryptui.rc:108 msgid "" @@ -1736,6 +1778,9 @@ "sign messages with them.\n" "Are you sure you want to remove these certificates?" msgstr "" +"Ja no sereu capaç de desxifrar missatges amb aquests certificats, o signar " +"missatges amb ells.\n" +"Esteu segur que voleu treure aquests certificats?" #: cryptui.rc:109 msgid "" @@ -1743,6 +1788,9 @@ "verify messages signed with it.\n" "Are you sure you want to remove this certificate?" msgstr "" +"Ja no sereu capaç de xifrar missatges amb aquest certificat, o verificar " +"missatges signats amb ella.\n" +"Esteu segur que voleu suprimir aquest certificat?" #: cryptui.rc:110 msgid "" @@ -1750,6 +1798,9 @@ "verify messages signed with it.\n" "Are you sure you want to remove these certificates?" msgstr "" +"Ja no sereu capaç de xifrar missatges amb aquests certificats, o verificar " +"missatges signats amb ella.\n" +"Esteu segur que voleu suprimir aquests certificats?" #: cryptui.rc:111 msgid "" @@ -1757,6 +1808,9 @@ "trusted.\n" "Are you sure you want to remove this certificate?" msgstr "" +"Els certificats emesos per aquesta autoritat de certificació ja no seràde " +"confiança.\n" +"Esteu segur que voleu suprimir aquest certificat?" #: cryptui.rc:112 msgid "" @@ -1764,6 +1818,9 @@ "trusted.\n" "Are you sure you want to remove these certificates?" msgstr "" +"Els certificats emesos per aquestas autoritats de certificació ja no serande " +"confiança.\n" +"Esteu segur que voleu suprimir aquests certificats?" #: cryptui.rc:113 msgid "" @@ -1771,6 +1828,10 @@ "certification authorities it issued, will no longer be trusted.\n" "Are you sure you want to remove this trusted root certificate?" msgstr "" +"Els certificats emesos per aquesta autoritat de certificació d'arrel, o " +"qualsevol de les autoritats de certificació que ha emès, ja no seran de\n" +"confiança. Esteu segur que voleu treure aquest certificat d'arrel de " +"confiança?" #: cryptui.rc:114 msgid "" @@ -1778,104 +1839,114 @@ "certification authorities they issued, will no longer be trusted.\n" "Are you sure you want to remove these trusted root certificates?" msgstr "" +"Els certificats emesos per aquestas autoritats de certificació d'arrel, o " +"qualsevol de les autoritats de certificació que ha emès, ja no seran de\n" +"confiança. Esteu segur que voleu treure aquests certificats d'arrel de " +"confiança?" #: cryptui.rc:115 msgid "" "Software signed by this publisher will no longer be trusted.\n" "Are you sure you want to remove this certificate?" msgstr "" +"Programari signada per aquest editor ja no serà de confiança\n" +"Esteu segur que voleu treure aquest certificat?" #: cryptui.rc:116 msgid "" "Software signed by these publishers will no longer be trusted.\n" "Are you sure you want to remove these certificates?" msgstr "" +"Programari signada per aquests editors ja no serà de confiança\n" +"Esteu segur que voleu treure aquests certificats?" #: cryptui.rc:117 msgid "Are you sure you want to remove this certificate?" -msgstr "" +msgstr "Esteu segur que voleu treure aquest certificat?" #: cryptui.rc:118 msgid "Are you sure you want to remove these certificates?" -msgstr "" +msgstr "Esteu segur que voleu treure aquests certificats?" #: cryptui.rc:119 msgid "Certificates" -msgstr "" +msgstr "Certificats" #: cryptui.rc:121 msgid "Ensures the identity of a remote computer" -msgstr "" +msgstr "Assegura la identitat d'un ordinador remot" #: cryptui.rc:122 msgid "Proves your identity to a remote computer" -msgstr "" +msgstr "Prova la vostre identitat a un ordinador remot" #: cryptui.rc:123 msgid "" "Ensures software came from software publisher\n" "Protects software from alteration after publication" msgstr "" +"Assegura que el programari prové de l'editor de programari\n" +"Protegeix el programari d'alteració després de la publicació" #: cryptui.rc:124 msgid "Protects e-mail messages" -msgstr "" +msgstr "Protegeix missatges de correu electrònic" #: cryptui.rc:125 msgid "Allows secure communication over the Internet" -msgstr "" +msgstr "Permet la comunicació segura a través d'Internet" #: cryptui.rc:126 msgid "Allows data to be signed with the current time" -msgstr "" +msgstr "Permet que les dades es signin amb l'hora actual" #: cryptui.rc:127 msgid "Allows you to digitally sign a certificate trust list" -msgstr "" +msgstr "Us permet signar digitalment una llista de certificats de confiança" #: cryptui.rc:128 msgid "Allows data on disk to be encrypted" -msgstr "" +msgstr "Permet que les dades en el disc es xifrin" #: cryptui.rc:144 msgid "Private Key Archival" -msgstr "" +msgstr "Arxivament de Clau Privada" #: cryptui.rc:147 msgid "Certificate Export Wizard" -msgstr "" +msgstr "Assistent d'Exportació de Certificats" #: cryptui.rc:148 msgid "Export Format" -msgstr "" +msgstr "Format d'Exportació" #: cryptui.rc:149 msgid "Choose the format in which the content will be saved." -msgstr "" +msgstr "Escolliu el format en que es guardarà el contingut." #: cryptui.rc:150 msgid "Export Filename" -msgstr "" +msgstr "Nom de Fitxer d'Exportació" #: cryptui.rc:151 msgid "Specify the name of the file in which the content will be saved." -msgstr "" +msgstr "Especificeu el nom del fitxer en el qual es guardarà el contingut." #: cryptui.rc:152 msgid "The specified file already exists. Do you want to replace it?" -msgstr "" +msgstr "El fitxer especificat ja existeix. El voleu reemplaçar?" #: cryptui.rc:153 msgid "DER-Encoded Binary X.509 (*.cer)" -msgstr "" +msgstr "Binari DER-Codificat X.509 (*.cer)" #: cryptui.rc:154 msgid "Base64-Encoded X.509 (*.cer)" -msgstr "" +msgstr "Base64-Codificat X.509 (*.cer)" #: cryptui.rc:157 msgid "CMS/PKCS #7 Messages (*.p7b)" -msgstr "" +msgstr "Missatges CMS/PKCS #7 (*.p7b)" #: cryptui.rc:158 msgid "Personal Information Exchange (*.pfx)" @@ -1883,3437 +1954,3439 @@ #: cryptui.rc:159 msgid "Serialized Certificate Store (*.sst)" -msgstr "" +msgstr "Magatzem de Certificats Serialitzat (*.sst)" #: cryptui.rc:160 msgid "File Format" -msgstr "" +msgstr "Format de Fitxer" #: cryptui.rc:161 msgid "Include all certificates in certificate path" -msgstr "" +msgstr "Inclou tots els certificats en la ruta de certificat" #: cryptui.rc:162 msgid "Export keys" -msgstr "" +msgstr "Exportar claus" #: cryptui.rc:165 msgid "The export was successful." -msgstr "" +msgstr "La exportació ha tingut èxit." #: cryptui.rc:166 msgid "The export failed." -msgstr "" +msgstr "La exportació ha fallat." #: cryptui.rc:167 msgid "Export Private Key" -msgstr "" +msgstr "Exporta Clau Privada" #: cryptui.rc:168 msgid "" "The certificate contains a private key which may be exported along with the " "certificate." msgstr "" +"El certificat conté una clau privada que es pot exportar juntament amb el " +"certificat." #: cryptui.rc:169 msgid "Enter Password" -msgstr "" +msgstr "Introduïu Contrasenya" #: cryptui.rc:170 msgid "You may password-protect a private key." -msgstr "" +msgstr "Podeu protegir amb contrasenya una clau privada." #: cryptui.rc:171 msgid "The passwords do not match." -msgstr "" +msgstr "Les contrasenyes no es coincideixen." #: cryptui.rc:172 msgid "Note: The private key for this certificate could not be opened." -msgstr "" +msgstr "Nota: La clau privada d'aquest certificat no es podia obrir." #: cryptui.rc:173 msgid "Note: The private key for this certificate is not exportable." -msgstr "" +msgstr "Nota: La clau privada d'aquest certificat no és exportable." #: devenum.rc:32 msgid "Default DirectSound" -msgstr "" +msgstr "DirectSound Predeterminat" #: devenum.rc:33 msgid "DirectSound: %s" -msgstr "" +msgstr "DirectSound: %s" #: devenum.rc:34 msgid "Default WaveOut Device" -msgstr "" +msgstr "Dispositiu WaveOut Predeterminat" #: devenum.rc:35 msgid "Default MidiOut Device" -msgstr "" +msgstr "Dispositiu MidiOut Predeterminat" #: dinput.rc:34 msgid "Action" -msgstr "" +msgstr "Acció" #: dinput.rc:35 msgid "Object" -msgstr "" +msgstr "Objecte" #: dxdiagn.rc:25 msgid "Regional Setting" -msgstr "" +msgstr "Ajustament Regional" #: dxdiagn.rc:26 msgid "%uMB used, %uMB available" -msgstr "" +msgstr "%uMB usat, %uMB disponible" #: hhctrl.rc:56 msgid "S&ync" -msgstr "" +msgstr "S&incronitza" #: hhctrl.rc:57 shdoclc.rc:38 winhlp32.rc:86 msgid "&Back" -msgstr "" +msgstr "Enrere" #: hhctrl.rc:58 msgid "&Forward" -msgstr "" +msgstr "Endavant" #: hhctrl.rc:59 msgctxt "table of contents" msgid "&Home" -msgstr "" +msgstr "Inici" #: hhctrl.rc:60 msgid "&Stop" -msgstr "" +msgstr "Atura" #: hhctrl.rc:61 shdoclc.rc:56 msgid "&Refresh" -msgstr "" +msgstr "Actualitza" #: hhctrl.rc:62 winhlp32.rc:31 msgid "&Print..." -msgstr "" +msgstr "Im&primeix" #: hhctrl.rc:28 taskmgr.rc:89 msgid "&Contents" -msgstr "" +msgstr "&Continguts" #: hhctrl.rc:29 msgid "I&ndex" -msgstr "" +msgstr "Í&ndex" #: hhctrl.rc:30 notepad.rc:52 msgid "&Search" -msgstr "" +msgstr "&Cerca" #: hhctrl.rc:31 msgid "Favor&ites" -msgstr "" +msgstr "Prefer&its" #: hhctrl.rc:33 msgid "Hide &Tabs" -msgstr "" +msgstr "Amaga Pestanyas" #: hhctrl.rc:34 msgid "Show &Tabs" -msgstr "" +msgstr "Mostra Pestanyas" #: hhctrl.rc:39 msgid "Show" -msgstr "" +msgstr "Mostra" #: hhctrl.rc:40 msgid "Hide" -msgstr "" +msgstr "Amaga" #: hhctrl.rc:41 ieframe.rc:65 shdoclc.rc:164 shdoclc.rc:188 msgid "Stop" -msgstr "" +msgstr "Atura" #: hhctrl.rc:42 ieframe.rc:66 shell32.rc:59 msgid "Refresh" -msgstr "" +msgstr "Actualitza" #: hhctrl.rc:43 ieframe.rc:63 msgid "Back" -msgstr "" +msgstr "Enrere" #: hhctrl.rc:44 msgctxt "table of contents" msgid "Home" -msgstr "" +msgstr "Inici" #: hhctrl.rc:45 msgid "Sync" -msgstr "" +msgstr "Sincronitza" #: hhctrl.rc:47 wordpad.rc:155 msgid "Options" -msgstr "" +msgstr "Opcions" #: hhctrl.rc:48 ieframe.rc:64 msgid "Forward" -msgstr "" +msgstr "Endavant" #: iccvid.rc:25 iccvid.rc:26 msgid "Cinepak Video codec" -msgstr "" +msgstr "Còdec de vídeo Cinepak" #: ieframe.rc:25 shell32.rc:111 notepad.rc:26 oleview.rc:27 oleview.rc:77 #: progman.rc:29 taskmgr.rc:35 view.rc:28 winefile.rc:25 winhlp32.rc:28 #: wordpad.rc:26 msgid "&File" -msgstr "" +msgstr "&Fitxer" #: ieframe.rc:27 regedit.rc:44 regedit.rc:95 msgid "&New" -msgstr "" +msgstr "&Nou" #: ieframe.rc:29 winefile.rc:76 msgid "&Window" -msgstr "" +msgstr "Finestra" #: ieframe.rc:31 view.rc:30 winhlp32.rc:29 msgid "&Open..." -msgstr "" +msgstr "&Obre" #: ieframe.rc:33 notepad.rc:30 wordpad.rc:31 msgid "Save &as..." -msgstr "" +msgstr "&Anomena i desa..." #: ieframe.rc:35 msgid "Print &format..." -msgstr "" +msgstr "&Format d'impresió..." #: ieframe.rc:36 msgid "Pr&int..." -msgstr "" +msgstr "&Imprimeix..." #: ieframe.rc:37 wordpad.rc:34 msgid "Print previe&w" -msgstr "" +msgstr "Pre&visualització de la impresió" #: ieframe.rc:39 shdoclc.rc:58 shell32.rc:105 clock.rc:28 wineconsole.rc:27 msgid "&Properties" -msgstr "" +msgstr "&Propietats" #: ieframe.rc:40 oleview.rc:80 taskmgr.rc:139 -#, fuzzy msgid "&Close" -msgstr "&Tancar\tAlt-F4" +msgstr "&Tanca" #: ieframe.rc:42 shell32.rc:40 shell32.rc:117 oleview.rc:56 oleview.rc:58 #: oleview.rc:82 regedit.rc:63 taskmgr.rc:52 winefile.rc:49 wordpad.rc:66 msgid "&View" -msgstr "" +msgstr "&Visualitza" #: ieframe.rc:44 msgid "&Toolbars" -msgstr "" +msgstr "Barras d'eines" #: ieframe.rc:46 msgid "&Standard bar" -msgstr "" +msgstr "Barra estàndard" #: ieframe.rc:47 msgid "&Address bar" -msgstr "" +msgstr "Barra d'&adreça" #: ieframe.rc:50 regedit.rc:71 msgid "&Favorites" -msgstr "" +msgstr "Preferits" #: ieframe.rc:52 regedit.rc:73 msgid "&Add to Favorites..." -msgstr "" +msgstr "Afegeix a Preferits..." #: ieframe.rc:55 shell32.rc:125 clock.rc:41 notepad.rc:57 oleview.rc:69 #: progman.rc:52 regedit.rc:76 taskmgr.rc:87 winefile.rc:85 winemine.rc:48 #: winhlp32.rc:53 wordpad.rc:91 msgid "&Help" -msgstr "" +msgstr "A&juda" #: ieframe.rc:57 -#, fuzzy msgid "&About Internet Explorer" -msgstr "&Quant a Wine..." +msgstr "&Quant a Internet Explorer..." #: ieframe.rc:67 msgctxt "home page" msgid "Home" -msgstr "" +msgstr "Inici" #: ieframe.rc:68 winhlp32.rc:66 msgid "Print..." -msgstr "" +msgstr "Imprimeix" #: ieframe.rc:73 msgid "Address" -msgstr "" +msgstr "Adreça" #: inetcpl.rc:28 msgid "Internet Settings" -msgstr "" +msgstr "Ajustaments d'Internet" #: inetcpl.rc:29 msgid "Configure Wine Internet Browser and related settings" -msgstr "" +msgstr "Configura Wine Internet Browser i ajustaments relacionats" #: inetcpl.rc:30 msgid "Security settings for zone: " -msgstr "" +msgstr "Ajustaments de seguretat en quant a la zona: " #: inetcpl.rc:31 msgid "Custom" -msgstr "" +msgstr "Costum" #: inetcpl.rc:32 msgid "Very Low" -msgstr "" +msgstr "Molt Baix" #: inetcpl.rc:33 msgid "Low" -msgstr "" +msgstr "Baix" #: inetcpl.rc:34 msgid "Medium" -msgstr "" +msgstr "Medio" #: inetcpl.rc:35 msgid "Increased" -msgstr "" +msgstr "Augmentat" #: inetcpl.rc:36 msgid "High" -msgstr "" +msgstr "Alt" #: jscript.rc:25 msgid "Error converting object to primitive type" -msgstr "" +msgstr "Error en convertir l'objecte a tipus primitiu" #: jscript.rc:26 msgid "Invalid procedure call or argument" -msgstr "" +msgstr "Trucada a procediment o argument invàlid" #: jscript.rc:27 msgid "Subscript out of range" -msgstr "" +msgstr "El subíndex està fora del rang" #: jscript.rc:28 msgid "Automation server can't create object" -msgstr "" +msgstr "El servidor d'automatització no pot crear l'objecte" #: jscript.rc:29 msgid "Object doesn't support this property or method" -msgstr "" +msgstr "L'objecte no accepta aquesta propietat o mètode" #: jscript.rc:30 msgid "Object doesn't support this action" -msgstr "" +msgstr "L'objecte no accepta aquesta acció" #: jscript.rc:31 msgid "Argument not optional" -msgstr "" +msgstr "Argument no opcional" #: jscript.rc:32 msgid "Syntax error" -msgstr "" +msgstr "Error de sintaxi" #: jscript.rc:33 msgid "Expected ';'" -msgstr "" +msgstr "S'esperava ';'" #: jscript.rc:34 msgid "Expected '('" -msgstr "" +msgstr "S'esperava '('" #: jscript.rc:35 msgid "Expected ')'" -msgstr "" +msgstr "S'esperava ')'" #: jscript.rc:36 msgid "Unterminated string constant" -msgstr "" +msgstr "Cadena constant no finalitzat" #: jscript.rc:37 msgid "Conditional compilation is turned off" -msgstr "" +msgstr "La compilació condicional està desactivada" #: jscript.rc:40 msgid "Number expected" -msgstr "" +msgstr "S'esperava un nombre" #: jscript.rc:38 msgid "Function expected" -msgstr "" +msgstr "S'esperava una funció" #: jscript.rc:39 msgid "'[object]' is not a date object" -msgstr "" +msgstr "'[objecte]' no és un objecte de data" #: jscript.rc:41 msgid "Object expected" -msgstr "" +msgstr "S'esperava un objecte" #: jscript.rc:42 msgid "Illegal assignment" -msgstr "" +msgstr "Assignació il·legal" #: jscript.rc:43 msgid "'|' is undefined" -msgstr "" +msgstr "'|' no està definit" #: jscript.rc:44 msgid "Boolean object expected" -msgstr "" +msgstr "S'esperava un objecte booleà" #: jscript.rc:45 msgid "VBArray object expected" -msgstr "" +msgstr "S'esperava un objecte VBArray" #: jscript.rc:46 msgid "JScript object expected" -msgstr "" +msgstr "S'esperava un objecte JScript" #: jscript.rc:47 msgid "Syntax error in regular expression" -msgstr "" +msgstr "Error de sintaxi en l'expressió regular" #: jscript.rc:49 msgid "URI to be encoded contains invalid characters" -msgstr "" +msgstr "URI per a codificar conté caràcters invàlids" #: jscript.rc:48 msgid "URI to be decoded is incorrect" -msgstr "" +msgstr "URI per a descodificar és incorrecte" #: jscript.rc:50 msgid "Array length must be a finite positive integer" -msgstr "" +msgstr "Longitud del vector ha de ser un enter positiu finit" #: jscript.rc:51 msgid "Array object expected" -msgstr "" +msgstr "S'esperava un objecte Array" #: winerror.mc:26 msgid "Success\n" -msgstr "" +msgstr "Èxit\n" #: winerror.mc:31 msgid "Invalid function\n" -msgstr "" +msgstr "Funció invàlid\n" #: winerror.mc:36 msgid "File not found\n" -msgstr "" +msgstr "Fitxer no trobat\n" #: winerror.mc:41 msgid "Path not found\n" -msgstr "" +msgstr "Ruta no trobada\n" #: winerror.mc:46 msgid "Too many open files\n" -msgstr "" +msgstr "Massa fitxers oberts\n" #: winerror.mc:51 msgid "Access denied\n" -msgstr "" +msgstr "Accés denegat\n" #: winerror.mc:56 msgid "Invalid handle\n" -msgstr "" +msgstr "Mànec invàlid\n" #: winerror.mc:61 msgid "Memory trashed\n" -msgstr "" +msgstr "Memòria destruïda\n" #: winerror.mc:66 msgid "Not enough memory\n" -msgstr "" +msgstr "Falta memòria\n" #: winerror.mc:71 msgid "Invalid block\n" -msgstr "" +msgstr "Bloc invàlid\n" #: winerror.mc:76 msgid "Bad environment\n" -msgstr "" +msgstr "Entorn dolent\n" #: winerror.mc:81 msgid "Bad format\n" -msgstr "" +msgstr "Format dolent\n" #: winerror.mc:86 msgid "Invalid access\n" -msgstr "" +msgstr "Accés invàlid\n" #: winerror.mc:91 msgid "Invalid data\n" -msgstr "" +msgstr "Dades invàlides\n" #: winerror.mc:96 msgid "Out of memory\n" -msgstr "" +msgstr "No queda memòria\n" #: winerror.mc:101 msgid "Invalid drive\n" -msgstr "" +msgstr "Unitat invàlida\n" #: winerror.mc:106 msgid "Can't delete current directory\n" -msgstr "" +msgstr "No es pot suprimir el directori actual\n" #: winerror.mc:111 msgid "Not same device\n" -msgstr "" +msgstr "No és el mateix dispositu\n" #: winerror.mc:116 msgid "No more files\n" -msgstr "" +msgstr "No hi ha més fitxers\n" #: winerror.mc:121 msgid "Write protected\n" -msgstr "" +msgstr "Protegit contra escriptura\n" #: winerror.mc:126 msgid "Bad unit\n" -msgstr "" +msgstr "Unitat dolenta\n" #: winerror.mc:131 msgid "Not ready\n" -msgstr "" +msgstr "No està llest\n" #: winerror.mc:136 msgid "Bad command\n" -msgstr "" +msgstr "Ordre dolent\n" #: winerror.mc:141 msgid "CRC error\n" -msgstr "" +msgstr "Error de CRC\n" #: winerror.mc:146 msgid "Bad length\n" -msgstr "" +msgstr "Longitud dolent\n" #: winerror.mc:151 winerror.mc:526 msgid "Seek error\n" -msgstr "" +msgstr "Error de cercar\n" #: winerror.mc:156 msgid "Not DOS disk\n" -msgstr "" +msgstr "No és un disc de DOS\n" #: winerror.mc:161 msgid "Sector not found\n" -msgstr "" +msgstr "Sector no trobat\n" #: winerror.mc:166 msgid "Out of paper\n" -msgstr "" +msgstr "No queda paper\n" #: winerror.mc:171 msgid "Write fault\n" -msgstr "" +msgstr "Fallada d'escriptura\n" #: winerror.mc:176 msgid "Read fault\n" -msgstr "" +msgstr "Fallada de lectura\n" #: winerror.mc:181 msgid "General failure\n" -msgstr "" +msgstr "Fallada general\n" #: winerror.mc:186 msgid "Sharing violation\n" -msgstr "" +msgstr "Violació de compartició\n" #: winerror.mc:191 msgid "Lock violation\n" -msgstr "" +msgstr "Violació de cadenat\n" #: winerror.mc:196 msgid "Wrong disk\n" -msgstr "" +msgstr "Disc incorrecte\n" #: winerror.mc:201 msgid "Sharing buffer exceeded\n" -msgstr "" +msgstr "Memòria intermèdia de compartició superada\n" #: winerror.mc:206 msgid "End of file\n" -msgstr "" +msgstr "Final del fitxer\n" #: winerror.mc:211 winerror.mc:436 msgid "Disk full\n" -msgstr "" +msgstr "Disc ple\n" #: winerror.mc:216 msgid "Request not supported\n" -msgstr "" +msgstr "Sol·licitud no compatible\n" #: winerror.mc:221 msgid "Remote machine not listening\n" -msgstr "" +msgstr "Màquina remota no escoltant\n" #: winerror.mc:226 msgid "Duplicate network name\n" -msgstr "" +msgstr "Nom de xarxa duplicat\n" #: winerror.mc:231 msgid "Bad network path\n" -msgstr "" +msgstr "Ruta de xarxa dolenta\n" #: winerror.mc:236 msgid "Network busy\n" -msgstr "" +msgstr "Xarxa ocupada\n" #: winerror.mc:241 msgid "Device does not exist\n" -msgstr "" +msgstr "El dispositu no existeix\n" #: winerror.mc:246 msgid "Too many commands\n" -msgstr "" +msgstr "Massa ordres\n" #: winerror.mc:251 msgid "Adaptor hardware error\n" -msgstr "" +msgstr "Error de maquinari d'adaptador\n" #: winerror.mc:256 msgid "Bad network response\n" -msgstr "" +msgstr "Resposta de xarxa dolenta\n" #: winerror.mc:261 msgid "Unexpected network error\n" -msgstr "" +msgstr "Error de xarxa inesperat\n" #: winerror.mc:266 msgid "Bad remote adaptor\n" -msgstr "" +msgstr "Adaptador remot dolent\n" #: winerror.mc:271 msgid "Print queue full\n" -msgstr "" +msgstr "Cua d'impresió ple\n" #: winerror.mc:276 msgid "No spool space\n" -msgstr "" +msgstr "No hi ha espai de spool\n" #: winerror.mc:281 msgid "Print cancelled\n" -msgstr "" +msgstr "Impresió cancel·lat\n" #: winerror.mc:286 -#, fuzzy msgid "Network name deleted\n" -msgstr "&Suprimir" +msgstr "Nom de xarxa suprimit\n" #: winerror.mc:291 msgid "Network access denied\n" -msgstr "" +msgstr "Accés de xarxa denegat\n" #: winerror.mc:296 msgid "Bad device type\n" -msgstr "" +msgstr "Tipus de dispositiu dolent\n" #: winerror.mc:301 msgid "Bad network name\n" -msgstr "" +msgstr "Nom de xarxa dolent\n" #: winerror.mc:306 msgid "Too many network names\n" -msgstr "" +msgstr "Massa noms de xarxa\n" #: winerror.mc:311 msgid "Too many network sessions\n" -msgstr "" +msgstr "Massa sessions de xarxa\n" #: winerror.mc:316 msgid "Sharing paused\n" -msgstr "" +msgstr "Compartició pausada\n" #: winerror.mc:321 msgid "Request not accepted\n" -msgstr "" +msgstr "Sol·licitud no acceptada\n" #: winerror.mc:326 msgid "Redirector paused\n" -msgstr "" +msgstr "Redirector pausat\n" #: winerror.mc:331 msgid "File exists\n" -msgstr "" +msgstr "El fitxer existeix\n" #: winerror.mc:336 msgid "Cannot create\n" -msgstr "" +msgstr "No es pot crear\n" #: winerror.mc:341 msgid "Int24 failure\n" -msgstr "" +msgstr "Fallada d'Int24\n" #: winerror.mc:346 msgid "Out of structures\n" -msgstr "" +msgstr "No queden estructures\n" #: winerror.mc:351 msgid "Already assigned\n" -msgstr "" +msgstr "Ja assignat\n" #: winerror.mc:356 winerror.mc:1711 msgid "Invalid password\n" -msgstr "" +msgstr "Contrasenya invàlida\n" #: winerror.mc:361 msgid "Invalid parameter\n" -msgstr "" +msgstr "Paràmetre invàlid\n" #: winerror.mc:366 msgid "Net write fault\n" -msgstr "" +msgstr "Fallada d'escriptura de xarxa\n" #: winerror.mc:371 msgid "No process slots\n" -msgstr "" +msgstr "Cap ranura de procés\n" #: winerror.mc:376 msgid "Too many semaphores\n" -msgstr "" +msgstr "Massa semàfors\n" #: winerror.mc:381 msgid "Exclusive semaphore already owned\n" -msgstr "" +msgstr "Semàfor exclusiu ja posseït\n" #: winerror.mc:386 msgid "Semaphore is set\n" -msgstr "" +msgstr "El semàfor està establert\n" #: winerror.mc:391 msgid "Too many semaphore requests\n" -msgstr "" +msgstr "Massa sol·licituds de semàfor\n" #: winerror.mc:396 msgid "Invalid at interrupt time\n" -msgstr "" +msgstr "No vàlid en a l'hora d'interrupció\n" #: winerror.mc:401 msgid "Semaphore owner died\n" -msgstr "" +msgstr "El propietari de semàfor s'ha mort\n" #: winerror.mc:406 msgid "Semaphore user limit\n" -msgstr "" +msgstr "Límit d'usuaris de semàfor\n" #: winerror.mc:411 msgid "Insert disk for drive %1\n" -msgstr "" +msgstr "Introduïu disc en unitat %1\n" #: winerror.mc:416 msgid "Drive locked\n" -msgstr "" +msgstr "Unitat encadenat\n" #: winerror.mc:421 msgid "Broken pipe\n" -msgstr "" +msgstr "Canonada trencada\n" #: winerror.mc:426 msgid "Open failed\n" -msgstr "" +msgstr "L'obertura ha fallat\n" #: winerror.mc:431 msgid "Buffer overflow\n" -msgstr "" +msgstr "Desbordament de memòria intermèdia\n" #: winerror.mc:441 msgid "No more search handles\n" -msgstr "" +msgstr "No queden mànecs de cerca\n" #: winerror.mc:446 msgid "Invalid target handle\n" -msgstr "" +msgstr "Mànec de destinació invàlid\n" #: winerror.mc:451 msgid "Invalid IOCTL\n" -msgstr "" +msgstr "IOCTL invàlid\n" #: winerror.mc:456 msgid "Invalid verify switch\n" -msgstr "" +msgstr "Indicador de verificació invàlid\n" #: winerror.mc:461 msgid "Bad driver level\n" -msgstr "" +msgstr "Nivell de controlador dolent\n" #: winerror.mc:466 msgid "Call not implemented\n" -msgstr "" +msgstr "Trucada no implementada\n" #: winerror.mc:471 msgid "Semaphore timeout\n" -msgstr "" +msgstr "Temps d'espera de semàfor superat\n" #: winerror.mc:476 msgid "Insufficient buffer\n" -msgstr "" +msgstr "Memòria intermèdia insuficient\n" #: winerror.mc:481 msgid "Invalid name\n" -msgstr "" +msgstr "Nom invàlid\n" #: winerror.mc:486 msgid "Invalid level\n" -msgstr "" +msgstr "Nivell invàlid\n" #: winerror.mc:491 msgid "No volume label\n" -msgstr "" +msgstr "Cap etiqueta de volum\n" #: winerror.mc:496 msgid "Module not found\n" -msgstr "" +msgstr "Mòdul no trobat\n" #: winerror.mc:501 msgid "Procedure not found\n" -msgstr "" +msgstr "Procediment no trobat\n" #: winerror.mc:506 msgid "No children to wait for\n" -msgstr "" +msgstr "Cap fill per a esperar\n" #: winerror.mc:511 msgid "Child process has not completed\n" -msgstr "" +msgstr "Procés fill no s'ha acabat\n" #: winerror.mc:516 msgid "Invalid use of direct access handle\n" -msgstr "" +msgstr "Ús de mànec d'accés directe invàlid\n" #: winerror.mc:521 msgid "Negative seek\n" -msgstr "" +msgstr "Cerca negativa\n" #: winerror.mc:531 msgid "Drive is a JOIN target\n" -msgstr "" +msgstr "Unitat es una destinació JOIN\n" #: winerror.mc:536 msgid "Drive is already JOINed\n" -msgstr "" +msgstr "Ja s'ha fet JOIN en la unitat\n" #: winerror.mc:541 msgid "Drive is already SUBSTed\n" -msgstr "" +msgstr "Ja s'ha fet SUBST en la unitat\n" #: winerror.mc:546 msgid "Drive is not JOINed\n" -msgstr "" +msgstr "No s'ha fet JOIN en la unitat\n" #: winerror.mc:551 msgid "Drive is not SUBSTed\n" -msgstr "" +msgstr "No s'ha fet SUBST en la unitat\n" #: winerror.mc:556 msgid "Attempt to JOIN onto a JOINed drive\n" -msgstr "" +msgstr "Intent de fer JOIN damunt una unitat en que ja s'ha fet JOIN\n" #: winerror.mc:561 msgid "Attempt to SUBST onto a SUBSTed drive\n" -msgstr "" +msgstr "Intent de fer SUBST damunt una unitat en que ja s'ha fet SUBST\n" #: winerror.mc:566 msgid "Attempt to JOIN to a SUBSTed drive\n" -msgstr "" +msgstr "Intent de fer JOIN damunt una unitat en que ja s'ha fet SUBST\n" #: winerror.mc:571 msgid "Attempt to SUBST to a JOINed drive\n" -msgstr "" +msgstr "Intent de fer SUBST damunt una unitat en que ja s'ha fet JOIN\n" #: winerror.mc:576 msgid "Drive is busy\n" -msgstr "" +msgstr "La unitat està ocupada\n" #: winerror.mc:581 msgid "Same drive\n" -msgstr "" +msgstr "És la mateixa unitat\n" #: winerror.mc:586 msgid "Not toplevel directory\n" -msgstr "" +msgstr "No és un directori superior\n" #: winerror.mc:591 msgid "Directory is not empty\n" -msgstr "" +msgstr "El directori no està buit\n" #: winerror.mc:596 msgid "Path is in use as a SUBST\n" -msgstr "" +msgstr "La ruta està en ús com un SUBST\n" #: winerror.mc:601 msgid "Path is in use as a JOIN\n" -msgstr "" +msgstr "La ruta està en ús com un JOIN\n" #: winerror.mc:606 msgid "Path is busy\n" -msgstr "" +msgstr "La ruta està ocupada\n" #: winerror.mc:611 msgid "Already a SUBST target\n" -msgstr "" +msgstr "Ja és una destinació SUBST\n" #: winerror.mc:616 msgid "System trace not specified or disallowed\n" -msgstr "" +msgstr "Seguiment de sistema no especificat o no permès\n" #: winerror.mc:621 msgid "Event count for DosMuxSemWait incorrect\n" -msgstr "" +msgstr "Nombre d'esdeveniments de DosMuxSemWait incorrecte\n" #: winerror.mc:626 msgid "Too many waiters for DosMuxSemWait\n" -msgstr "" +msgstr "Massa esperançats per a DosMuxSemWait\n" #: winerror.mc:631 msgid "DosSemMuxWait list invalid\n" -msgstr "" +msgstr "Llista de DosSemMuxWait invàlid\n" #: winerror.mc:636 msgid "Volume label too long\n" -msgstr "" +msgstr "Etiqueta de volum massa llarg\n" #: winerror.mc:641 msgid "Too many TCBs\n" -msgstr "" +msgstr "Massa TCB\n" #: winerror.mc:646 msgid "Signal refused\n" -msgstr "" +msgstr "Senyal negat\n" #: winerror.mc:651 msgid "Segment discarded\n" -msgstr "" +msgstr "Segment descartat\n" #: winerror.mc:656 msgid "Segment not locked\n" -msgstr "" +msgstr "Segment no encadenat\n" #: winerror.mc:661 msgid "Bad thread ID address\n" -msgstr "" +msgstr "Adreça d'ID de fil dolent\n" #: winerror.mc:666 msgid "Bad arguments to DosExecPgm\n" -msgstr "" +msgstr "Paràmetres dolents a DosExecPgm\n" #: winerror.mc:671 msgid "Path is invalid\n" -msgstr "" +msgstr "La ruta es invàlida\n" #: winerror.mc:676 msgid "Signal pending\n" -msgstr "" +msgstr "Senyal pendent\n" #: winerror.mc:681 msgid "Max system-wide thread count reached\n" -msgstr "" +msgstr "Nombre màxim de fils de sistema aconseguit\n" #: winerror.mc:686 msgid "Lock failed\n" -msgstr "" +msgstr "El cadenat ha fallat\n" #: winerror.mc:691 msgid "Resource in use\n" -msgstr "" +msgstr "Recurs en ús\n" #: winerror.mc:696 msgid "Cancel violation\n" -msgstr "" +msgstr "Violació de cancel·lació\n" #: winerror.mc:701 msgid "Atomic locks not supported\n" -msgstr "" +msgstr "No es accepten els cadenats atòmics\n" #: winerror.mc:706 msgid "Invalid segment number\n" -msgstr "" +msgstr "Nombre de segment invàlid\n" #: winerror.mc:711 msgid "Invalid ordinal for %1\n" -msgstr "" +msgstr "Ordinal invàlid per a %1\n" #: winerror.mc:716 msgid "File already exists\n" -msgstr "" +msgstr "Fitxer ja existeix\n" #: winerror.mc:721 msgid "Invalid flag number\n" -msgstr "" +msgstr "Nombre de bandera invàlida\n" #: winerror.mc:726 msgid "Semaphore name not found\n" -msgstr "" +msgstr "Nom de semàfor no trobat\n" #: winerror.mc:731 msgid "Invalid starting code segment for %1\n" -msgstr "" +msgstr "Segment de codi d'inici invàlid per a %1\n" #: winerror.mc:736 msgid "Invalid starting stack segment for %1\n" -msgstr "" +msgstr "Segment de codi d'inici de pila invàlid per a %1\n" #: winerror.mc:741 msgid "Invalid module type for %1\n" -msgstr "" +msgstr "Tipus de mòdul invàlid per a %1\n" #: winerror.mc:746 msgid "Invalid EXE signature in %1\n" -msgstr "" +msgstr "Signatura EXE invàlid en %1\n" #: winerror.mc:751 msgid "EXE %1 is marked invalid\n" -msgstr "" +msgstr "El EXE %1 està marcat invàlid\n" #: winerror.mc:756 msgid "Bad EXE format for %1\n" -msgstr "" +msgstr "Format EXE dolent per a %1\n" #: winerror.mc:761 msgid "Iterated data exceeds 64k in %1\n" -msgstr "" +msgstr "Dades iterades superen els 64k in %1\n" #: winerror.mc:766 msgid "Invalid MinAllocSize in %1\n" -msgstr "" +msgstr "MinAllocSize invàlid in %1\n" #: winerror.mc:771 msgid "Dynlink from invalid ring\n" -msgstr "" +msgstr "Enllaç dinàmic d'anell invàlid\n" #: winerror.mc:776 msgid "IOPL not enabled\n" -msgstr "" +msgstr "IOPL no habilitat\n" #: winerror.mc:781 msgid "Invalid SEGDPL in %1\n" -msgstr "" +msgstr "SEGDPL invàlid en %1\n" #: winerror.mc:786 msgid "Auto data segment exceeds 64k\n" -msgstr "" +msgstr "Segment de dades automàtic supera els 64k\n" #: winerror.mc:791 msgid "Ring 2 segment must be movable\n" -msgstr "" +msgstr "Segment de l'anell 2 ha de ser mòbil\n" #: winerror.mc:796 msgid "Relocation chain exceeds segment limit in %1\n" -msgstr "" +msgstr "Cadena de trasllat supera el límit de segment in %1\n" #: winerror.mc:801 msgid "Infinite loop in relocation chain in %1\n" -msgstr "" +msgstr "Bucle infinit en la cadena de reubicació %1\n" #: winerror.mc:806 msgid "Environment variable not found\n" -msgstr "" +msgstr "Variable d'entorn no es troba\n" #: winerror.mc:811 msgid "No signal sent\n" -msgstr "" +msgstr "Cap senyal enviat\n" #: winerror.mc:816 msgid "File name is too long\n" -msgstr "" +msgstr "Nom de fitxer és massa llarg\n" #: winerror.mc:821 msgid "Ring 2 stack in use\n" -msgstr "" +msgstr "Pila d'anell 2 en ús\n" #: winerror.mc:826 msgid "Error in use of filename wildcards\n" -msgstr "" +msgstr "Error en l'ús de comodins de nom de fitxer\n" #: winerror.mc:831 msgid "Invalid signal number\n" -msgstr "" +msgstr "Nombre de senyal invàlid\n" #: winerror.mc:836 msgid "Error setting signal handler\n" -msgstr "" +msgstr "Error establint manejador de senyals\n" #: winerror.mc:841 msgid "Segment locked\n" -msgstr "" +msgstr "Segment encadenat\n" #: winerror.mc:846 msgid "Too many modules\n" -msgstr "" +msgstr "Massa mòduls\n" #: winerror.mc:851 msgid "Nesting LoadModule calls not allowed\n" -msgstr "" +msgstr "No es permet l'anidament de trucades\n" #: winerror.mc:856 msgid "Machine type mismatch\n" -msgstr "" +msgstr "Diferència en tipus de màquina\n" #: winerror.mc:861 msgid "Bad pipe\n" -msgstr "" +msgstr "Canonada dolenta\n" #: winerror.mc:866 msgid "Pipe busy\n" -msgstr "" +msgstr "Canonada ocupada\n" #: winerror.mc:871 msgid "Pipe closed\n" -msgstr "" +msgstr "Canonada trucada\n" #: winerror.mc:876 msgid "Pipe not connected\n" -msgstr "" +msgstr "Canonada no connectada\n" #: winerror.mc:881 msgid "More data available\n" -msgstr "" +msgstr "Més dades disponibles\n" #: winerror.mc:886 msgid "Session cancelled\n" -msgstr "" +msgstr "Sessió cancel·lat\n" #: winerror.mc:891 msgid "Invalid extended attribute name\n" -msgstr "" +msgstr "Nom d'atribut estès invàlid\n" #: winerror.mc:896 msgid "Extended attribute list inconsistent\n" -msgstr "" +msgstr "Llista d'atributs estès inconsistent\n" #: winerror.mc:901 msgid "No more data available\n" -msgstr "" +msgstr "No hi ha més dades disponibles\n" #: winerror.mc:906 msgid "Cannot use Copy API\n" -msgstr "" +msgstr "No es pot usar la Copy API\n" #: winerror.mc:911 msgid "Directory name invalid\n" -msgstr "" +msgstr "Nom de directori invàlid\n" #: winerror.mc:916 msgid "Extended attributes didn't fit\n" -msgstr "" +msgstr "Els atributs estesos no han cabut\n" #: winerror.mc:921 msgid "Extended attribute file corrupt\n" -msgstr "" +msgstr "Fitxer d'atributs estesos corrupt\n" #: winerror.mc:926 msgid "Extended attribute table full\n" -msgstr "" +msgstr "Taula d'atributs estensos ple\n" #: winerror.mc:931 msgid "Invalid extended attribute handle\n" -msgstr "" +msgstr "Mànec d'atribut extès invàlid\n" #: winerror.mc:936 msgid "Extended attributes not supported\n" -msgstr "" +msgstr "No s'accepten atributs extensos\n" #: winerror.mc:941 msgid "Mutex not owned by caller\n" -msgstr "" +msgstr "Mutex no perté al trucador\n" #: winerror.mc:946 msgid "Too many posts to semaphore\n" -msgstr "" +msgstr "Massa missatges al semàfor\n" #: winerror.mc:951 msgid "Read/WriteProcessMemory partially completed\n" -msgstr "" +msgstr "Read/WriteProcessMemory parcialment acabats\n" #: winerror.mc:956 msgid "The oplock wasn't granted\n" -msgstr "" +msgstr "No s'ha concedit el cadenat d'operació.\n" #: winerror.mc:961 msgid "Invalid oplock message received\n" -msgstr "" +msgstr "Missatge invàlid rebut de cadenat d'operació\n" #: winerror.mc:966 msgid "Message 0x%1 not found in file %2\n" -msgstr "" +msgstr "No s'ha trobat el missatge 0x%1 en el fitxer %2\n" #: winerror.mc:971 msgid "Invalid address\n" -msgstr "" +msgstr "Adreça invàlida\n" #: winerror.mc:976 msgid "Arithmetic overflow\n" -msgstr "" +msgstr "Desbordament aritmètic\n" #: winerror.mc:981 msgid "Pipe connected\n" -msgstr "" +msgstr "Canonada connectada\n" #: winerror.mc:986 msgid "Pipe listening\n" -msgstr "" +msgstr "Canonada escoltant\n" #: winerror.mc:991 msgid "Extended attribute access denied\n" -msgstr "" +msgstr "Accés als atributs estesos denegat\n" #: winerror.mc:996 msgid "I/O operation aborted\n" -msgstr "" +msgstr "Operación E/S avortada\n" #: winerror.mc:1001 msgid "Overlapped I/O incomplete\n" -msgstr "" +msgstr "E/S superposada incompleta\n" #: winerror.mc:1006 msgid "Overlapped I/O pending\n" -msgstr "" +msgstr "E/S superposada pendent\n" #: winerror.mc:1011 msgid "No access to memory location\n" -msgstr "" +msgstr "Cap accés a la ubicació de memòria\n" #: winerror.mc:1016 msgid "Swap error\n" -msgstr "" +msgstr "Error d'intercanvi\n" #: winerror.mc:1021 msgid "Stack overflow\n" -msgstr "" +msgstr "Desbordament de pila\n" #: winerror.mc:1026 msgid "Invalid message\n" -msgstr "" +msgstr "Missatge invàlid\n" #: winerror.mc:1031 msgid "Cannot complete\n" -msgstr "" +msgstr "No es pot completar\n" #: winerror.mc:1036 msgid "Invalid flags\n" -msgstr "" +msgstr "Banderes invàlides\n" #: winerror.mc:1041 msgid "Unrecognised volume\n" -msgstr "" +msgstr "Volum no reconegut\n" #: winerror.mc:1046 msgid "File invalid\n" -msgstr "" +msgstr "Fitxer invàlid\n" #: winerror.mc:1051 msgid "Cannot run full-screen\n" -msgstr "" +msgstr "No es pot executar a pantalla completa\n" #: winerror.mc:1056 msgid "Nonexistent token\n" -msgstr "" +msgstr "Componente lèxic inexistent\n" #: winerror.mc:1061 msgid "Registry corrupt\n" -msgstr "" +msgstr "Registre corrupte\n" #: winerror.mc:1066 msgid "Invalid key\n" -msgstr "" +msgstr "Clau invàlida\n" #: winerror.mc:1071 msgid "Can't open registry key\n" -msgstr "" +msgstr "No es pot obrir la clau de registre\n" #: winerror.mc:1076 msgid "Can't read registry key\n" -msgstr "" +msgstr "No es pot llegir la clau de registre\n" #: winerror.mc:1081 msgid "Can't write registry key\n" -msgstr "" +msgstr "No es pot escriure la clau de registre\n" #: winerror.mc:1086 msgid "Registry has been recovered\n" -msgstr "" +msgstr "S'ha recuperat el registre\n" #: winerror.mc:1091 msgid "Registry is corrupt\n" -msgstr "" +msgstr "Registre està corrupte\n" #: winerror.mc:1096 msgid "I/O to registry failed\n" -msgstr "" +msgstr "Ha fallat la E/S al registre\n" #: winerror.mc:1101 msgid "Not registry file\n" -msgstr "" +msgstr "No es fitxer de registre\n" #: winerror.mc:1106 -#, fuzzy msgid "Key deleted\n" -msgstr "&Suprimir" +msgstr "Clau suprimida\n" #: winerror.mc:1111 msgid "No registry log space\n" -msgstr "" +msgstr "No hi ha espai de log de registre\n" #: winerror.mc:1116 msgid "Registry key has subkeys\n" -msgstr "" +msgstr "La clau de registre té subclaus\n" #: winerror.mc:1121 msgid "Subkey must be volatile\n" -msgstr "" +msgstr "La subclau ha de ser volàtil\n" #: winerror.mc:1126 msgid "Notify change request in progress\n" -msgstr "" +msgstr "Sol·licitud de canvi de notificació en curs\n" #: winerror.mc:1131 msgid "Dependent services are running\n" -msgstr "" +msgstr "Serveis dependents s'estan executant\n" #: winerror.mc:1136 msgid "Invalid service control\n" -msgstr "" +msgstr "Control de servei invàlid\n" #: winerror.mc:1141 msgid "Service request timeout\n" -msgstr "" +msgstr "Temps d'espera de sol·licitud de servei superat\n" #: winerror.mc:1146 msgid "Cannot create service thread\n" -msgstr "" +msgstr "No es pot crear fil de servei\n" #: winerror.mc:1151 msgid "Service database locked\n" -msgstr "" +msgstr "Base de dades de servei encadenat\n" #: winerror.mc:1156 msgid "Service already running\n" -msgstr "" +msgstr "El servei ja està executant\n" #: winerror.mc:1161 msgid "Invalid service account\n" -msgstr "" +msgstr "Compte de servei invàlid\n" #: winerror.mc:1166 msgid "Service is disabled\n" -msgstr "" +msgstr "El servei està deshabilitat\n" #: winerror.mc:1171 msgid "Circular dependency\n" -msgstr "" +msgstr "Dependència circular\n" #: winerror.mc:1176 msgid "Service does not exist\n" -msgstr "" +msgstr "El servei no existeix\n" #: winerror.mc:1181 msgid "Service cannot accept control message\n" -msgstr "" +msgstr "El servei no pot acceptar el missatge de control\n" #: winerror.mc:1186 msgid "Service not active\n" -msgstr "" +msgstr "El servei no està actiu\n" #: winerror.mc:1191 msgid "Service controller connect failed\n" -msgstr "" +msgstr "La connexió de controlador de servei ha fallat\n" #: winerror.mc:1196 msgid "Exception in service\n" -msgstr "" +msgstr "Excepció en servei\n" #: winerror.mc:1201 msgid "Database does not exist\n" -msgstr "" +msgstr "El base de dades no existeix\n" #: winerror.mc:1206 msgid "Service-specific error\n" -msgstr "" +msgstr "Error específic al servei\n" #: winerror.mc:1211 msgid "Process aborted\n" -msgstr "" +msgstr "Procés avortat\n" #: winerror.mc:1216 msgid "Service dependency failed\n" -msgstr "" +msgstr "Una dependència de servei ha fallat\n" #: winerror.mc:1221 msgid "Service login failed\n" -msgstr "" +msgstr "L'inici de sessió ha fallat\n" #: winerror.mc:1226 msgid "Service start-hang\n" -msgstr "" +msgstr "Congelació d'inici de servei\n" #: winerror.mc:1231 msgid "Invalid service lock\n" -msgstr "" +msgstr "Cadenat de servei invàlid\n" #: winerror.mc:1236 msgid "Service marked for delete\n" -msgstr "" +msgstr "Servei marcat per a suprimir\n" #: winerror.mc:1241 msgid "Service exists\n" -msgstr "" +msgstr "Servei existeix\n" #: winerror.mc:1246 msgid "System running last-known-good config\n" -msgstr "" +msgstr "El sistema està executant l'última configuració bona coneguda\n" #: winerror.mc:1251 msgid "Service dependency deleted\n" -msgstr "" +msgstr "Dependència de serveis suprimida\n" #: winerror.mc:1256 msgid "Boot already accepted as last-good config\n" -msgstr "" +msgstr "Arrencada ja acceptada com última configuració bona\n" #: winerror.mc:1261 msgid "Service not started since last boot\n" -msgstr "" +msgstr "Servei no iniciat des de l'última arrencada\n" #: winerror.mc:1266 msgid "Duplicate service name\n" -msgstr "" +msgstr "Nom del servei duplicat\n" #: winerror.mc:1271 msgid "Different service account\n" -msgstr "" +msgstr "Compte de servei diferent\n" #: winerror.mc:1276 msgid "Driver failure cannot be detected\n" -msgstr "" +msgstr "No es pot detectar la fallada del controlador\n" #: winerror.mc:1281 msgid "Process abort cannot be detected\n" -msgstr "" +msgstr "No es pot detectatar avortament de procés\n" #: winerror.mc:1286 msgid "No recovery program for service\n" -msgstr "" +msgstr "Cap programa de recuperació per al servei\n" #: winerror.mc:1291 msgid "Service not implemented by exe\n" -msgstr "" +msgstr "Servei no implementat per exe\n" #: winerror.mc:1296 msgid "End of media\n" -msgstr "" +msgstr "Fi de mitjà\n" #: winerror.mc:1301 msgid "Filemark detected\n" -msgstr "" +msgstr "Marca de fitxer detectada\n" #: winerror.mc:1306 msgid "Beginning of media\n" -msgstr "" +msgstr "Començament de mitjà\n" #: winerror.mc:1311 msgid "Setmark detected\n" -msgstr "" +msgstr "Marca de conjunt detectada\n" #: winerror.mc:1316 msgid "No data detected\n" -msgstr "" +msgstr "No s'ha detectat dades\n" #: winerror.mc:1321 msgid "Partition failure\n" -msgstr "" +msgstr "Fallada de partició\n" #: winerror.mc:1326 msgid "Invalid block length\n" -msgstr "" +msgstr "Longitud de bloc invàlid\n" #: winerror.mc:1331 msgid "Device not partitioned\n" -msgstr "" +msgstr "Dispositiu no particionat\n" #: winerror.mc:1336 msgid "Unable to lock media\n" -msgstr "" +msgstr "No es pot encadenar la mitjà\n" #: winerror.mc:1341 msgid "Unable to unload media\n" -msgstr "" +msgstr "No es pot descarregar la mitjà\n" #: winerror.mc:1346 msgid "Media changed\n" -msgstr "" +msgstr "Mitjà canviada\n" #: winerror.mc:1351 msgid "I/O bus reset\n" -msgstr "" +msgstr "Bus E/S reiniciat\n" #: winerror.mc:1356 msgid "No media in drive\n" -msgstr "" +msgstr "Cap mitjà en unitat\n" #: winerror.mc:1361 msgid "No Unicode translation\n" -msgstr "" +msgstr "Cap traducció Unicode\n" #: winerror.mc:1366 msgid "DLL init failed\n" -msgstr "" +msgstr "L'inici DLL ha fallat\n" #: winerror.mc:1371 msgid "Shutdown in progress\n" -msgstr "" +msgstr "Aturada en curs\n" #: winerror.mc:1376 msgid "No shutdown in progress\n" -msgstr "" +msgstr "Cap aturada en curs\n" #: winerror.mc:1381 msgid "I/O device error\n" -msgstr "" +msgstr "Error de dispositiu E/S\n" #: winerror.mc:1386 msgid "No serial devices found\n" -msgstr "" +msgstr "Cap dispositiu sèrie trobat\n" #: winerror.mc:1391 msgid "Shared IRQ busy\n" -msgstr "" +msgstr "IRQ compartida ocupada\n" #: winerror.mc:1396 msgid "Serial I/O completed\n" -msgstr "" +msgstr "E/S sèrie completada\n" #: winerror.mc:1401 msgid "Serial I/O counter timeout\n" -msgstr "" +msgstr "Temps d'espera de sol·licitud de servei superat\n" #: winerror.mc:1406 msgid "Floppy ID address mark not found\n" -msgstr "" +msgstr "Marca de direcció d'ID de disquet no trobada\n" #: winerror.mc:1411 msgid "Floppy reports wrong cylinder\n" -msgstr "" +msgstr "El disquet informa de cilindre equivocat\n" #: winerror.mc:1416 msgid "Unknown floppy error\n" -msgstr "" +msgstr "Error de disquet desconegut\n" #: winerror.mc:1421 msgid "Floppy registers inconsistent\n" -msgstr "" +msgstr "Registres de disquet inconsistents\n" #: winerror.mc:1426 msgid "Hard disk recalibrate failed\n" -msgstr "" +msgstr "La recalibració del disc dur ha fallat\n" #: winerror.mc:1431 msgid "Hard disk operation failed\n" -msgstr "" +msgstr "L'operació de disc dur ha fallat\n" #: winerror.mc:1436 msgid "Hard disk reset failed\n" -msgstr "" +msgstr "La reinicialització del disc dur ha fallat\n" #: winerror.mc:1441 msgid "End of tape media\n" -msgstr "" +msgstr "Fi de mitjà de cinta\n" #: winerror.mc:1446 msgid "Not enough server memory\n" -msgstr "" +msgstr "No n'hi ha prou memòria en el servidor\n" #: winerror.mc:1451 msgid "Possible deadlock\n" -msgstr "" +msgstr "Abraçada mortal possible\n" #: winerror.mc:1456 msgid "Incorrect alignment\n" -msgstr "" +msgstr "Alineació incorrecta\n" #: winerror.mc:1461 msgid "Set-power-state vetoed\n" -msgstr "" +msgstr "Ajust d'estat de potència vetat\n" #: winerror.mc:1466 msgid "Set-power-state failed\n" -msgstr "" +msgstr "L'ajust d'estat de potència ha fallat\n" #: winerror.mc:1471 msgid "Too many links\n" -msgstr "" +msgstr "Massa enllaços\n" #: winerror.mc:1476 msgid "Newer windows version needed\n" -msgstr "" +msgstr "Cal una versió de Windows més nou\n" #: winerror.mc:1481 msgid "Wrong operating system\n" -msgstr "" +msgstr "Sistema operatiu incorrecte\n" #: winerror.mc:1486 msgid "Single-instance application\n" -msgstr "" +msgstr "Aplicació d'instància única\n" #: winerror.mc:1491 msgid "Real-mode application\n" -msgstr "" +msgstr "Aplicació de mode real\n" #: winerror.mc:1496 msgid "Invalid DLL\n" -msgstr "" +msgstr "DLL Invàlid\n" #: winerror.mc:1501 msgid "No associated application\n" -msgstr "" +msgstr "Cap aplicació associada\n" #: winerror.mc:1506 msgid "DDE failure\n" -msgstr "" +msgstr "Fallada de DDE\n" #: winerror.mc:1511 msgid "DLL not found\n" -msgstr "" +msgstr "DLL no trobada\n" #: winerror.mc:1516 msgid "Out of user handles\n" -msgstr "" +msgstr "No queden mànecs d'usuari\n" #: winerror.mc:1521 msgid "Message can only be used in synchronous calls\n" -msgstr "" +msgstr "El missatge només pot usar-se en les trucades sincròniques\n" #: winerror.mc:1526 msgid "The source element is empty\n" -msgstr "" +msgstr "L'element d'origen està buida\n" #: winerror.mc:1531 msgid "The destination element is full\n" -msgstr "" +msgstr "L'element destinatari està ple\n" #: winerror.mc:1536 msgid "The element address is invalid\n" -msgstr "" +msgstr "L'adreça d'element és invàlida\n" #: winerror.mc:1541 msgid "The magazine is not present\n" -msgstr "" +msgstr "El magazine no està present\n" #: winerror.mc:1546 msgid "The device needs reinitialization\n" -msgstr "" +msgstr "El dispositiu necessita reinicialització\n" #: winerror.mc:1551 msgid "The device requires cleaning\n" -msgstr "" +msgstr "El dispositiu requereix una neteja\n" #: winerror.mc:1556 msgid "The device door is open\n" -msgstr "" +msgstr "La porta de dispositiu està obert\n" #: winerror.mc:1561 msgid "The device is not connected\n" -msgstr "" +msgstr "El dispositiu no està connectat\n" #: winerror.mc:1566 msgid "Element not found\n" -msgstr "" +msgstr "Element no trobat\n" #: winerror.mc:1571 msgid "No match found\n" -msgstr "" +msgstr "Cap coincidència trobada\n" #: winerror.mc:1576 msgid "Property set not found\n" -msgstr "" +msgstr "Conjunt de propietats no trobat\n" #: winerror.mc:1581 msgid "Point not found\n" -msgstr "" +msgstr "Punt no trobat\n" #: winerror.mc:1586 msgid "No running tracking service\n" -msgstr "" +msgstr "Cap servei de rastreig executant\n" #: winerror.mc:1591 msgid "No such volume ID\n" -msgstr "" +msgstr "Cap ID de volum així\n" #: winerror.mc:1596 msgid "Unable to remove the file to be replaced\n" -msgstr "" +msgstr "No es pot eliminar el fitxer per a substituir\n" #: winerror.mc:1601 msgid "Unable to move the replacement file into place\n" -msgstr "" +msgstr "No es pot moure el fitxer de recanvi al seu lloc\n" #: winerror.mc:1606 msgid "Moving the replacement file failed\n" -msgstr "" +msgstr "El moviment del fitxer de substitució ha fallat\n" #: winerror.mc:1611 -#, fuzzy msgid "The journal is being deleted\n" -msgstr "&Suprimir" +msgstr "El journal s'està suprimint\n" #: winerror.mc:1616 msgid "The journal is not active\n" -msgstr "" +msgstr "El journal no està actiu\n" #: winerror.mc:1621 msgid "Potential matching file found\n" -msgstr "" +msgstr "Fitxer coincident potencial trobat\n" #: winerror.mc:1626 msgid "The journal entry was deleted\n" -msgstr "" +msgstr "L'entrada de journal s'ha suprimit\n" #: winerror.mc:1631 msgid "Invalid device name\n" -msgstr "" +msgstr "Nom de dispositu invàlid\n" #: winerror.mc:1636 msgid "Connection unavailable\n" -msgstr "" +msgstr "Connexió no disponible\n" #: winerror.mc:1641 msgid "Device already remembered\n" -msgstr "" +msgstr "Dispositiu ja recordat\n" #: winerror.mc:1646 msgid "No network or bad path\n" -msgstr "" +msgstr "Cap xarxa o ruta dolenta\n" #: winerror.mc:1651 msgid "Invalid network provider name\n" -msgstr "" +msgstr "Nom invàlid de proveïdor de xarxa\n" #: winerror.mc:1656 msgid "Cannot open network connection profile\n" -msgstr "" +msgstr "No es pot obrir el perfil de connexió de xarxa\n" #: winerror.mc:1661 msgid "Corrupt network connection profile\n" -msgstr "" +msgstr "Perfil de connexió de xarxa corrupta\n" #: winerror.mc:1666 msgid "Not a container\n" -msgstr "" +msgstr "No és un contenidor\n" #: winerror.mc:1671 msgid "Extended error\n" -msgstr "" +msgstr "Error estès\n" #: winerror.mc:1676 msgid "Invalid group name\n" -msgstr "" +msgstr "Nom del grup invàlid\n" #: winerror.mc:1681 msgid "Invalid computer name\n" -msgstr "" +msgstr "Nom d'ordinador invàlid\n" #: winerror.mc:1686 msgid "Invalid event name\n" -msgstr "" +msgstr "Nom d'esdeveniment invàlid\n" #: winerror.mc:1691 msgid "Invalid domain name\n" -msgstr "" +msgstr "Nom de domini invàlid\n" #: winerror.mc:1696 msgid "Invalid service name\n" -msgstr "" +msgstr "Nom de servei invàlid\n" #: winerror.mc:1701 msgid "Invalid network name\n" -msgstr "" +msgstr "Nom de xarxa invàlid\n" #: winerror.mc:1706 msgid "Invalid share name\n" -msgstr "" +msgstr "Nom de compartició invàlid\n" #: winerror.mc:1716 msgid "Invalid message name\n" -msgstr "" +msgstr "Nom de missatge invàlid\n" #: winerror.mc:1721 msgid "Invalid message destination\n" -msgstr "" +msgstr "Destinació de missatge invàlida\n" #: winerror.mc:1726 msgid "Session credential conflict\n" -msgstr "" +msgstr "Conflicte de credencials de sessió\n" #: winerror.mc:1731 msgid "Remote session limit exceeded\n" -msgstr "" +msgstr "Límit de sessions remots superat\n" #: winerror.mc:1736 msgid "Duplicate domain or workgroup name\n" -msgstr "" +msgstr "Nom de domini o grup de treball duplicat\n" #: winerror.mc:1741 msgid "No network\n" -msgstr "" +msgstr "Cap xarxa\n" #: winerror.mc:1746 msgid "Operation cancelled by user\n" -msgstr "" +msgstr "Operació cancel·lat per l'usuari\n" #: winerror.mc:1751 msgid "File has a user-mapped section\n" -msgstr "" +msgstr "El fitxer té una secció assignada per l'usuari\n" #: winerror.mc:1756 winerror.mc:3741 msgid "Connection refused\n" -msgstr "" +msgstr "Connexió refusada\n" #: winerror.mc:1761 msgid "Connection gracefully closed\n" -msgstr "" +msgstr "Connexió tancat amb gràcia\n" #: winerror.mc:1766 msgid "Address already associated with transport endpoint\n" -msgstr "" +msgstr "Direcció ja associada amb el punt final de transport\n" #: winerror.mc:1771 msgid "Address not associated with transport endpoint\n" -msgstr "" +msgstr "Direcció no associada amb el punt final de transport\n" #: winerror.mc:1776 msgid "Connection invalid\n" -msgstr "" +msgstr "Connexió invàlid\n" #: winerror.mc:1781 msgid "Connection is active\n" -msgstr "" +msgstr "La connexió està activa\n" #: winerror.mc:1786 msgid "Network unreachable\n" -msgstr "" +msgstr "Xarxa inabastable\n" #: winerror.mc:1791 msgid "Host unreachable\n" -msgstr "" +msgstr "Equip inabastable\n" #: winerror.mc:1796 msgid "Protocol unreachable\n" -msgstr "" +msgstr "Protocol inabastable\n" #: winerror.mc:1801 msgid "Port unreachable\n" -msgstr "" +msgstr "Port inabastable\n" #: winerror.mc:1806 msgid "Request aborted\n" -msgstr "" +msgstr "Sol·licitud avortada\n" #: winerror.mc:1811 msgid "Connection aborted\n" -msgstr "" +msgstr "Connexió avortada\n" #: winerror.mc:1816 msgid "Please retry operation\n" -msgstr "" +msgstr "Si us plau, torneu a intentar l'operació\n" #: winerror.mc:1821 msgid "Connection count limit reached\n" -msgstr "" +msgstr "Límit de nombre de connexions assolit\n" #: winerror.mc:1826 msgid "Login time restriction\n" -msgstr "" +msgstr "Restricció de temps de sessió\n" #: winerror.mc:1831 msgid "Login workstation restriction\n" -msgstr "" +msgstr "Restricció d'estació de treball de sessió\n" #: winerror.mc:1836 msgid "Incorrect network address\n" -msgstr "" +msgstr "Adreça de xarxa incorrecta\n" #: winerror.mc:1841 msgid "Service already registered\n" -msgstr "" +msgstr "Servei ja registrat\n" #: winerror.mc:1846 msgid "Service not found\n" -msgstr "" +msgstr "Servei no trobat\n" #: winerror.mc:1851 msgid "User not authenticated\n" -msgstr "" +msgstr "Usuari no autenticat\n" #: winerror.mc:1856 msgid "User not logged on\n" -msgstr "" +msgstr "Usuari no està\n" #: winerror.mc:1861 msgid "Continue work in progress\n" -msgstr "" +msgstr "Continua treball en curs\n" #: winerror.mc:1866 msgid "Already initialised\n" -msgstr "" +msgstr "Ja inicialitzat\n" #: winerror.mc:1871 msgid "No more local devices\n" -msgstr "" +msgstr "No hi ha més dispositius locals\n" #: winerror.mc:1876 msgid "The site does not exist\n" -msgstr "" +msgstr "El lloc no existeix\n" #: winerror.mc:1881 msgid "The domain controller already exists\n" -msgstr "" +msgstr "El controlador de domini ja existeix\n" #: winerror.mc:1886 msgid "Supported only when connected\n" -msgstr "" +msgstr "Només s'admet quan es connecta\n" #: winerror.mc:1891 msgid "Perform operation even when nothing changed\n" -msgstr "" +msgstr "Realitza operació tot i que no ha cambiat res\n" #: winerror.mc:1896 msgid "The user profile is invalid\n" -msgstr "" +msgstr "El perfil d'usuari és invàlid\n" #: winerror.mc:1901 msgid "Not supported on Small Business Server\n" -msgstr "" +msgstr "No compatible am el Small Business Server\n" #: winerror.mc:1906 msgid "Not all privileges assigned\n" -msgstr "" +msgstr "No tots els privilegis estàn assignats\n" #: winerror.mc:1911 msgid "Some security IDs not mapped\n" -msgstr "" +msgstr "Alguns IDs de seguretat no assigats\n" #: winerror.mc:1916 msgid "No quotas for account\n" -msgstr "" +msgstr "Cap quota per al compte\n" #: winerror.mc:1921 msgid "Local user session key\n" -msgstr "" +msgstr "Clau de sessió d'usuari local\n" #: winerror.mc:1926 msgid "Password too complex for LM\n" -msgstr "" +msgstr "Contrasenya massa complex per LM\n" #: winerror.mc:1931 msgid "Unknown revision\n" -msgstr "" +msgstr "Revisió desconegut\n" #: winerror.mc:1936 msgid "Incompatible revision levels\n" -msgstr "" +msgstr "Nivells de revisió incompatibles\n" #: winerror.mc:1941 msgid "Invalid owner\n" -msgstr "" +msgstr "Propietari invàlid\n" #: winerror.mc:1946 msgid "Invalid primary group\n" -msgstr "" +msgstr "Grup primari invàlid\n" #: winerror.mc:1951 msgid "No impersonation token\n" -msgstr "" +msgstr "Cap token de suplantació\n" #: winerror.mc:1956 msgid "Can't disable mandatory group\n" -msgstr "" +msgstr "No es pot deshabilitar un grup obligatòri\n" #: winerror.mc:1961 msgid "No logon servers available\n" -msgstr "" +msgstr "Cap servidor d'autenticació disponible\n" #: winerror.mc:1966 msgid "No such logon session\n" -msgstr "" +msgstr "Cap sessió d'inici així\n" #: winerror.mc:1971 msgid "No such privilege\n" -msgstr "" +msgstr "Cap privilegi així\n" #: winerror.mc:1976 msgid "Privilege not held\n" -msgstr "" +msgstr "Privilegi no tingut\n" #: winerror.mc:1981 msgid "Invalid account name\n" -msgstr "" +msgstr "Nom del compte invàlid\n" #: winerror.mc:1986 msgid "User already exists\n" -msgstr "" +msgstr "L'usuari ja existeix\n" #: winerror.mc:1991 msgid "No such user\n" -msgstr "" +msgstr "Cap usuari així\n" #: winerror.mc:1996 msgid "Group already exists\n" -msgstr "" +msgstr "El grup ja existeix\n" #: winerror.mc:2001 msgid "No such group\n" -msgstr "" +msgstr "Cap grup així\n" #: winerror.mc:2006 msgid "User already in group\n" -msgstr "" +msgstr "L'usuari ja està en el grup\n" #: winerror.mc:2011 msgid "User not in group\n" -msgstr "" +msgstr "L'usuari no està en el grup\n" #: winerror.mc:2016 msgid "Can't delete last admin user\n" -msgstr "" +msgstr "No es pot suprimir l'últim usuari administrador\n" #: winerror.mc:2021 msgid "Wrong password\n" -msgstr "" +msgstr "Contrasenya equivocada\n" #: winerror.mc:2026 msgid "Ill-formed password\n" -msgstr "" +msgstr "Contrasenya mal format\n" #: winerror.mc:2031 msgid "Password restriction\n" -msgstr "" +msgstr "Restricció de contrasenya\n" #: winerror.mc:2036 msgid "Logon failure\n" -msgstr "" +msgstr "Fallada d'inici de sessió\n" #: winerror.mc:2041 msgid "Account restriction\n" -msgstr "" +msgstr "Restricció de compte\n" #: winerror.mc:2046 msgid "Invalid logon hours\n" -msgstr "" +msgstr "Horas de sessió invàlides\n" #: winerror.mc:2051 msgid "Invalid workstation\n" -msgstr "" +msgstr "Estació de treball invàlida\n" #: winerror.mc:2056 msgid "Password expired\n" -msgstr "" +msgstr "Contrasenya caducada\n" #: winerror.mc:2061 msgid "Account disabled\n" -msgstr "" +msgstr "Compte deshabilitat\n" #: winerror.mc:2066 msgid "No security ID mapped\n" -msgstr "" +msgstr "Cap ID de seguretat asignat\n" #: winerror.mc:2071 msgid "Too many LUIDs requested\n" -msgstr "" +msgstr "Massa LUIDs sol·licitats\n" #: winerror.mc:2076 msgid "LUIDs exhausted\n" -msgstr "" +msgstr "LUIDs acabats\n" #: winerror.mc:2081 msgid "Invalid sub authority\n" -msgstr "" +msgstr "Sub-autoritat invàlida\n" #: winerror.mc:2086 msgid "Invalid ACL\n" -msgstr "" +msgstr "ACL invàlida\n" #: winerror.mc:2091 msgid "Invalid SID\n" -msgstr "" +msgstr "SID invàlid\n" #: winerror.mc:2096 msgid "Invalid security descriptor\n" -msgstr "" +msgstr "Descriptor de seguretat invàlid\n" #: winerror.mc:2101 msgid "Bad inherited ACL\n" -msgstr "" +msgstr "ACL heretat dolent\n" #: winerror.mc:2106 msgid "Server disabled\n" -msgstr "" +msgstr "Servidor deshabilitat\n" #: winerror.mc:2111 msgid "Server not disabled\n" -msgstr "" +msgstr "Servidor no deshabilitat\n" #: winerror.mc:2116 msgid "Invalid ID authority\n" -msgstr "" +msgstr "Autoritat d'ID invàlida\n" #: winerror.mc:2121 msgid "Allotted space exceeded\n" -msgstr "" +msgstr "Espai assignat superat\n" #: winerror.mc:2126 msgid "Invalid group attributes\n" -msgstr "" +msgstr "Atributs de grup invàlids\n" #: winerror.mc:2131 msgid "Bad impersonation level\n" -msgstr "" +msgstr "Nivell de suplantació dolent\n" #: winerror.mc:2136 msgid "Can't open anonymous security token\n" -msgstr "" +msgstr "No es pot obrir token de seguretat anònim\n" #: winerror.mc:2141 msgid "Bad validation class\n" -msgstr "" +msgstr "Classe de validació dolent\n" #: winerror.mc:2146 msgid "Bad token type\n" -msgstr "" +msgstr "Tipus de token dolent\n" #: winerror.mc:2151 msgid "No security on object\n" -msgstr "" +msgstr "Cap seguretat en objecte\n" #: winerror.mc:2156 msgid "Can't access domain information\n" -msgstr "" +msgstr "No es pot accedir a la informació de domini\n" #: winerror.mc:2161 msgid "Invalid server state\n" -msgstr "" +msgstr "Estat de servidor invàlid\n" #: winerror.mc:2166 msgid "Invalid domain state\n" -msgstr "" +msgstr "Estat de domini invàlid\n" #: winerror.mc:2171 msgid "Invalid domain role\n" -msgstr "" +msgstr "Paper de domini invàlid\n" #: winerror.mc:2176 msgid "No such domain\n" -msgstr "" +msgstr "Cap domini així\n" #: winerror.mc:2181 msgid "Domain already exists\n" -msgstr "" +msgstr "El domini ja existeix\n" #: winerror.mc:2186 msgid "Domain limit exceeded\n" -msgstr "" +msgstr "Límit de domini superat\n" #: winerror.mc:2191 msgid "Internal database corruption\n" -msgstr "" +msgstr "Corrupció de base de dades intern\n" #: winerror.mc:2196 msgid "Internal error\n" -msgstr "" +msgstr "Error intern\n" #: winerror.mc:2201 msgid "Generic access types not mapped\n" -msgstr "" +msgstr "Tipus genèrics d'accés no assignats\n" #: winerror.mc:2206 msgid "Bad descriptor format\n" -msgstr "" +msgstr "Format dolent de descriptor\n" #: winerror.mc:2211 msgid "Not a logon process\n" -msgstr "" +msgstr "No és un procés d'inici de sessió\n" #: winerror.mc:2216 msgid "Logon session ID exists\n" -msgstr "" +msgstr "ID de sessió d'inici existeix\n" #: winerror.mc:2221 msgid "Unknown authentication package\n" -msgstr "" +msgstr "Paquet d'autenticació desconegut\n" #: winerror.mc:2226 msgid "Bad logon session state\n" -msgstr "" +msgstr "Estat dolent de sessió de'inici\n" #: winerror.mc:2231 msgid "Logon session ID collision\n" -msgstr "" +msgstr "Col·lisió d'ID de sessió d'inici\n" #: winerror.mc:2236 msgid "Invalid logon type\n" -msgstr "" +msgstr "Tipus d'inici de sessió invàlid\n" #: winerror.mc:2241 msgid "Cannot impersonate\n" -msgstr "" +msgstr "No es pot suplantar\n" #: winerror.mc:2246 msgid "Invalid transaction state\n" -msgstr "" +msgstr "Estat de transacció invàlid\n" #: winerror.mc:2251 msgid "Security DB commit failure\n" -msgstr "" +msgstr "Fallada de comissió de base de datos de seguretat\n" #: winerror.mc:2256 msgid "Account is built-in\n" -msgstr "" +msgstr "Compte és integrada\n" #: winerror.mc:2261 msgid "Group is built-in\n" -msgstr "" +msgstr "Grup és integrat\n" #: winerror.mc:2266 msgid "User is built-in\n" -msgstr "" +msgstr "Usuari és integrat\n" #: winerror.mc:2271 msgid "Group is primary for user\n" -msgstr "" +msgstr "Grup és primari per l'usuari\n" #: winerror.mc:2276 msgid "Token already in use\n" -msgstr "" +msgstr "Token ja en ús\n" #: winerror.mc:2281 msgid "No such local group\n" -msgstr "" +msgstr "Cap grup local així\n" #: winerror.mc:2286 msgid "User not in local group\n" -msgstr "" +msgstr "L'usuari no està en el grup local\n" #: winerror.mc:2291 msgid "User already in local group\n" -msgstr "" +msgstr "L'usuari ja està en el grup local\n" #: winerror.mc:2296 msgid "Local group already exists\n" -msgstr "" +msgstr "El grup local ja existeix\n" #: winerror.mc:2301 winerror.mc:2326 msgid "Logon type not granted\n" -msgstr "" +msgstr "Tipus d'inici de sessió no concedit\n" #: winerror.mc:2306 msgid "Too many secrets\n" -msgstr "" +msgstr "Massa secrets\n" #: winerror.mc:2311 msgid "Secret too long\n" -msgstr "" +msgstr "Secret massa llarg\n" #: winerror.mc:2316 msgid "Internal security DB error\n" -msgstr "" +msgstr "Error de base de datos de seguretat intern\n" #: winerror.mc:2321 msgid "Too many context IDs\n" -msgstr "" +msgstr "Massa IDs de context\n" #: winerror.mc:2331 msgid "Cross-encrypted NT password required\n" -msgstr "" +msgstr "Contrasenya mutualment xifrada NT requerit\n" #: winerror.mc:2336 msgid "No such member\n" -msgstr "" +msgstr "Cap membre així\n" #: winerror.mc:2341 msgid "Invalid member\n" -msgstr "" +msgstr "Membre invàlid\n" #: winerror.mc:2346 msgid "Too many SIDs\n" -msgstr "" +msgstr "Massa SIDs\n" #: winerror.mc:2351 msgid "Cross-encrypted LM password required\n" -msgstr "" +msgstr "Contrasenya mutualment xifrada LM requerit\n" #: winerror.mc:2356 msgid "No inheritable components\n" -msgstr "" +msgstr "Cap component heretable\n" #: winerror.mc:2361 msgid "File or directory corrupt\n" -msgstr "" +msgstr "Fitxer o directori corrupt\n" #: winerror.mc:2366 msgid "Disk is corrupt\n" -msgstr "" +msgstr "El Disc és corrupt\n" #: winerror.mc:2371 msgid "No user session key\n" -msgstr "" +msgstr "Cap clau de sessió d'usuari\n" #: winerror.mc:2376 msgid "Licence quota exceeded\n" -msgstr "" +msgstr "Quota de llicència superada\n" #: winerror.mc:2381 msgid "Wrong target name\n" -msgstr "" +msgstr "Nom de destinació incorrecte\n" #: winerror.mc:2386 msgid "Mutual authentication failed\n" -msgstr "" +msgstr "L'autenticació mutual ha fallat\n" #: winerror.mc:2391 msgid "Time skew between client and server\n" -msgstr "" +msgstr "Asimetria de temps entre client i servidor\n" #: winerror.mc:2396 msgid "Invalid window handle\n" -msgstr "" +msgstr "Mànec de finestra invàlid\n" #: winerror.mc:2401 msgid "Invalid menu handle\n" -msgstr "" +msgstr "Mànec de menú invàlid\n" #: winerror.mc:2406 msgid "Invalid cursor handle\n" -msgstr "" +msgstr "Mànec de cursor invàlid\n" #: winerror.mc:2411 msgid "Invalid accelerator table handle\n" -msgstr "" +msgstr "Mànec de taula acceleradora invàlid\n" #: winerror.mc:2416 msgid "Invalid hook handle\n" -msgstr "" +msgstr "Mànec de ganxo invàlid\n" #: winerror.mc:2421 msgid "Invalid DWP handle\n" -msgstr "" +msgstr "Mànec DWP invàlid\n" #: winerror.mc:2426 msgid "Can't create top-level child window\n" -msgstr "" +msgstr "No es pot crear la finestra filla de nivell superior\n" #: winerror.mc:2431 msgid "Can't find window class\n" -msgstr "" +msgstr "No es pot trobar la classe de finestra\n" #: winerror.mc:2436 msgid "Window owned by another thread\n" -msgstr "" +msgstr "La finestra pertany a un altre fil\n" #: winerror.mc:2441 msgid "Hotkey already registered\n" -msgstr "" +msgstr "Tecla d'accés directe ja registrada\n" #: winerror.mc:2446 msgid "Class already exists\n" -msgstr "" +msgstr "Classe ja existeix\n" #: winerror.mc:2451 msgid "Class does not exist\n" -msgstr "" +msgstr "Classe no existeix\n" #: winerror.mc:2456 msgid "Class has open windows\n" -msgstr "" +msgstr "La classe té finestres obertas\n" #: winerror.mc:2461 msgid "Invalid index\n" -msgstr "" +msgstr "Índex invàlid\n" #: winerror.mc:2466 msgid "Invalid icon handle\n" -msgstr "" +msgstr "Mànec d'icona invàlid\n" #: winerror.mc:2471 msgid "Private dialog index\n" -msgstr "" +msgstr "Índex de diàleg privat\n" #: winerror.mc:2476 msgid "List box ID not found\n" -msgstr "" +msgstr "ID de caixa de llista no trobat\n" #: winerror.mc:2481 msgid "No wildcard characters\n" -msgstr "" +msgstr "Cap caràcter comodí\n" #: winerror.mc:2486 msgid "Clipboard not open\n" -msgstr "" +msgstr "Portapapers no obert\n" #: winerror.mc:2491 msgid "Hotkey not registered\n" -msgstr "" +msgstr "Tecla d'accés directe no registrada\n" #: winerror.mc:2496 msgid "Not a dialog window\n" -msgstr "" +msgstr "No és finestra de diàleg\n" #: winerror.mc:2501 msgid "Control ID not found\n" -msgstr "" +msgstr "ID de control no trobat\n" #: winerror.mc:2506 msgid "Invalid combobox message\n" -msgstr "" +msgstr "Missatge de quadre combinat invàlid\n" #: winerror.mc:2511 msgid "Not a combobox window\n" -msgstr "" +msgstr "No és finestra de quadre combinat\n" #: winerror.mc:2516 msgid "Invalid edit height\n" -msgstr "" +msgstr "Altura d'edició invàlida\n" #: winerror.mc:2521 msgid "DC not found\n" -msgstr "" +msgstr "DC no trobat\n" #: winerror.mc:2526 msgid "Invalid hook filter\n" -msgstr "" +msgstr "Filtre de ganxo invàlid\n" #: winerror.mc:2531 msgid "Invalid filter procedure\n" -msgstr "" +msgstr "Procediment de filtre no vàlid\n" #: winerror.mc:2536 msgid "Hook procedure needs module handle\n" -msgstr "" +msgstr "El procediment necessita mànec de mòdul\n" #: winerror.mc:2541 msgid "Global-only hook procedure\n" -msgstr "" +msgstr "Procediment de ganxo només global\n" #: winerror.mc:2546 msgid "Journal hook already set\n" -msgstr "" +msgstr "Ganxo de journal ja establert\n" #: winerror.mc:2551 msgid "Hook procedure not installed\n" -msgstr "" +msgstr "Procediment de ganxo no instalat\n" #: winerror.mc:2556 msgid "Invalid list box message\n" -msgstr "" +msgstr "Missatge de caixa de llista invàlid\n" #: winerror.mc:2561 msgid "Invalid LB_SETCOUNT sent\n" -msgstr "" +msgstr "LB_SETCOUNT invàlid enviat\n" #: winerror.mc:2566 msgid "No tab stops on this list box\n" -msgstr "" +msgstr "Cap tabulador atura en aquesta caixa de llista\n" #: winerror.mc:2571 msgid "Can't destroy object owned by another thread\n" -msgstr "" +msgstr "No es pot destruir un objecte d'un altre fil\n" #: winerror.mc:2576 msgid "Child window menus not allowed\n" -msgstr "" +msgstr "No es permeten els menús de finestres filles\n" #: winerror.mc:2581 msgid "Window has no system menu\n" -msgstr "" +msgstr "La finestra no té menú de sistema\n" #: winerror.mc:2586 msgid "Invalid message box style\n" -msgstr "" +msgstr "Estil de quadre de missatge invàlid\n" #: winerror.mc:2591 msgid "Invalid SPI parameter\n" -msgstr "" +msgstr "Paràmetre SPI invàlid\n" #: winerror.mc:2596 msgid "Screen already locked\n" -msgstr "" +msgstr "Pantalla ja bloquejada\n" #: winerror.mc:2601 msgid "Window handles have different parents\n" -msgstr "" +msgstr "Els mànecs de les finestres tenen pares diferents\n" #: winerror.mc:2606 msgid "Not a child window\n" -msgstr "" +msgstr "No és finestra filla\n" #: winerror.mc:2611 msgid "Invalid GW command\n" -msgstr "" +msgstr "Ordre GW invàlid\n" #: winerror.mc:2616 msgid "Invalid thread ID\n" -msgstr "" +msgstr "ID de fil invàlid\n" #: winerror.mc:2621 msgid "Not an MDI child window\n" -msgstr "" +msgstr "No és finestra filla MDI\n" #: winerror.mc:2626 msgid "Popup menu already active\n" -msgstr "" +msgstr "Menú emergent ja actui\n" #: winerror.mc:2631 msgid "No scrollbars\n" -msgstr "" +msgstr "Cap barra de desplaçament\n" #: winerror.mc:2636 msgid "Invalid scrollbar range\n" -msgstr "" +msgstr "Rang de desplaçament invàlid\n" #: winerror.mc:2641 msgid "Invalid ShowWin command\n" -msgstr "" +msgstr "Ordre ShowWin invàlid\n" #: winerror.mc:2646 msgid "No system resources\n" -msgstr "" +msgstr "Cap recurs de sistema\n" #: winerror.mc:2651 msgid "No non-paged system resources\n" -msgstr "" +msgstr "Cap recurs de sistema no paginat\n" #: winerror.mc:2656 msgid "No paged system resources\n" -msgstr "" +msgstr "Cap recurs de sistema paginat\n" #: winerror.mc:2661 msgid "No working set quota\n" -msgstr "" +msgstr "Cap quota de conjunt de treball\n" #: winerror.mc:2666 msgid "No page file quota\n" -msgstr "" +msgstr "Cap quota de fitxer de paginació\n" #: winerror.mc:2671 msgid "Exceeded commitment limit\n" -msgstr "" +msgstr "Límit de compromís superat\n" #: winerror.mc:2676 msgid "Menu item not found\n" -msgstr "" +msgstr "Element de menú no trobat\n" #: winerror.mc:2681 msgid "Invalid keyboard handle\n" -msgstr "" +msgstr "Mànec de teclat invàlid\n" #: winerror.mc:2686 msgid "Hook type not allowed\n" -msgstr "" +msgstr "Tipus de ganxo no permès\n" #: winerror.mc:2691 msgid "Interactive window station required\n" -msgstr "" +msgstr "Estació de finestra interactiva requerida\n" #: winerror.mc:2696 msgid "Timeout\n" -msgstr "" +msgstr "Temps d'espera superat\n" #: winerror.mc:2701 msgid "Invalid monitor handle\n" -msgstr "" +msgstr "Mànec de monitor invàlid\n" #: winerror.mc:2706 msgid "Event log file corrupt\n" -msgstr "" +msgstr "Fitxer de registre d'esdeveniments corrupt\n" #: winerror.mc:2711 msgid "Event log can't start\n" -msgstr "" +msgstr "No es pot iniciar el registre d'esdeveniments\n" #: winerror.mc:2716 msgid "Event log file full\n" -msgstr "" +msgstr "Fitxer de registre d'esdeveniments ple\n" #: winerror.mc:2721 msgid "Event log file changed\n" -msgstr "" +msgstr "Fitxer de registre d'esdeveniments canviat\n" #: winerror.mc:2726 msgid "Installer service failed.\n" -msgstr "" +msgstr "El servei d'instal·lació ha fallat.\n" #: winerror.mc:2731 msgid "Installation aborted by user\n" -msgstr "" +msgstr "Instal·lació avortada per usuari\n" #: winerror.mc:2736 msgid "Installation failure\n" -msgstr "" +msgstr "Fallada d'instal·lació\n" #: winerror.mc:2741 msgid "Installation suspended\n" -msgstr "" +msgstr "Instal·lació suspesa\n" #: winerror.mc:2746 msgid "Unknown product\n" -msgstr "" +msgstr "Producte desconegut\n" #: winerror.mc:2751 msgid "Unknown feature\n" -msgstr "" +msgstr "Funció desconeguda\n" #: winerror.mc:2756 msgid "Unknown component\n" -msgstr "" +msgstr "Component desconegut\n" #: winerror.mc:2761 msgid "Unknown property\n" -msgstr "" +msgstr "Propietat desconeguda\n" #: winerror.mc:2766 msgid "Invalid handle state\n" -msgstr "" +msgstr "Estat de mànec invàlid\n" #: winerror.mc:2771 msgid "Bad configuration\n" -msgstr "" +msgstr "Configuració dolenta\n" #: winerror.mc:2776 msgid "Index is missing\n" -msgstr "" +msgstr "Falta l'índex\n" #: winerror.mc:2781 msgid "Installation source is missing\n" -msgstr "" +msgstr "Falta el font d'instal·lació\n" #: winerror.mc:2786 msgid "Wrong installation package version\n" -msgstr "" +msgstr "Versió de paquet d'instal·lació incorrecta\n" #: winerror.mc:2791 msgid "Product uninstalled\n" -msgstr "" +msgstr "Producte desinstal·lat\n" #: winerror.mc:2796 msgid "Invalid query syntax\n" -msgstr "" +msgstr "Sintaxi de consulta invàlida\n" #: winerror.mc:2801 msgid "Invalid field\n" -msgstr "" +msgstr "Camp invàlid\n" #: winerror.mc:2806 msgid "Device removed\n" -msgstr "" +msgstr "Dispositiu tret\n" #: winerror.mc:2811 msgid "Installation already running\n" -msgstr "" +msgstr "Instal·lació ja executant\n" #: winerror.mc:2816 msgid "Installation package failed to open\n" -msgstr "" +msgstr "El paquet d'instal·lació ha fallat en obrir\n" #: winerror.mc:2821 msgid "Installation package is invalid\n" -msgstr "" +msgstr "El paquet d'instal·lació és invàlid\n" #: winerror.mc:2826 msgid "Installer user interface failed\n" -msgstr "" +msgstr "La interfície d'usuari de l'instal·lador ha fallat\n" #: winerror.mc:2831 msgid "Failed to open installation log file\n" -msgstr "" +msgstr "Fallada en obrir el fitxer de registre d'instal·lació\n" #: winerror.mc:2836 msgid "Installation language not supported\n" -msgstr "" +msgstr "Llengua d'instal·lació no compatible\n" #: winerror.mc:2841 msgid "Installation transform failed to apply\n" -msgstr "" +msgstr "La transformació d'instalació ha fallat en aplicar-se\n" #: winerror.mc:2846 msgid "Installation package rejected\n" -msgstr "" +msgstr "Paquet d'instal·lació refusat\n" #: winerror.mc:2851 msgid "Function could not be called\n" -msgstr "" +msgstr "No s'ha pogut trucar a la funció\n" #: winerror.mc:2856 msgid "Function failed\n" -msgstr "" +msgstr "La funció ha fallat\n" #: winerror.mc:2861 msgid "Invalid table\n" -msgstr "" +msgstr "Taula invàlida\n" #: winerror.mc:2866 msgid "Data type mismatch\n" -msgstr "" +msgstr "Els tipus de dades no es coincideixen\n" #: winerror.mc:2871 winerror.mc:3081 msgid "Unsupported type\n" -msgstr "" +msgstr "Tipus incompatible\n" #: winerror.mc:2876 msgid "Creation failed\n" -msgstr "" +msgstr "La creació ha fallat\n" #: winerror.mc:2881 msgid "Temporary directory not writable\n" -msgstr "" +msgstr "No es pot escriure al directori temporal\n" #: winerror.mc:2886 msgid "Installation platform not supported\n" -msgstr "" +msgstr "Plataforma d'instal·lació no compatible\n" #: winerror.mc:2891 msgid "Installer not used\n" -msgstr "" +msgstr "Instal·lador no usat\n" #: winerror.mc:2896 msgid "Failed to open the patch package\n" -msgstr "" +msgstr "S'ha fallat en obrir el paquet de parche\n" #: winerror.mc:2901 msgid "Invalid patch package\n" -msgstr "" +msgstr "Paquet de pegada invàlid\n" #: winerror.mc:2906 msgid "Unsupported patch package\n" -msgstr "" +msgstr "Paquet de pegada no compatible\n" #: winerror.mc:2911 msgid "Another version is installed\n" -msgstr "" +msgstr "Una altre versió està instal·lada\n" #: winerror.mc:2916 msgid "Invalid command line\n" -msgstr "" +msgstr "Línea d'ordres invàlida\n" #: winerror.mc:2921 msgid "Remote installation not allowed\n" -msgstr "" +msgstr "Instal·lació remota no permesa\n" #: winerror.mc:2926 msgid "Reboot initiated after successful install\n" -msgstr "" +msgstr "Reinici iniciat desprès d'instal·lació amb èxit\n" #: winerror.mc:2931 msgid "Invalid string binding\n" -msgstr "" +msgstr "Lligament de cadena invàlid\n" #: winerror.mc:2936 msgid "Wrong kind of binding\n" -msgstr "" +msgstr "Tipus de lligament incorrecte\n" #: winerror.mc:2941 msgid "Invalid binding\n" -msgstr "" +msgstr "Lligament invàlid\n" #: winerror.mc:2946 msgid "RPC protocol sequence not supported\n" -msgstr "" +msgstr "Seqüència de protocol RPC no compatible\n" #: winerror.mc:2951 msgid "Invalid RPC protocol sequence\n" -msgstr "" +msgstr "Seqüència de protocol RPC invàlida\n" #: winerror.mc:2956 msgid "Invalid string UUID\n" -msgstr "" +msgstr "UUID de cadena invàlida\n" #: winerror.mc:2961 msgid "Invalid endpoint format\n" -msgstr "" +msgstr "Format de punt final invàlid\n" #: winerror.mc:2966 msgid "Invalid network address\n" -msgstr "" +msgstr "Adreça de xarxa invàlida\n" #: winerror.mc:2971 msgid "No endpoint found\n" -msgstr "" +msgstr "Cap punt final trobat\n" #: winerror.mc:2976 msgid "Invalid timeout value\n" -msgstr "" +msgstr "Valor de temps d'espera invàlid\n" #: winerror.mc:2981 msgid "Object UUID not found\n" -msgstr "" +msgstr "UUID del objecte no trobat\n" #: winerror.mc:2986 msgid "UUID already registered\n" -msgstr "" +msgstr "UUID ja registrat\n" #: winerror.mc:2991 msgid "UUID type already registered\n" -msgstr "" +msgstr "Tipus UUID ja registrat\n" #: winerror.mc:2996 msgid "Server already listening\n" -msgstr "" +msgstr "Servidor ja escoltant\n" #: winerror.mc:3001 msgid "No protocol sequences registered\n" -msgstr "" +msgstr "Cap seqüència de protocol registrada\n" #: winerror.mc:3006 msgid "RPC server not listening\n" -msgstr "" +msgstr "Servidor RPC no escoltant\n" #: winerror.mc:3011 msgid "Unknown manager type\n" -msgstr "" +msgstr "Tipus de gestor desconegut\n" #: winerror.mc:3016 msgid "Unknown interface\n" -msgstr "" +msgstr "Interfície desconeguda\n" #: winerror.mc:3021 msgid "No bindings\n" -msgstr "" +msgstr "Cap lligament\n" #: winerror.mc:3026 msgid "No protocol sequences\n" -msgstr "" +msgstr "Cap seqüència de protocol\n" #: winerror.mc:3031 msgid "Can't create endpoint\n" -msgstr "" +msgstr "No es pot crear el punt final\n" #: winerror.mc:3036 msgid "Out of resources\n" -msgstr "" +msgstr "No queden recursos\n" #: winerror.mc:3041 msgid "RPC server unavailable\n" -msgstr "" +msgstr "Servidor RPC no disponible\n" #: winerror.mc:3046 msgid "RPC server too busy\n" -msgstr "" +msgstr "Servidor RPC massa ocupat\n" #: winerror.mc:3051 msgid "Invalid network options\n" -msgstr "" +msgstr "Opcions de xarxa invàlides\n" #: winerror.mc:3056 msgid "No RPC call active\n" -msgstr "" +msgstr "Cap trucada RPC activa\n" #: winerror.mc:3061 msgid "RPC call failed\n" -msgstr "" +msgstr "La trucada RPC ha fallat\n" #: winerror.mc:3066 msgid "RPC call failed and didn't execute\n" -msgstr "" +msgstr "La trucada RPC ha fallat i no s'ha executat\n" #: winerror.mc:3071 msgid "RPC protocol error\n" -msgstr "" +msgstr "Error de protocol RPC\n" #: winerror.mc:3076 msgid "Unsupported transfer syntax\n" -msgstr "" +msgstr "Sintaxi de transferència no compatible\n" #: winerror.mc:3086 msgid "Invalid tag\n" -msgstr "" +msgstr "Etiqueta invàlida\n" #: winerror.mc:3091 msgid "Invalid array bounds\n" -msgstr "" +msgstr "Límits de vector invàlids\n" #: winerror.mc:3096 msgid "No entry name\n" -msgstr "" +msgstr "Cap nom d'entrada\n" #: winerror.mc:3101 msgid "Invalid name syntax\n" -msgstr "" +msgstr "Sintaxi de nom invàlid\n" #: winerror.mc:3106 msgid "Unsupported name syntax\n" -msgstr "" +msgstr "Sintaxi de nom no compatible\n" #: winerror.mc:3111 msgid "No network address\n" -msgstr "" +msgstr "Cap adreça de xarxa\n" #: winerror.mc:3116 msgid "Duplicate endpoint\n" -msgstr "" +msgstr "Punt final duplicat\n" #: winerror.mc:3121 msgid "Unknown authentication type\n" -msgstr "" +msgstr "Tipus d'autenticació desconegut\n" #: winerror.mc:3126 msgid "Maximum calls too low\n" -msgstr "" +msgstr "Nombre màxim de trucades massa baix\n" #: winerror.mc:3131 msgid "String too long\n" -msgstr "" +msgstr "Cadena massa llarga\n" #: winerror.mc:3136 msgid "Protocol sequence not found\n" -msgstr "" +msgstr "Seqüència de protocol no trobada\n" #: winerror.mc:3141 msgid "Procedure number out of range\n" -msgstr "" +msgstr "Nombre de procediment fora de rang\n" #: winerror.mc:3146 msgid "Binding has no authentication data\n" -msgstr "" +msgstr "El lligament no té dades d'autenticació\n" #: winerror.mc:3151 msgid "Unknown authentication service\n" -msgstr "" +msgstr "Servei d'autenticació desconegut\n" #: winerror.mc:3156 msgid "Unknown authentication level\n" -msgstr "" +msgstr "Nivell d'autenticació desconegut\n" #: winerror.mc:3161 msgid "Invalid authentication identity\n" -msgstr "" +msgstr "Identitat d'autenticació invàlid\n" #: winerror.mc:3166 msgid "Unknown authorisation service\n" -msgstr "" +msgstr "Servei d'autorització desconegut\n" #: winerror.mc:3171 msgid "Invalid entry\n" -msgstr "" +msgstr "Entrada invàlida\n" #: winerror.mc:3176 msgid "Can't perform operation\n" -msgstr "" +msgstr "No es pot realitzar l'operació\n" #: winerror.mc:3181 msgid "Endpoints not registered\n" -msgstr "" +msgstr "Punts finals no registrats\n" #: winerror.mc:3186 msgid "Nothing to export\n" -msgstr "" +msgstr "Res per exportar\n" #: winerror.mc:3191 msgid "Incomplete name\n" -msgstr "" +msgstr "Nom incomplet\n" #: winerror.mc:3196 msgid "Invalid version option\n" -msgstr "" +msgstr "Opció de versió invàlida\n" #: winerror.mc:3201 msgid "No more members\n" -msgstr "" +msgstr "No hi ha més membres\n" #: winerror.mc:3206 msgid "Not all objects unexported\n" -msgstr "" +msgstr "Alguns objectes s'han exportat\n" #: winerror.mc:3211 msgid "Interface not found\n" -msgstr "" +msgstr "Interfície no trobada\n" #: winerror.mc:3216 msgid "Entry already exists\n" -msgstr "" +msgstr "L'entrada ja existeix\n" #: winerror.mc:3221 msgid "Entry not found\n" -msgstr "" +msgstr "Entrada no trobada\n" #: winerror.mc:3226 msgid "Name service unavailable\n" -msgstr "" +msgstr "Servei de noms no disponible\n" #: winerror.mc:3231 msgid "Invalid network address family\n" -msgstr "" +msgstr "Família d'adreces de xarxa invàlida\n" #: winerror.mc:3236 msgid "Operation not supported\n" -msgstr "" +msgstr "Operació no compatible\n" #: winerror.mc:3241 msgid "No security context available\n" -msgstr "" +msgstr "Cap context de seguretat disponible\n" #: winerror.mc:3246 msgid "RPCInternal error\n" -msgstr "" +msgstr "Error RPCInternal\n" #: winerror.mc:3251 msgid "RPC divide-by-zero\n" -msgstr "" +msgstr "RPC divisió per zero\n" #: winerror.mc:3256 msgid "Address error\n" -msgstr "" +msgstr "Error d'adreça\n" #: winerror.mc:3261 msgid "Floating-point divide-by-zero\n" -msgstr "" +msgstr "Divisió per zero de coma flotant\n" #: winerror.mc:3266 msgid "Floating-point underflow\n" -msgstr "" +msgstr "Desbordament underflow de punt flotant\n" #: winerror.mc:3271 msgid "Floating-point overflow\n" -msgstr "" +msgstr "Desbordament overflow de punt flotant\n" #: winerror.mc:3276 msgid "No more entries\n" -msgstr "" +msgstr "No hi ha més entrades\n" #: winerror.mc:3281 msgid "Character translation table open failed\n" -msgstr "" +msgstr "L'obertura de la taula de traducció de caràcters ha fallat\n" #: winerror.mc:3286 msgid "Character translation table file too small\n" -msgstr "" +msgstr "Fitxer de taula de traducció de caràcters massa petit\n" #: winerror.mc:3291 msgid "Null context handle\n" -msgstr "" +msgstr "Mànec de context nul\n" #: winerror.mc:3296 msgid "Context handle damaged\n" -msgstr "" +msgstr "Mànec de context danyat\n" #: winerror.mc:3301 msgid "Binding handle mismatch\n" -msgstr "" +msgstr "Els mànec de lligament no es coincideixen\n" #: winerror.mc:3306 msgid "Cannot get call handle\n" -msgstr "" +msgstr "No es pot obtenir el mànec de trucada\n" #: winerror.mc:3311 msgid "Null reference pointer\n" -msgstr "" +msgstr "Punter de referència nul\n" #: winerror.mc:3316 msgid "Enumeration value out of range\n" -msgstr "" +msgstr "Valor d'enumeració fuera de rang\n" #: winerror.mc:3321 msgid "Byte count too small\n" -msgstr "" +msgstr "Nombre de bytes massa petit\n" #: winerror.mc:3326 msgid "Bad stub data\n" -msgstr "" +msgstr "Dades d'esbós (stub) dolentes\n" #: winerror.mc:3331 msgid "Invalid user buffer\n" -msgstr "" +msgstr "Memòria intermèdia d'usuari invàlida\n" #: winerror.mc:3336 msgid "Unrecognised media\n" -msgstr "" +msgstr "Mitjà no reconegut\n" #: winerror.mc:3341 msgid "No trust secret\n" -msgstr "" +msgstr "Cap secret de confiança\n" #: winerror.mc:3346 msgid "No trust SAM account\n" -msgstr "" +msgstr "Cap compte SAM de confiança\n" #: winerror.mc:3351 msgid "Trusted domain failure\n" -msgstr "" +msgstr "Fallada de domini de confiança\n" #: winerror.mc:3356 msgid "Trusted relationship failure\n" -msgstr "" +msgstr "Fallada de relació de confiança\n" #: winerror.mc:3361 msgid "Trust logon failure\n" -msgstr "" +msgstr "Fallada d'inici de sessió de confiança\n" #: winerror.mc:3366 msgid "RPC call already in progress\n" -msgstr "" +msgstr "Trucada RPC ja en curs\n" #: winerror.mc:3371 msgid "NETLOGON is not started\n" -msgstr "" +msgstr "NETLOGON no està iniciat\n" #: winerror.mc:3376 msgid "Account expired\n" -msgstr "" +msgstr "Compte caducada\n" #: winerror.mc:3381 msgid "Redirector has open handles\n" -msgstr "" +msgstr "El redirector té mànecs oberts\n" #: winerror.mc:3386 msgid "Printer driver already installed\n" -msgstr "" +msgstr "Controlador d'impressora ja instal·lat\n" #: winerror.mc:3391 msgid "Unknown port\n" -msgstr "" +msgstr "Port desconegut\n" #: winerror.mc:3396 msgid "Unknown printer driver\n" -msgstr "" +msgstr "Controlador d'impressora desconegut\n" #: winerror.mc:3401 msgid "Unknown print processor\n" -msgstr "" +msgstr "Processador d'impressió desconegut\n" #: winerror.mc:3406 msgid "Invalid separator file\n" -msgstr "" +msgstr "Fitxer separador invàlid\n" #: winerror.mc:3411 msgid "Invalid priority\n" -msgstr "" +msgstr "Prioritat invàlida\n" #: winerror.mc:3416 msgid "Invalid printer name\n" -msgstr "" +msgstr "Nom d'impressora invàlid\n" #: winerror.mc:3421 msgid "Printer already exists\n" -msgstr "" +msgstr "La impressora ja existeix\n" #: winerror.mc:3426 msgid "Invalid printer command\n" -msgstr "" +msgstr "Ordre d'impressora invàlid\n" #: winerror.mc:3431 msgid "Invalid data type\n" -msgstr "" +msgstr "Tipus de dades invàlid\n" #: winerror.mc:3436 msgid "Invalid environment\n" -msgstr "" +msgstr "Entorn invàlid\n" #: winerror.mc:3441 msgid "No more bindings\n" -msgstr "" +msgstr "No hi ha més lligaments\n" #: winerror.mc:3446 msgid "Can't logon with interdomain trust account\n" msgstr "" +"No es pot iniciar la sessió amb compte de confiança de diversos dominis\n" #: winerror.mc:3451 msgid "Can't logon with workstation trust account\n" msgstr "" +"No es pot iniciar la sessió amb compte de confiança d'estació de treball\n" #: winerror.mc:3456 msgid "Can't logon with server trust account\n" -msgstr "" +msgstr "No es pot iniciar la sessió amb compte de confiança de servidor\n" #: winerror.mc:3461 msgid "Domain trust information inconsistent\n" -msgstr "" +msgstr "Informació de confiança de domini inconsistent\n" #: winerror.mc:3466 msgid "Server has open handles\n" -msgstr "" +msgstr "El servidor té mànecs oberts\n" #: winerror.mc:3471 msgid "Resource data not found\n" -msgstr "" +msgstr "Dades de recurs no trobades\n" #: winerror.mc:3476 msgid "Resource type not found\n" -msgstr "" +msgstr "Tipus de recurs no trobat\n" #: winerror.mc:3481 msgid "Resource name not found\n" -msgstr "" +msgstr "Nom de recurs no trobat\n" #: winerror.mc:3486 msgid "Resource language not found\n" -msgstr "" +msgstr "Llengua de recurs no trobada\n" #: winerror.mc:3491 msgid "Not enough quota\n" -msgstr "" +msgstr "Falta quota\n" #: winerror.mc:3496 msgid "No interfaces\n" -msgstr "" +msgstr "Cap interfície\n" #: winerror.mc:3501 msgid "RPC call cancelled\n" -msgstr "" +msgstr "Trucada RPC cancel·lada\n" #: winerror.mc:3506 msgid "Binding incomplete\n" -msgstr "" +msgstr "Lligament incomplet\n" #: winerror.mc:3511 msgid "RPC comm failure\n" -msgstr "" +msgstr "Fallada de comunicació RPC\n" #: winerror.mc:3516 msgid "Unsupported authorisation level\n" -msgstr "" +msgstr "Nivell d'autorització incompatible\n" #: winerror.mc:3521 msgid "No principal name registered\n" -msgstr "" +msgstr "Cap nom principal registrat\n" #: winerror.mc:3526 msgid "Not an RPC error\n" -msgstr "" +msgstr "No és un error RPC\n" #: winerror.mc:3531 msgid "UUID is local only\n" -msgstr "" +msgstr "La UUID és només local\n" #: winerror.mc:3536 msgid "Security package error\n" -msgstr "" +msgstr "Error de paquet de seguretat\n" #: winerror.mc:3541 msgid "Thread not cancelled\n" -msgstr "" +msgstr "Fil no cancel·lat\n" #: winerror.mc:3546 msgid "Invalid handle operation\n" -msgstr "" +msgstr "Operació de mànec invàlida\n" #: winerror.mc:3551 msgid "Wrong serialising package version\n" -msgstr "" +msgstr "Versió de paquet seriador incorrecta\n" #: winerror.mc:3556 msgid "Wrong stub version\n" -msgstr "" +msgstr "Versió d'esbós (stub) incorrecta\n" #: winerror.mc:3561 msgid "Invalid pipe object\n" -msgstr "" +msgstr "Objecte de canonada invàlid\n" #: winerror.mc:3566 msgid "Wrong pipe order\n" -msgstr "" +msgstr "Ordre de canonada incorrecte\n" #: winerror.mc:3571 msgid "Wrong pipe version\n" -msgstr "" +msgstr "Versió de canonada incorrecta\n" #: winerror.mc:3576 msgid "Group member not found\n" -msgstr "" +msgstr "Membre de grup no trobat\n" #: winerror.mc:3581 msgid "Can't create endpoint mapper DB\n" -msgstr "" +msgstr "No es pot crear el base de datos assignador de punts finals\n" #: winerror.mc:3586 msgid "Invalid object\n" -msgstr "" +msgstr "Objecte invàlid\n" #: winerror.mc:3591 msgid "Invalid time\n" -msgstr "" +msgstr "Hora invàlida\n" #: winerror.mc:3596 msgid "Invalid form name\n" -msgstr "" +msgstr "Nom de forma invàlid\n" #: winerror.mc:3601 msgid "Invalid form size\n" -msgstr "" +msgstr "Mida de forma invàlida\n" #: winerror.mc:3606 msgid "Already awaiting printer handle\n" -msgstr "" +msgstr "Ja esperant el mànec d'impressora\n" #: winerror.mc:3611 -#, fuzzy msgid "Printer deleted\n" -msgstr "&Suprimir" +msgstr "Impressora suprimida\n" #: winerror.mc:3616 msgid "Invalid printer state\n" -msgstr "" +msgstr "Estat d'impressora invàlid\n" #: winerror.mc:3621 msgid "User must change password\n" -msgstr "" +msgstr "L'usuari ha de canviar la contrasenya\n" #: winerror.mc:3626 msgid "Domain controller not found\n" -msgstr "" +msgstr "Controlador de domini no trobat\n" #: winerror.mc:3631 msgid "Account locked out\n" -msgstr "" +msgstr "Compte bloquejada\n" #: winerror.mc:3636 msgid "Invalid pixel format\n" -msgstr "" +msgstr "Format de píxeles invàlid\n" #: winerror.mc:3641 msgid "Invalid driver\n" -msgstr "" +msgstr "Controlador invàlid\n" #: winerror.mc:3646 msgid "Invalid object resolver set\n" -msgstr "" +msgstr "Conjunt de resolució d'objectes invàlid\n" #: winerror.mc:3651 msgid "Incomplete RPC send\n" -msgstr "" +msgstr "Enviament RPC incomplet\n" #: winerror.mc:3656 msgid "Invalid asynchronous RPC handle\n" -msgstr "" +msgstr "Mànec RPC asíncron invàlid\n" #: winerror.mc:3661 msgid "Invalid asynchronous RPC call\n" -msgstr "" +msgstr "Trucada RPC asíncrona invàlid\n" #: winerror.mc:3666 msgid "RPC pipe closed\n" -msgstr "" +msgstr "Canonada RPC tancada\n" #: winerror.mc:3671 msgid "Discipline error on RPC pipe\n" -msgstr "" +msgstr "Error de disciplina en canonada RPC\n" #: winerror.mc:3676 msgid "No data on RPC pipe\n" -msgstr "" +msgstr "No hi ha dades en la canonada RPC\n" #: winerror.mc:3681 msgid "No site name available\n" -msgstr "" +msgstr "Cap nom de lloc disponible\n" #: winerror.mc:3686 msgid "The file cannot be accessed\n" -msgstr "" +msgstr "No es pot accedir al fitxer\n" #: winerror.mc:3691 msgid "The filename cannot be resolved\n" -msgstr "" +msgstr "No es pot resoldre el nom de fitxer\n" #: winerror.mc:3696 msgid "RPC entry type mismatch\n" -msgstr "" +msgstr "Els tipus d'entrada RPC no es coincideixen\n" #: winerror.mc:3701 msgid "Not all objects could be exported\n" -msgstr "" +msgstr "No s'ha pogut exportar tots els objects\n" #: winerror.mc:3706 msgid "The interface could not be exported\n" -msgstr "" +msgstr "No s'ha pogut exportar la interfície\n" #: winerror.mc:3711 msgid "The profile could not be added\n" -msgstr "" +msgstr "No s'ha pogut afegir el perfil\n" #: winerror.mc:3716 msgid "The profile element could not be added\n" -msgstr "" +msgstr "No s'ha pogut afegir l'element de perfil\n" #: winerror.mc:3721 msgid "The profile element could not be removed\n" -msgstr "" +msgstr "No s'ha pogut treure l'element de perfil\n" #: winerror.mc:3726 msgid "The group element could not be added\n" -msgstr "" +msgstr "No s'ha pogut afegir l'element de grup\n" #: winerror.mc:3731 msgid "The group element could not be removed\n" -msgstr "" +msgstr "No s'ha pogut treure l'element de grup\n" #: winerror.mc:3736 msgid "The username could not be found\n" -msgstr "" +msgstr "No s'ha pogut trobar el nom d'usuari\n" #: localspl.rc:28 localui.rc:28 winspool.rc:27 msgid "Local Port" -msgstr "" +msgstr "Port Local" #: localspl.rc:29 msgid "Local Monitor" -msgstr "" +msgstr "Monitor Local" #: localui.rc:29 msgid "'%s' is not a valid port name" -msgstr "" +msgstr "'%s' no és un nom de port vàlid" #: localui.rc:30 msgid "Port %s already exists" -msgstr "" +msgstr "El port %s ja existeix" #: localui.rc:31 msgid "This port has no options to configure" -msgstr "" +msgstr "Aquest port no té opcions per configurar" #: mapi32.rc:28 msgid "Mail sending failed as you do not have a MAPI mail client installed." msgstr "" +"L'enviament de correu ha fallat perquè no teniu cap client de correu MAPI " +"instal·lat." #: mapi32.rc:29 msgid "Send Mail" -msgstr "" +msgstr "Envia Correu" #: mpr.rc:27 msgid "Entire Network" -msgstr "" +msgstr "Tota la Xarxa" #: mshtml.rc:31 msgid "HTML rendering is currently disabled." -msgstr "" +msgstr "Renderització de HTML actualment està deshabilitada." #: mshtml.rc:32 msgid "HTML Document" -msgstr "" +msgstr "Document HTML" #: mshtml.rc:26 msgid "Downloading from %s..." -msgstr "" +msgstr "Descarregant de %s..." #: mshtml.rc:25 msgid "Done" -msgstr "" +msgstr "Fet" #: msi.rc:27 msgid "" "The specified installation package could not be opened. Please check the " "file path and try again." msgstr "" +"El paquet d'instal·lació especificat no s'ha pogut obrir. Si us plau, " +"comproveu la ruta del fitxher i torneu a intentar." #: msi.rc:28 msgid "path %s not found" -msgstr "" +msgstr "ruta %s no trobada" #: msi.rc:29 msgid "insert disk %s" -msgstr "" +msgstr "insereix disc %s" #: msi.rc:30 msgid "" @@ -5347,360 +5420,399 @@ "\t/help\n" "\t/?\n" msgstr "" +"Instal·lador de Windows %s\n" +"\n" +"Ús:\n" +"msiexec ordre {paràmetre requerit} [paràmetre opcional]\n" +"\n" +"Instal·lar un producte:\n" +"\t/i {paquet|codi_de_producte} [propietat]\n" +"\t/package {paquet|codi_de_producte} [propietat]\n" +"\t/a paquet [propietat]\n" +"Reparar una instal·lació:\n" +"\t/f[p|o|e|d|c|a|u|m|s|v] {paquet|codi_de_producte}\n" +"Desinstal·lar un producte:\n" +"\t/uninstall {paquet|codi_de_producte} [propietat]\n" +"\t/x {paquet|codi_de_producte} [propietat]\n" +"Publicar un producte:\n" +"\t/j[u|m] paquet [/t transformació] [/g id de llengua]\n" +"Aplicar una pegada:\n" +"\t/p paquet_de_pegada [propietat]\n" +"\t/p paquet_de_pegada /a paquet [propietat]\n" +"Modificadors de Registre i IU per les ordres de dalt:\n" +"\t/l[*][i|w|e|a|r|u|c|m|o|p|v|][+|!] fitxer_de_registre\n" +"\t/q{|n|b|r|f|n+|b+|b-}\n" +"Registrar un Servei MSI:\n" +"\t/y\n" +"Anul·lar la registració d'un Servei MSI:\n" +"\t/z\n" +"Mostrar aquesta ajuda:\n" +"\t/help\n" +"\t/?\n" #: msi.rc:57 msgid "enter which folder contains %s" -msgstr "" +msgstr "introduïu qual carpeta conté %s" #: msi.rc:58 msgid "install source for feature missing" -msgstr "" +msgstr "falta el font d'instalació de la funció" #: msi.rc:59 msgid "network drive for feature missing" -msgstr "" +msgstr "falta la unitat de xarxa per la funció" #: msi.rc:60 msgid "feature from:" -msgstr "" +msgstr "funció de:" #: msi.rc:61 msgid "choose which folder contains %s" -msgstr "" +msgstr "trieu qual carpeta conté %s" #: msrle32.rc:28 msgid "Wine MS-RLE video codec" -msgstr "" +msgstr "Còdec de vídeo MS-RLE de Wine" #: msrle32.rc:29 msgid "" "Wine MS-RLE video codec\n" "Copyright 2002 by Michael Guennewig" msgstr "" +"Còdec de vídeo MS-RLE de Wine\n" +"© 2002 per Michael Guennewig" #: msvfw32.rc:25 msgid "Full Frames (Uncompressed)" -msgstr "" +msgstr "Fotogramas Ple (Sense Compressió)" #: msvidc32.rc:26 msgid "Wine Video 1 video codec" -msgstr "" +msgstr "Còdec de vídeo Video 1 de Wine" #: oleacc.rc:27 msgid "unknown object" -msgstr "" +msgstr "objecte desconegut" #: oleacc.rc:28 msgid "title bar" -msgstr "" +msgstr "barra de títol" #: oleacc.rc:29 msgid "menu bar" -msgstr "" +msgstr "barra de menú" #: oleacc.rc:30 msgid "scroll bar" -msgstr "" +msgstr "barra de desplaçament" #: oleacc.rc:31 msgid "grip" -msgstr "" +msgstr "agafada" #: oleacc.rc:32 msgid "sound" -msgstr "" +msgstr "so" #: oleacc.rc:33 msgid "cursor" -msgstr "" +msgstr "cursor" #: oleacc.rc:34 msgid "caret" -msgstr "" +msgstr "signe d'intercalació" #: oleacc.rc:35 msgid "alert" -msgstr "" +msgstr "alerta" #: oleacc.rc:36 msgid "window" -msgstr "" +msgstr "finestra" #: oleacc.rc:37 msgid "client" -msgstr "" +msgstr "client" #: oleacc.rc:38 msgid "popup menu" -msgstr "" +msgstr "menú emergent" #: oleacc.rc:39 msgid "menu item" -msgstr "" +msgstr "element de menú" #: oleacc.rc:40 msgid "tool tip" -msgstr "" +msgstr "indicador de funció" #: oleacc.rc:41 msgid "application" -msgstr "" +msgstr "aplicació" #: oleacc.rc:42 msgid "document" -msgstr "" +msgstr "document" #: oleacc.rc:43 msgid "pane" -msgstr "" +msgstr "panell" #: oleacc.rc:44 msgid "chart" -msgstr "" +msgstr "gràfic" #: oleacc.rc:45 msgid "dialog" -msgstr "" +msgstr "diàleg" #: oleacc.rc:46 msgid "border" -msgstr "" +msgstr "vora" #: oleacc.rc:47 msgid "grouping" -msgstr "" +msgstr "agrupament" #: oleacc.rc:48 msgid "separator" -msgstr "" +msgstr "separador" #: oleacc.rc:49 msgid "tool bar" -msgstr "" +msgstr "barra d'eines" #: oleacc.rc:50 msgid "status bar" -msgstr "" +msgstr "barra d'estat" #: oleacc.rc:51 msgid "table" -msgstr "" +msgstr "taula" #: oleacc.rc:52 msgid "column header" -msgstr "" +msgstr "capçalera de columna" #: oleacc.rc:53 msgid "row header" -msgstr "" +msgstr "capçalera de fila" #: oleacc.rc:54 msgid "column" -msgstr "" +msgstr "columna" #: oleacc.rc:55 msgid "row" -msgstr "" +msgstr "fila" #: oleacc.rc:56 msgid "cell" -msgstr "" +msgstr "cel·la" #: oleacc.rc:57 msgid "link" -msgstr "" +msgstr "enllaç" #: oleacc.rc:58 msgid "help balloon" -msgstr "" +msgstr "bafarada d'ajuda" #: oleacc.rc:59 msgid "character" -msgstr "" +msgstr "caràcter" #: oleacc.rc:60 msgid "list" -msgstr "" +msgstr "llista" #: oleacc.rc:61 msgid "list item" -msgstr "" +msgstr "element de llista" #: oleacc.rc:62 msgid "outline" -msgstr "" +msgstr "esquema" #: oleacc.rc:63 msgid "outline item" -msgstr "" +msgstr "element d'esquema" #: oleacc.rc:64 msgid "page tab" -msgstr "" +msgstr "tabulador de pàgina" #: oleacc.rc:65 msgid "property page" -msgstr "" +msgstr "pàgina de propietats" #: oleacc.rc:66 msgid "indicator" -msgstr "" +msgstr "indicador" #: oleacc.rc:67 msgid "graphic" -msgstr "" +msgstr "gràfic" #: oleacc.rc:68 msgid "static text" -msgstr "" +msgstr "text estàtic" #: oleacc.rc:69 msgid "text" -msgstr "" +msgstr "text" #: oleacc.rc:70 msgid "push button" -msgstr "" +msgstr "botó" #: oleacc.rc:71 msgid "check button" -msgstr "" +msgstr "casella de verificació" #: oleacc.rc:72 msgid "radio button" -msgstr "" +msgstr "botó de ràdio" #: oleacc.rc:73 msgid "combo box" -msgstr "" +msgstr "quadre combinat" #: oleacc.rc:74 msgid "drop down" -msgstr "" +msgstr "llista desplegable" #: oleacc.rc:75 msgid "progress bar" -msgstr "" +msgstr "barra de progrés" #: oleacc.rc:76 msgid "dial" -msgstr "" +msgstr "disc de marcar" #: oleacc.rc:77 msgid "hot key field" -msgstr "" +msgstr "camp amb tecla d'accés directe" #: oleacc.rc:78 msgid "slider" -msgstr "" +msgstr "control lliscant" #: oleacc.rc:79 msgid "spin box" -msgstr "" +msgstr "spinner" #: oleacc.rc:80 msgid "diagram" -msgstr "" +msgstr "diagrama" #: oleacc.rc:81 msgid "animation" -msgstr "" +msgstr "animació" #: oleacc.rc:82 msgid "equation" -msgstr "" +msgstr "equació" #: oleacc.rc:83 msgid "drop down button" -msgstr "" +msgstr "botó desplegable" #: oleacc.rc:84 msgid "menu button" -msgstr "" +msgstr "botó de menú" #: oleacc.rc:85 msgid "grid drop down button" -msgstr "" +msgstr "botó desplegable de graella" #: oleacc.rc:86 msgid "white space" -msgstr "" +msgstr "espai en blanc" #: oleacc.rc:87 msgid "page tab list" -msgstr "" +msgstr "llista de tabuladors de pàgina" #: oleacc.rc:88 msgid "clock" -msgstr "" +msgstr "rellotge" #: oleacc.rc:89 msgid "split button" -msgstr "" +msgstr "botó dividit" #: oleacc.rc:90 ipconfig.rc:33 msgid "IP address" -msgstr "" +msgstr "adreça IP" #: oleacc.rc:91 msgid "outline button" -msgstr "" +msgstr "botó d'esquema" #: oleaut32.rc:27 oleview.rc:144 msgid "True" -msgstr "" +msgstr "Veritable" #: oleaut32.rc:28 oleview.rc:145 msgid "False" -msgstr "" +msgstr "Fals" #: oleaut32.rc:31 msgid "On" -msgstr "" +msgstr "Actiu" #: oleaut32.rc:32 msgid "Off" -msgstr "" +msgstr "Inactiu" #: oledlg.rc:25 msgid "Insert a new %s object into your document" -msgstr "" +msgstr "Inseriu un nou objecte %s en el vostre document" #: oledlg.rc:26 msgid "" "Insert the contents of the file as an object into your document so that you " "may activate it using the program which created it." msgstr "" +"Inserir el contingut del fitxer com objecte en el document vostre de manera " +"que el podeu activar mitjançant el programa que el ha creat." #: oledlg.rc:27 shell32.rc:194 msgid "Browse" -msgstr "" +msgstr "Navegar" #: oledlg.rc:28 msgid "" "File does not appear to be a valid OLE module. Unable to register OLE " "control." msgstr "" +"El fitxer no sembla ser un mòdul OLE vàlid. No es pot registrar el control " +"OLE." #: oledlg.rc:29 msgid "Add Control" -msgstr "" +msgstr "Afegeix Control" #: oledlg.rc:34 msgid "Inserts the contents of the clipboard into your document as %s." -msgstr "" +msgstr "Insereix el contingut del portapapers en el document com %s." #: oledlg.rc:35 msgid "" "Inserts the contents of the clipboard into your document so that you can " "activate it using %s." msgstr "" +"Insereix el contingut del portapapers en el document com %s de manera que el " +"podeu activar mitjançant %s." #: oledlg.rc:36 msgid "" "Inserts the contents of the clipboard into your document so that you can " "activate it using %s. It will be displayed as an icon." msgstr "" +"Insereix el contingut del portapapers en el document com %s de manera que el " +"podeu activar mitjançant %s. Es mostrarà com icona." #: oledlg.rc:37 msgid "" @@ -5708,6 +5820,9 @@ "linked to the source file so that changes to the file will be reflected in " "your document." msgstr "" +"Insereix el contingut del portapapers en el document com %s. Les dades es " +"enllacen al fitxer d'origen perquè els canvis al fitxer es reflecteixin en " +"el vostre document." #: oledlg.rc:38 msgid "" @@ -5715,6 +5830,9 @@ "is linked to the source file so that changes to the file will be reflected " "in your document." msgstr "" +"Insereix una imatge del contingut del portapapers en el vostre document. La " +"imatge es enllaça al fitxer d'origen perquè els canvis al fitxer es " +"reflecteixin en el vostre document." #: oledlg.rc:39 msgid "" @@ -5722,87 +5840,91 @@ "The shortcut is linked to the source file so that changes to the file will " "be reflected in your document." msgstr "" +"Insereix un accés directe que apunta a la ubicació dels continguts del " +"portapapers. L'accés directe es enllaça al fitxer d'origen perquè els canvis " +"al fitxer es reflecteixin en el vostre document." #: oledlg.rc:40 msgid "Inserts the contents of the clipboard into your document." -msgstr "" +msgstr "Insereix el contingut del portapapers en el vostre document." #: oledlg.rc:41 msgid "Unknown Type" -msgstr "" +msgstr "Tipus Desconegut" #: oledlg.rc:42 msgid "Unknown Source" -msgstr "" +msgstr "Font Desconegut" #: oledlg.rc:43 msgid "the program which created it" -msgstr "" +msgstr "el programa que el ha creat" #: sane.rc:31 msgctxt "unit: pixels" msgid "px" -msgstr "" +msgstr "px" #: sane.rc:32 msgctxt "unit: bits" msgid "b" -msgstr "" +msgstr "b" #: sane.rc:34 msgctxt "unit: dots/inch" msgid "dpi" -msgstr "" +msgstr "ppp" #: sane.rc:35 msgctxt "unit: percent" msgid "%" -msgstr "" +msgstr "%" #: sane.rc:36 msgctxt "unit: microseconds" msgid "us" -msgstr "" +msgstr "µs" #: setupapi.rc:28 msgid "The file '%s' on %s is needed" -msgstr "" +msgstr "Cal el fitxer '%s' en %s" #: setupapi.rc:29 ipconfig.rc:31 msgid "Unknown" -msgstr "" +msgstr "Desconegut" #: setupapi.rc:30 msgid "Copy files from:" -msgstr "" +msgstr "Copia fitxers de:" #: setupapi.rc:31 msgid "Type the path where the file is located, and then click OK." msgstr "" +"Introduïu la ruta en que es troba el fitxer i llavors feu clic en D'acord." #: shdoclc.rc:39 msgid "F&orward" -msgstr "" +msgstr "End&avant" #: shdoclc.rc:41 msgid "&Save Background As..." -msgstr "" +msgstr "Anomena i &Desa Fons..." #: shdoclc.rc:42 msgid "Set As Back&ground" -msgstr "" +msgstr "Estableix Com &Fons" #: shdoclc.rc:43 msgid "&Copy Background" -msgstr "" +msgstr "&Copia Fons" #: shdoclc.rc:44 msgid "Set as &Desktop Item" -msgstr "" +msgstr "Estableix com Element &d'Escriptori" #: shdoclc.rc:46 shdoclc.rc:95 shdoclc.rc:117 user32.rc:62 msgid "Select &All" -msgstr "Seleccionar &tot el text" +msgstr "Selecciona &Tot" #: shdoclc.rc:47 shdoclc.rc:79 shdoclc.rc:92 shdoclc.rc:132 shdoclc.rc:159 #: shdoclc.rc:183 user32.rc:59 wineconsole.rc:30 wordpad.rc:103 @@ -5811,269 +5933,266 @@ #: shdoclc.rc:49 msgid "Create Shor&tcut" -msgstr "" +msgstr "Crea &Drecera" #: shdoclc.rc:50 shdoclc.rc:81 shdoclc.rc:134 shdoclc.rc:161 shdoclc.rc:185 msgid "Add to &Favorites..." -msgstr "" +msgstr "Afegeix a Pre&ferits..." #: shdoclc.rc:51 msgid "&View Source" -msgstr "" +msgstr "&Veure Font" #: shdoclc.rc:53 msgid "&Encoding" -msgstr "" +msgstr "C&odificació" #: shdoclc.rc:55 msgid "Pr&int" -msgstr "" +msgstr "&Imprimeix" #: shdoclc.rc:63 shdoclc.rc:146 shdoclc.rc:170 msgid "&Open Link" -msgstr "" +msgstr "&Obre Enllaç" #: shdoclc.rc:64 shdoclc.rc:147 shdoclc.rc:171 msgid "Open Link in &New Window" -msgstr "" +msgstr "Obre Enllaç en Finestra &Nova" #: shdoclc.rc:65 shdoclc.rc:126 shdoclc.rc:148 shdoclc.rc:172 msgid "Save Target &As..." -msgstr "" +msgstr "&Anomena i Desa Destinació..." #: shdoclc.rc:66 shdoclc.rc:127 shdoclc.rc:149 shdoclc.rc:173 msgid "&Print Target" -msgstr "" +msgstr "Im&primeix Destinació" #: shdoclc.rc:68 shdoclc.rc:151 shdoclc.rc:175 msgid "S&how Picture" -msgstr "" +msgstr "&Mostra Imatge" #: shdoclc.rc:69 shdoclc.rc:176 msgid "&Save Picture As..." -msgstr "" +msgstr "Anomena i &Desa Imatge..." #: shdoclc.rc:70 msgid "&E-mail Picture..." -msgstr "" +msgstr "Enviar Imatge per Correu Electrònic..." #: shdoclc.rc:71 msgid "Pr&int Picture..." -msgstr "" +msgstr "&Imprimeix Imatge..." #: shdoclc.rc:72 msgid "&Go to My Pictures" -msgstr "" +msgstr "A&nar a Mis Imatges" #: shdoclc.rc:73 shdoclc.rc:153 shdoclc.rc:177 msgid "Set as Back&ground" -msgstr "" +msgstr "Estableix com &Fons" #: shdoclc.rc:74 shdoclc.rc:154 shdoclc.rc:178 msgid "Set as &Desktop Item..." -msgstr "" +msgstr "Establex com Element &d'Escriptori" #: shdoclc.rc:76 shdoclc.rc:90 shdoclc.rc:114 shdoclc.rc:156 shdoclc.rc:180 #: user32.rc:57 wordpad.rc:101 msgid "Cu&t" -msgstr "&Retallar" +msgstr "&Retalla" #: shdoclc.rc:77 shdoclc.rc:91 shdoclc.rc:115 shdoclc.rc:130 shdoclc.rc:157 #: shdoclc.rc:181 shell32.rc:99 user32.rc:58 wineconsole.rc:29 winhlp32.rc:37 #: wordpad.rc:102 msgid "&Copy" -msgstr "&Copiar" +msgstr "&Copia" #: shdoclc.rc:78 shdoclc.rc:131 shdoclc.rc:158 shdoclc.rc:182 msgid "Copy Shor&tcut" -msgstr "" +msgstr "Copia Dr&ecera" #: shdoclc.rc:83 shdoclc.rc:136 shdoclc.rc:165 shdoclc.rc:191 msgid "P&roperties" -msgstr "" +msgstr "P&ropietats" #: shdoclc.rc:88 user32.rc:55 msgid "&Undo" -msgstr "&Desfer" +msgstr "&Desfés" #: shdoclc.rc:93 shell32.rc:102 user32.rc:60 msgid "&Delete" -msgstr "&Suprimir" +msgstr "&Suprimeix" #: shdoclc.rc:100 shell32.rc:94 -#, fuzzy msgid "&Select" -msgstr "Seleccionar &tot el text" +msgstr "&Selecciona" #: shdoclc.rc:102 msgid "&Cell" -msgstr "" +msgstr "&Cel·la" #: shdoclc.rc:103 msgid "&Row" -msgstr "" +msgstr "&Fila" #: shdoclc.rc:104 msgid "&Column" -msgstr "" +msgstr "&Columna" #: shdoclc.rc:105 msgid "&Table" -msgstr "" +msgstr "&Taula" #: shdoclc.rc:108 msgid "&Cell Properties" -msgstr "" +msgstr "Propietats de &Cèl·la" #: shdoclc.rc:109 msgid "&Table Properties" -msgstr "" +msgstr "Propietats de &Taula" #: shdoclc.rc:116 shell32.rc:61 -#, fuzzy msgid "Paste" -msgstr "&Enganxar" +msgstr "&Enganxa" #: shdoclc.rc:118 msgid "&Print" -msgstr "" +msgstr "Im&primeix" #: shdoclc.rc:124 shell32.rc:96 msgid "&Open" -msgstr "" +msgstr "&Obre" #: shdoclc.rc:125 msgid "Open in &New Window" -msgstr "" +msgstr "Obre en &Nou Finestra" #: shdoclc.rc:129 -#, fuzzy msgid "Cut" -msgstr "&Retallar" +msgstr "&Retalla" #: shdoclc.rc:152 msgid "&Save Video As..." -msgstr "" +msgstr "Anomena i &desa vídeo..." #: shdoclc.rc:163 shdoclc.rc:187 msgid "Play" -msgstr "" +msgstr "Reprodueix" #: shdoclc.rc:189 msgid "Rewind" -msgstr "" +msgstr "Rebobinar" #: shdoclc.rc:196 msgid "Trace Tags" -msgstr "" +msgstr "Etiqueta de Rastreig" #: shdoclc.rc:197 msgid "Resource Failures" -msgstr "" +msgstr "Errors de Recursos" #: shdoclc.rc:198 msgid "Dump Tracking Info" -msgstr "" +msgstr "Deixa Informació de Rastreig" #: shdoclc.rc:199 msgid "Debug Break" -msgstr "" +msgstr "Aturada de Depuració" #: shdoclc.rc:200 msgid "Debug View" -msgstr "" +msgstr "Vista de Depuració" #: shdoclc.rc:201 msgid "Dump Tree" -msgstr "" +msgstr "Aboca l'arbre" #: shdoclc.rc:202 msgid "Dump Lines" -msgstr "" +msgstr "Aboca les línies" #: shdoclc.rc:203 msgid "Dump DisplayTree" -msgstr "" +msgstr "Aboca la DisplayTree" #: shdoclc.rc:204 msgid "Dump FormatCaches" -msgstr "" +msgstr "Aboca els FormatCaches" #: shdoclc.rc:205 msgid "Dump LayoutRects" -msgstr "" +msgstr "Aboca els LayoutRects" #: shdoclc.rc:206 msgid "Memory Monitor" -msgstr "" +msgstr "Monitor de Memòria" #: shdoclc.rc:207 msgid "Performance Meters" -msgstr "" +msgstr "Mesuradors de Rendiment" #: shdoclc.rc:208 msgid "Save HTML" -msgstr "" +msgstr "Desa HTML" #: shdoclc.rc:210 msgid "&Browse View" -msgstr "" +msgstr "Vista de &Navegació" #: shdoclc.rc:211 msgid "&Edit View" -msgstr "" +msgstr "Vista d'&Edició" #: shdoclc.rc:216 shdoclc.rc:230 msgid "Scroll Here" -msgstr "" +msgstr "Desplaceu-vos Aquí" #: shdoclc.rc:218 msgid "Top" -msgstr "" +msgstr "Amunt" #: shdoclc.rc:219 msgid "Bottom" -msgstr "" +msgstr "Abaix" #: shdoclc.rc:221 msgid "Page Up" -msgstr "" +msgstr "Pàgina Amunt" #: shdoclc.rc:222 msgid "Page Down" -msgstr "" +msgstr "Pàgina Abaix" #: shdoclc.rc:224 msgid "Scroll Up" -msgstr "" +msgstr "Desplaceu-vos Amunt" #: shdoclc.rc:225 msgid "Scroll Down" -msgstr "" +msgstr "Desplaceu-vos Abaix" #: shdoclc.rc:232 msgid "Left Edge" -msgstr "" +msgstr "Vora Esquerra" #: shdoclc.rc:233 msgid "Right Edge" -msgstr "" +msgstr "Vora Dreta" #: shdoclc.rc:235 msgid "Page Left" -msgstr "" +msgstr "Pàgina Cap a la Esquerra" #: shdoclc.rc:236 msgid "Page Right" -msgstr "" +msgstr "Pàgina Cap a la Dreta" #: shdoclc.rc:238 msgid "Scroll Left" -msgstr "" +msgstr "Desplaceu-vos a la Esquerra" #: shdoclc.rc:239 msgid "Scroll Right" -msgstr "" +msgstr "Desplaceu-vos a la Dreta" #: shdoclc.rc:25 msgid "Wine Internet Explorer" @@ -6081,372 +6200,365 @@ #: shdoclc.rc:30 msgid "&w&bPage &p" -msgstr "" +msgstr "&w&bPàgina &p" #: shell32.rc:27 shell32.rc:42 shell32.rc:119 shell32.rc:159 taskmgr.rc:65 #: taskmgr.rc:110 taskmgr.rc:252 msgid "Lar&ge Icons" -msgstr "" +msgstr "Icones &Grans" #: shell32.rc:28 shell32.rc:43 shell32.rc:120 shell32.rc:160 taskmgr.rc:66 #: taskmgr.rc:111 taskmgr.rc:253 msgid "S&mall Icons" -msgstr "" +msgstr "Ico&nes Petites" #: shell32.rc:29 shell32.rc:44 shell32.rc:121 shell32.rc:161 msgid "&List" -msgstr "" +msgstr "&Llista" #: shell32.rc:30 shell32.rc:45 shell32.rc:122 shell32.rc:162 taskmgr.rc:67 #: taskmgr.rc:112 taskmgr.rc:254 msgid "&Details" -msgstr "" +msgstr "&Detalls" #: shell32.rc:48 winefile.rc:81 msgid "Arrange &Icons" -msgstr "" +msgstr "Organitzar &Icones" #: shell32.rc:50 msgid "By &Name" -msgstr "" +msgstr "Per &Nom" #: shell32.rc:51 msgid "By &Type" -msgstr "" +msgstr "Per &Tipus" #: shell32.rc:52 -#, fuzzy msgid "By &Size" -msgstr "&Grandària" +msgstr "Per &Mida" #: shell32.rc:53 msgid "By &Date" -msgstr "" +msgstr "Per &Data" #: shell32.rc:55 msgid "&Auto Arrange" -msgstr "" +msgstr "Organitzar &Automàticament" #: shell32.rc:57 msgid "Line up Icons" -msgstr "" +msgstr "Alinea Icones" #: shell32.rc:62 msgid "Paste as Link" -msgstr "" +msgstr "Enganxa com Enllaç" #: shell32.rc:64 msgid "New" -msgstr "" +msgstr "Nou" #: shell32.rc:66 msgid "New &Folder" -msgstr "" +msgstr "Nova &Carpeta" #: shell32.rc:67 msgid "New &Link" -msgstr "" +msgstr "Nova en&llaç" #: shell32.rc:71 msgid "Properties" -msgstr "" +msgstr "Propietats" #: shell32.rc:82 -#, fuzzy msgctxt "recycle bin" msgid "&Restore" -msgstr "&Restauració" +msgstr "&Restaura" #: shell32.rc:83 msgid "&Erase" -msgstr "" +msgstr "&Esborra" #: shell32.rc:95 msgid "E&xplore" -msgstr "" +msgstr "E&xplora" #: shell32.rc:98 msgid "C&ut" -msgstr "" +msgstr "Re&talla" #: shell32.rc:101 msgid "Create &Link" -msgstr "" +msgstr "Crea En&llaç" #: shell32.rc:103 regedit.rc:91 msgid "&Rename" -msgstr "" +msgstr "Canvia el &nom" #: shell32.rc:114 notepad.rc:36 oleview.rc:35 regedit.rc:38 view.rc:31 #: winhlp32.rc:34 wordpad.rc:37 msgid "E&xit" -msgstr "" +msgstr "&Surt" #: shell32.rc:127 -#, fuzzy msgid "&About Control Panel" -msgstr "&Quant a Wine..." +msgstr "&Quant al Panell de Control..." #: shell32.rc:135 shell32.rc:139 winefile.rc:111 -#, fuzzy msgid "Size" -msgstr "&Grandària" +msgstr "Mida" #: shell32.rc:136 regedit.rc:123 msgid "Type" -msgstr "" +msgstr "Tipus" #: shell32.rc:137 msgid "Modified" -msgstr "" +msgstr "Modificat" #: shell32.rc:138 winefile.rc:117 msgid "Attributes" -msgstr "" +msgstr "Atributs" #: shell32.rc:140 msgid "Size available" -msgstr "" +msgstr "Mida disponible" #: shell32.rc:142 msgid "Comments" -msgstr "" +msgstr "Comentaris" #: shell32.rc:143 msgid "Owner" -msgstr "" +msgstr "Propietari" #: shell32.rc:144 msgid "Group" -msgstr "" +msgstr "Grup" #: shell32.rc:145 msgid "Original location" -msgstr "" +msgstr "Ubicació original" #: shell32.rc:146 -#, fuzzy msgid "Date deleted" -msgstr "&Suprimir" +msgstr "Data suprimit" #: shell32.rc:156 msgid "Control Panel" -msgstr "" +msgstr "Panell de Control" #: shell32.rc:163 -#, fuzzy msgid "Select" -msgstr "Seleccionar &tot el text" +msgstr "Selecciona" #: shell32.rc:164 oleview.rc:99 msgid "Open" -msgstr "" +msgstr "Obre" #: shell32.rc:186 -#, fuzzy msgid "Restart" -msgstr "&Restauració" +msgstr "Reinicia" #: shell32.rc:187 msgid "Do you want to simulate a Windows reboot?" -msgstr "" +msgstr "Voleu simular un reinici de Windows?" #: shell32.rc:188 msgid "Shutdown" -msgstr "" +msgstr "Atura" #: shell32.rc:189 msgid "Do you want to shutdown your Wine session?" -msgstr "" +msgstr "Voleu aturar la vostre sessió de Wine?" #: shell32.rc:199 msgid "Start Menu\\Programs" -msgstr "" +msgstr "Menú d'Inici\\Programas" #: shell32.rc:201 msgid "Favorites" -msgstr "" +msgstr "Preferits" #: shell32.rc:202 msgid "Start Menu\\Programs\\StartUp" -msgstr "" +msgstr "Menú d'Inici\\Programas\\Inici" #: shell32.rc:203 msgid "Recent" -msgstr "" +msgstr "Recent" #: shell32.rc:204 msgid "SendTo" -msgstr "" +msgstr "Envia a" #: shell32.rc:205 msgid "Start Menu" -msgstr "" +msgstr "Menú d'Inici" #: shell32.rc:206 msgid "My Music" -msgstr "" +msgstr "La meva música" #: shell32.rc:207 msgid "My Videos" -msgstr "" +msgstr "Els meus vídeos" #: shell32.rc:208 msgctxt "directory" msgid "Desktop" -msgstr "" +msgstr "Escriptori" #: shell32.rc:209 msgid "NetHood" -msgstr "" +msgstr "Entorn de xarxa" #: shell32.rc:210 msgid "Templates" -msgstr "" +msgstr "Plantilles" #: shell32.rc:211 msgid "Application Data" -msgstr "" +msgstr "Dades de Programa" #: shell32.rc:212 msgid "PrintHood" -msgstr "" +msgstr "Veïnat d'impressió" #: shell32.rc:213 msgid "Local Settings\\Application Data" -msgstr "" +msgstr "Configuració Local\\Dades de Programa" #: shell32.rc:214 msgid "Local Settings\\Temporary Internet Files" -msgstr "" +msgstr "Configuració Local\\Arxius Temporals d'Internet" #: shell32.rc:215 msgid "Cookies" -msgstr "" +msgstr "Galetes" #: shell32.rc:216 msgid "Local Settings\\History" -msgstr "" +msgstr "Configuració Local\\Historial" #: shell32.rc:217 msgid "Program Files" -msgstr "" +msgstr "Fitxers de Programa" #: shell32.rc:219 msgid "My Pictures" -msgstr "" +msgstr "Les meves imatges" #: shell32.rc:220 msgid "Program Files\\Common Files" -msgstr "" +msgstr "Fitxers de Programa\\Fitxers Comuns" #: shell32.rc:222 shell32.rc:147 shell32.rc:244 msgid "Documents" -msgstr "" +msgstr "Documents" #: shell32.rc:223 msgid "Start Menu\\Programs\\Administrative Tools" -msgstr "" +msgstr "Menú d'Inici\\Programas\\Eines Administratives" #: shell32.rc:224 msgid "Music" -msgstr "" +msgstr "Música" #: shell32.rc:225 msgid "Pictures" -msgstr "" +msgstr "Imatges" #: shell32.rc:226 msgid "Videos" -msgstr "" +msgstr "Vídeos" #: shell32.rc:227 msgid "Local Settings\\Application Data\\Microsoft\\CD Burning" -msgstr "" +msgstr "Configuració Local\\Dades de Programa\\Microsoft\\Gravació de CD" #: shell32.rc:218 msgid "Program Files (x86)" -msgstr "" +msgstr "Fitxers de Programa (x86)" #: shell32.rc:221 msgid "Program Files (x86)\\Common Files" -msgstr "" +msgstr "Fitxers de Programa (x86)\\Fitxers Comuns" #: shell32.rc:228 msgid "Contacts" -msgstr "" +msgstr "Contactes" #: shell32.rc:229 winefile.rc:116 msgid "Links" -msgstr "" +msgstr "Enllaços" #: shell32.rc:230 msgid "Pictures\\Slide Shows" -msgstr "" +msgstr "Imatges\\Presentacions de Diapositives" #: shell32.rc:231 msgid "Music\\Playlists" -msgstr "" +msgstr "Música\\Llistes de Reproducció" #: shell32.rc:232 shell32.rc:245 msgid "Downloads" -msgstr "" +msgstr "Baixades" #: shell32.rc:148 taskmgr.rc:326 msgid "Status" -msgstr "" +msgstr "Estat" #: shell32.rc:149 msgid "Location" -msgstr "" +msgstr "Ubicació" #: shell32.rc:150 msgid "Model" -msgstr "" +msgstr "Model" #: shell32.rc:233 msgid "Microsoft\\Windows\\GameExplorer" -msgstr "" +msgstr "Microsoft\\Windows\\GameExplorer" #: shell32.rc:234 msgid "Microsoft\\Windows\\Libraries" -msgstr "" +msgstr "Microsoft\\Windows\\Biblioteques" #: shell32.rc:235 msgid "Microsoft\\Windows\\Ringtones" -msgstr "" +msgstr "Microsoft\\Windows\\Tons de Trucada" #: shell32.rc:236 msgid "Music\\Sample Music" -msgstr "" +msgstr "Música\\Mostra de Música" #: shell32.rc:237 msgid "Pictures\\Sample Pictures" -msgstr "" +msgstr "Imatges\\Mostra d'Imatges" #: shell32.rc:238 msgid "Music\\Sample Playlists" -msgstr "" +msgstr "Música\\Mostra de Llistes de Reproducció" #: shell32.rc:239 msgid "Videos\\Sample Videos" -msgstr "" +msgstr "Vídeos\\Mostra de Vídeos" #: shell32.rc:240 msgid "Saved Games" -msgstr "" +msgstr "Jocs Desats" #: shell32.rc:241 msgid "Searches" -msgstr "" +msgstr "Cercas" #: shell32.rc:242 msgid "Users" -msgstr "" +msgstr "Usuaris" #: shell32.rc:243 msgid "OEM Links" -msgstr "" +msgstr "Enllaços OEM" #: shell32.rc:246 msgid "AppData\\LocalLow" @@ -6454,31 +6566,31 @@ #: shell32.rc:166 msgid "Unable to create new Folder: Permission denied." -msgstr "" +msgstr "No es pot crear la nova carpeta: Permís denegat." #: shell32.rc:167 msgid "Error during creation of a new folder" -msgstr "" +msgstr "Error al crear nova carpeta" #: shell32.rc:168 msgid "Confirm file deletion" -msgstr "" +msgstr "Confirmar eliminació de fitxer" #: shell32.rc:169 msgid "Confirm folder deletion" -msgstr "" +msgstr "Confirmar eliminació de carpeta" #: shell32.rc:170 msgid "Are you sure you want to delete '%1'?" -msgstr "" +msgstr "Esteu segur que voleu suprimir '%1'?" #: shell32.rc:171 msgid "Are you sure you want to delete these %1 items?" -msgstr "" +msgstr "Esteu segur que voleu suprimir aquests %1 articles?" #: shell32.rc:178 msgid "Confirm file overwrite" -msgstr "" +msgstr "Confirmar sobreescriptura de fitxer" #: shell32.rc:177 msgid "" @@ -6486,27 +6598,32 @@ "\n" "Do you want to replace it?" msgstr "" +"Aquesta carpeta ja conté un fitxer anomenat '%1'.\n" +"\n" +"El voleu reemplaçar?" #: shell32.rc:172 msgid "Are you sure you want to delete the selected item(s)?" -msgstr "" +msgstr "Esteu segur que voleu suprimir el(s) article(s) seleccionat(s)?" #: shell32.rc:174 msgid "" "Are you sure that you want to send '%1' and all its content to the Trash?" msgstr "" +"Esteu segur que voleu enviar '%1' i tot el seu contingut a la Paperera?" #: shell32.rc:173 msgid "Are you sure that you want to send '%1' to the Trash?" -msgstr "" +msgstr "Esteu segur que voleu enviar '%1' a la Paperera?" #: shell32.rc:175 msgid "Are you sure that you want to send these %1 items to the Trash?" -msgstr "" +msgstr "Esteu segur que voleu enviar aquests %1 articles a la Paperera?" #: shell32.rc:176 msgid "The item '%1' can't be sent to Trash. Do you want to delete it instead?" msgstr "" +"L'article '%1' no es pot enviar a la Paperera. El voleu suprimir en lloc?" #: shell32.rc:183 msgid "" @@ -6516,42 +6633,49 @@ "selected folder they will be replaced. Do you still want to move or copy\n" "the folder?" msgstr "" +"Aquesta carpeta ja conté una carpeta anomenada '%1'.\n" +"\n" +"Si els fitxers en la carpeta de destinació tenen els mateixos noms que els\n" +"fitxers en la carpeta seleccionada seran reemplaçats. they will be " +"replaced.\n" +"Encara voleu moure o copiar la carpeta?" #: shell32.rc:248 msgid "New Folder" -msgstr "" +msgstr "Nova Carpeta" #: shell32.rc:250 msgid "Wine Control Panel" -msgstr "" +msgstr "Panell de Control de Wine" #: shell32.rc:192 msgid "Unable to display Run File dialog box (internal error)" -msgstr "" +msgstr "No es pot mostrar el quadre de diàleg Executar Fitxer (error intern)" #: shell32.rc:193 msgid "Unable to display Browse dialog box (internal error)" -msgstr "" +msgstr "No es pot mostrar el quadre de diàleg Navegar (error intern)" #: shell32.rc:195 msgid "Executable files (*.exe)" -msgstr "" +msgstr "Fitxers executables (*.exe)" #: shell32.rc:254 msgid "There is no Windows program configured to open this type of file." msgstr "" +"No hi ha cap programa de Windows configurat per obrir aquest tipus de fitxer." #: shell32.rc:256 msgid "Are you sure you wish to permanently delete '%1'?" -msgstr "" +msgstr "Esteu segur que voleu suprimir permanentment '%1'?" #: shell32.rc:257 msgid "Are you sure you wish to permanently delete these %1 items?" -msgstr "" +msgstr "Esteu segur que voleu suprimir permanentment aquests %1 articles?" #: shell32.rc:258 msgid "Confirm deletion" -msgstr "" +msgstr "Confirma eliminació" #: shell32.rc:259 msgid "" @@ -6559,6 +6683,9 @@ "\n" "Do you want to replace it?" msgstr "" +"Un fitxer ja existeix a la ruta %1.\n" +"\n" +"El voleu reemplaçar?" #: shell32.rc:260 msgid "" @@ -6566,10 +6693,13 @@ "\n" "Do you want to replace it?" msgstr "" +"Una carpeta ja existeix a la ruta %1.\n" +"\n" +"La voleu reemplaçar?" #: shell32.rc:261 msgid "Confirm overwrite" -msgstr "" +msgstr "Confirma sobreescriptura" #: shell32.rc:278 msgid "" @@ -6587,237 +6717,274 @@ "along with Wine; if not, write to the Free Software Foundation, Inc., 51 " "Franklin St, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" +"Wine és programari lliure, podeu redistribuir i/o modificar-lo sota els " +"termes de la Llicència Pública General Menor GNU com publicada per la Free " +"Software Foundation; o la versió 2.1 de la Llicència, o (a la seva elecció) " +"qualsevol versió posterior.\n" +"\n" +"Wine es distribueix en l'esperança que sigui útil, però SENSE CAP GARANTIA, " +"fins i tot sense la garantia implícita de COMERCIABILITAT o APTITUD PER A " +"PROPÒSITS DETERMINATS. Consulteu la Llicència Pública General Menor GNU per " +"més detalls.\n" +"\n" +"Hauríeu d'haver rebut una còpia de la Llicència Pública General Menor GNU " +"juntament amb Wine, si no, escriviu a la Free Software Foundation, Inc., 51 " +"Franklin St, Fifth Floor, Boston, MA 02110-1301, EUA." #: shell32.rc:266 msgid "Wine License" -msgstr "" +msgstr "Llicència de Wine" #: shell32.rc:155 msgid "Trash" -msgstr "" +msgstr "Paperera" #: shlwapi.rc:27 -msgid "%ld bytes" -msgstr "" +msgid "%d bytes" +msgstr "%d bytes" #: shlwapi.rc:28 msgctxt "time unit: hours" msgid " hr" -msgstr "" +msgstr " hr" #: shlwapi.rc:29 msgctxt "time unit: minutes" msgid " min" -msgstr "" +msgstr " min" #: shlwapi.rc:30 msgctxt "time unit: seconds" msgid " sec" -msgstr "" +msgstr " sec" #: user32.rc:27 user32.rc:40 taskmgr.rc:138 -#, fuzzy msgctxt "window" msgid "&Restore" -msgstr "&Restauració" +msgstr "&Restaura" #: user32.rc:28 user32.rc:41 -#, fuzzy msgid "&Move" -msgstr "&Desplaçament" +msgstr "&Mou" #: user32.rc:29 user32.rc:42 -#, fuzzy msgid "&Size" -msgstr "&Grandària" +msgstr "&Mida" #: user32.rc:30 user32.rc:43 -#, fuzzy msgid "Mi&nimize" -msgstr "Mí&nima" +msgstr "Mí&nimitza" #: user32.rc:31 user32.rc:44 taskmgr.rc:83 taskmgr.rc:99 taskmgr.rc:126 msgid "Ma&ximize" -msgstr "Mà&xima" +msgstr "Mà&ximitza" #: user32.rc:33 -#, fuzzy msgid "&Close\tAlt-F4" -msgstr "&Tancar\tAlt-F4" +msgstr "&Tanca\tAlt-F4" #: user32.rc:35 -#, fuzzy msgid "&About Wine" msgstr "&Quant a Wine..." #: user32.rc:46 -#, fuzzy msgid "&Close\tCtrl-F4" -msgstr "&Tancar\tAlt-F4" +msgstr "&Tanca\tCtrl-F4" #: user32.rc:48 msgid "Nex&t\tCtrl-F6" -msgstr "" +msgstr "Proper\tC&trl-F6" #: user32.rc:68 regedit.rc:176 winecfg.rc:90 winefile.rc:100 msgid "Error" -msgstr "" +msgstr "Error" #: user32.rc:69 -#, fuzzy msgid "&More Windows..." -msgstr "&Quant a Wine..." +msgstr "&Més finestres..." #: wininet.rc:25 msgid "LAN Connection" -msgstr "" +msgstr "Connexió LAN" #: wininet.rc:26 msgid "The certificate is issued by an unknown or untrusted publisher." -msgstr "" +msgstr "El certificat és emès per un editor desconegut o no fiable." #: wininet.rc:27 msgid "The date on the certificate is invalid." -msgstr "" +msgstr "La data en el certificat no és vàlid." #: wininet.rc:28 msgid "The name on the certificate does not match the site." -msgstr "" +msgstr "El nom en el certificat no coincideix amb el lloc." #: wininet.rc:29 msgid "" "There is at least one unspecified security problem with this certificate." msgstr "" +"Hi ha almenys un problema de seguretat no especificat amb aquest certificat." #: winmm.rc:28 msgid "The specified command was carried out." -msgstr "" +msgstr "La comanda especificada s'ha realitzat." #: winmm.rc:29 msgid "Undefined external error." -msgstr "" +msgstr "Error extern indefinit." #: winmm.rc:30 msgid "A device ID has been used that is out of range for your system." msgstr "" +"Un ID de dispositiu s'ha usat que està fora de l'abast del vostre sistema." #: winmm.rc:31 msgid "The driver was not enabled." -msgstr "" +msgstr "El controlador no estava habilitat." #: winmm.rc:32 msgid "" "The specified device is already in use. Wait until it is free, and then try " "again." msgstr "" +"El dispositiu especificat ja està en ús. Espereu fins que estigui lliure, i " +"llavors torneu a intentar." #: winmm.rc:33 msgid "The specified device handle is invalid." -msgstr "" +msgstr "El mànec del dispositiu especificada no és vàlid." #: winmm.rc:34 msgid "There is no driver installed on your system!\n" -msgstr "" +msgstr "No hi ha cap controlador instalat en el vostre sistema!\n" #: winmm.rc:35 msgid "" "Not enough memory available for this task. Quit one or more applications to " "increase available memory, and then try again." msgstr "" +"No hi ha prou memòria disponible per a aquesta tasca. Tanca un o més " +"aplicacions per augmentar la memòria disponible i llavors torneu a intentar." #: winmm.rc:36 msgid "" "This function is not supported. Use the Capabilities function to determine " "which functions and messages the driver supports." msgstr "" +"Aquesta funció no és compatible. Useu la funció Capacitats per determinar " +"quines funcions i missatges són compatibles amb el controlador." #: winmm.rc:37 msgid "An error number was specified that is not defined in the system." -msgstr "" +msgstr "Un nombre d'error s'ha especificat que no està definit en el sistema." #: winmm.rc:38 msgid "An invalid flag was passed to a system function." -msgstr "" +msgstr "Una bandera invàlid s'ha passat a una funció de sistema." #: winmm.rc:39 msgid "An invalid parameter was passed to a system function." -msgstr "" +msgstr "Un paràmetre invàlid s'ha passat a una funció de sistema." #: winmm.rc:42 msgid "" "The specified format is not supported or cannot be translated. Use the " "Capabilities function to determine the supported formats." msgstr "" +"El format especificat no és compatible o no es pot traduir. Useu la funció " +"Capacitats per determinar els formats compatibles." #: winmm.rc:43 winmm.rc:49 msgid "" "Cannot perform this operation while media data is still playing. Reset the " "device, or wait until the data is finished playing." msgstr "" +"No es pot realitzar aquesta operació mentre que les dades de mèdia encara " +"s'estan reproduint. Restabligueu el dispositiu, o espereu fins que les dades " +"terminin de reproduir." #: winmm.rc:44 msgid "" "The wave header was not prepared. Use the Prepare function to prepare the " "header, and then try again." msgstr "" +"La capçalera de les ones no estava preparada. Useu la funció Preparar per " +"preparar la capçalera, i llavors torneu a intentar." #: winmm.rc:45 msgid "" "Cannot open the device without using the WAVE_ALLOWSYNC flag. Use the flag, " "and then try again." msgstr "" +"No es pot obrir el dispositiu sense usar la bandera WAVE_ALLOWSYNC. Useu la " +"bandera i llavors torneu a intentar." #: winmm.rc:48 msgid "" "The MIDI header was not prepared. Use the Prepare function to prepare the " "header, and then try again." msgstr "" +"La capçalera MIDI no estava preparada. Useu la funció Preparar per preparar " +"la capçalera, i llavors torneu a intentar." #: winmm.rc:50 msgid "" "A MIDI map was not found. There may be a problem with the driver, or the " "MIDIMAP.CFG file may be corrupt or missing." msgstr "" +"Un mapa MIDI no s'ha trobat. Hi pot haver un problema amb el controlador, o " +"pot que el fitxer MIDIMAP.CFG estigui danyat o falti." #: winmm.rc:51 msgid "" "The port is transmitting data to the device. Wait until the data has been " "transmitted, and then try again." msgstr "" +"El port està transmetent dades al dispositiu. Espereu fins que les dades " +"s'han transmès i llavors torneu a intentar." #: winmm.rc:52 msgid "" "The current MIDI Mapper setup refers to a MIDI device that is not installed " "on the system. Use MIDI Mapper to edit the setup." msgstr "" +"La configuració actual de MIDI Mapper refereix a un dispositiu MIDI que no " +"està instal·lat en el sistema. Useu MIDI Mapper per editar la configuració." #: winmm.rc:53 msgid "" "The current MIDI setup is damaged. Copy the original MIDIMAP.CFG file to the " "Windows SYSTEM directory, and then try again." msgstr "" +"La configuració MIDI actual està danyat. Copieu el fitxer MIDIMAP.CFG " +"original al directori SYSTEM de Windows, i llavors torneu a intentar." #: winmm.rc:56 msgid "Invalid MCI device ID. Use the ID returned when opening the MCI device." msgstr "" +"ID de dispositiu MCI invàlida. Useu la ID retornada al obrir el dispositiu " +"MCI." #: winmm.rc:57 msgid "The driver cannot recognize the specified command parameter." -msgstr "" +msgstr "El controlador no pot reconèixer el paràmetre d'ordre especificat." #: winmm.rc:58 msgid "The driver cannot recognize the specified command." -msgstr "" +msgstr "El controlador no pot reconèixer l'ordre especificat." #: winmm.rc:59 msgid "" "There is a problem with your media device. Make sure it is working correctly " "or contact the device manufacturer." msgstr "" +"Hi ha un problema amb el vostre dispositiu de mèdia. Assegureu-vos que " +"estigui funcionant correctament o poseu-vos en contacte amb el fabricant del " +"dispositiu." #: winmm.rc:60 msgid "The specified device is not open or is not recognized by MCI." -msgstr "" +msgstr "El dispositiu especificat no està obert o MCI no el reconeix." #: winmm.rc:61 msgid "" @@ -6825,314 +6992,409 @@ "Quit one or more applications to increase available memory, and then try " "again." msgstr "" +"No hi ha prou memòria disponible per a aquesta tasca.\n" +"Tanca un o més aplicacions per augmentar la memòria disponible i llavors " +"torneu a intentar." #: winmm.rc:62 msgid "" "The device name is already being used as an alias by this application. Use a " "unique alias." msgstr "" +"El nom de dispositiu ja s'usa com un àlies d'aquesta aplicació. Useu un " +"àlies únic." #: winmm.rc:63 msgid "" "There is an undetectable problem in loading the specified device driver." msgstr "" +"Hi ha un problema no detectable en carregar el controlador de dispositiu " +"especificat." #: winmm.rc:64 msgid "No command was specified." -msgstr "" +msgstr "No s'ha especificat un ordre." #: winmm.rc:65 msgid "" "The output string was too large to fit in the return buffer. Increase the " "size of the buffer." msgstr "" +"La cadena de sortida estava massa gran per cabre en la memòria intermèdia de " +"retorn. Augmenteu la mida de la memòria intermèdia." #: winmm.rc:66 msgid "" "The specified command requires a character-string parameter. Please provide " "one." msgstr "" +"El ordre especificat requereix un paràmetre de cadena de caràcters. Si us " +"plau, proporcioneu un." #: winmm.rc:67 msgid "The specified integer is invalid for this command." -msgstr "" +msgstr "El nombre enter especificat es invàlid per aquest ordre." #: winmm.rc:68 msgid "" "The device driver returned an invalid return type. Check with the device " "manufacturer about obtaining a new driver." msgstr "" +"El controlador de dispositiu ha donat un tipus de retorn invàlid. Consulteu " +"amb el fabricant del dispositiu sobre com obtenir un controlador nou." #: winmm.rc:69 msgid "" "There is a problem with the device driver. Check with the device " "manufacturer about obtaining a new driver." msgstr "" +"Hi ha un problema amb el controlador de dispositiu. Consulteu amb el " +"fabricant del dispositiu sobre com obtenir un controlador nou." #: winmm.rc:70 msgid "The specified command requires a parameter. Please supply one." msgstr "" +"El ordre especificat requereix un paràmetre. Si us plau, proporcioneu un." #: winmm.rc:71 msgid "The MCI device you are using does not support the specified command." -msgstr "" +msgstr "El dispositiu MCI que useu no és compatible amb el ordre especificat." #: winmm.rc:72 msgid "" "Cannot find the specified file. Make sure the path and filename are correct." msgstr "" +"No es pot trobar el fitxer especificat. Assegureu-vos que la ruta i el nom " +"siguin correctes." #: winmm.rc:73 msgid "The device driver is not ready." -msgstr "" +msgstr "El controlador de dispositiu no està llest." #: winmm.rc:74 msgid "A problem occurred in initializing MCI. Try restarting Windows." -msgstr "" +msgstr "Ha hagut un problema en inicialitzar MCI. Proveu a reiniciar Windows." #: winmm.rc:75 msgid "" "There is a problem with the device driver. The driver has closed. Cannot " "access error." msgstr "" +"Hi ha un problema amb el controlador de dispositiu. El conductor s'ha " +"tancat. Error d'incapacitat d'accedir." #: winmm.rc:76 msgid "Cannot use 'all' as the device name with the specified command." msgstr "" +"No es pot usar 'all' com el nom del dispositiu amb l'ordre especificat." #: winmm.rc:77 msgid "" "Errors occurred in more than one device. Specify each command and device " "separately to determine which devices caused the error." msgstr "" +"S'han produït errors en més d'un dispositiu. Especifiqueu cada ordre i " +"dispositiu separadament per determinar quals dispositius han causat l'error." #: winmm.rc:78 msgid "Cannot determine the device type from the given filename extension." msgstr "" +"No es pot determinar el tipus de dispositiu de l'extensió del nom de fitxer " +"donat." #: winmm.rc:79 msgid "The specified parameter is out of range for the specified command." -msgstr "" +msgstr "El paràmetre especificat està fora del rang per l'ordre especificat." #: winmm.rc:80 msgid "The specified parameters cannot be used together." -msgstr "" +msgstr "Els paràmetres especificats no es poden usar juntament." #: winmm.rc:81 msgid "" "Cannot save the specified file. Make sure you have enough disk space or are " "still connected to the network." msgstr "" +"No es pot desar el fitxer especificat. Assegureu-vos que tinguis espai " +"suficient en disc o que encara estigui connectat a la xarxa." #: winmm.rc:82 msgid "" "Cannot find the specified device. Make sure it is installed or that the " "device name is spelled correctly." msgstr "" +"No es pot trobar el dispositiu especificat. Assegureu-vos que estigui " +"instal·lat o que el nom del dispositiu estigui escrit correctament." #: winmm.rc:83 msgid "" "The specified device is now being closed. Wait a few seconds, and then try " "again." msgstr "" +"El dispositiu especificat s'està tancant. Espereu uns segons i llavors " +"torneu a intentar." #: winmm.rc:84 msgid "" "The specified alias is already being used in this application. Use a unique " "alias." -msgstr "" +msgstr "L'àlies especificat ja s'usa en aquesta aplicació. Useu un àlies únic." #: winmm.rc:85 msgid "The specified parameter is invalid for this command." -msgstr "" +msgstr "El paràmetre especificat no és vàlid per aquest ordre." #: winmm.rc:86 msgid "" "The device driver is already in use. To share it, use the 'shareable' " "parameter with each 'open' command." msgstr "" +"El controlador de dispositiu ja està en ús. Per compartir-lo, useu el " +"paràmetre 'shareable' amb cada ordre 'open'." #: winmm.rc:87 msgid "" "The specified command requires an alias, file, driver, or device name. " "Please supply one." msgstr "" +"El ordre especificat requereix un àlies, fitxer, controlador, o nom de " +"dispositiu. Si us plau, proporcioneu un." #: winmm.rc:88 msgid "" "The specified value for the time format is invalid. Refer to the MCI " "documentation for valid formats." msgstr "" +"El valor especificat pel format d'hora no és vàlid. Consulteu la " +"documentació de MCI pels formats vàlids." #: winmm.rc:89 msgid "" "A closing double-quotation mark is missing from the parameter value. Please " "supply one." msgstr "" +"Falta una cometa doble tancant del valor de paràmetre. Si us plau, " +"proporcioneu una." #: winmm.rc:90 msgid "A parameter or value was specified twice. Only specify it once." msgstr "" +"Un paràmetre o valor s'ha especificat dues vegades. Només especificeu-lo una " +"vegada." #: winmm.rc:91 msgid "" "The specified file cannot be played on the specified MCI device. The file " "may be corrupt, or not in the correct format." msgstr "" +"No es pot reproduir el fitxer especificat en el dispositiu MCI especificat. " +"Pot que el fitxer estigui danyat o no en el format correcte." #: winmm.rc:92 msgid "A null parameter block was passed to MCI." -msgstr "" +msgstr "Un bloc de paràmetres nul s'ha passat a MCI." #: winmm.rc:93 msgid "Cannot save an unnamed file. Supply a filename." -msgstr "" +msgstr "No es pot desar un fitxer sense nom. Proporcioneu un nom de fitxer." #: winmm.rc:94 msgid "You must specify an alias when using the 'new' parameter." -msgstr "" +msgstr "Heu d'especificar un àlies quan s'usa el paràmetre 'new'." #: winmm.rc:95 msgid "Cannot use the 'notify' flag with auto-opened devices." msgstr "" +"No es pot usar la bandera 'notify' amb els dispositius oberts automàticament." #: winmm.rc:96 msgid "Cannot use a filename with the specified device." -msgstr "" +msgstr "No es pot usar un nom de fitxer amb el dispositiu especificat." #: winmm.rc:97 msgid "" "Cannot carry out the commands in the order specified. Correct the command " "sequence, and then try again." msgstr "" +"No es pot dur a terme els ordres en l'ordre especificat. Corregiu la " +"seqüència de ordres i llavors torneu a intentar." #: winmm.rc:98 msgid "" "Cannot carry out the specified command on an auto-opened device. Wait until " "the device is closed, and then try again." msgstr "" +"No es pot dur a terme l'ordre especificat en un dispositiu obert " +"automàticament. Espereu fins que es tanqui el dispositiu i llavors torneu a " +"intentar." #: winmm.rc:99 msgid "" "The filename is invalid. Make sure the filename is not longer than 8 " "characters, followed by a period and an extension." msgstr "" +"El nom de fitxer és invàlida. Assegureu-vos que el nom del fitxer no estigui " +"més llarg de 8 caràcters, seguit d'un període i una extensió." #: winmm.rc:100 msgid "" "Cannot specify extra characters after a string enclosed in quotation marks." msgstr "" +"No es pot especificar caràcters addicionals després d'una cadena entre " +"cometes." #: winmm.rc:101 msgid "" "The specified device is not installed on the system. Use the Drivers option " "in Control Panel to install the device." msgstr "" +"El dispositiu especificat no està instal·lat al sistema. Useu l'opció " +"Controladors al Panell de Control per instal·lar el dispositiu." #: winmm.rc:102 msgid "" "Cannot access the specified file or MCI device. Try changing directories or " "restarting your computer." msgstr "" +"No es pot accedir al fitxer o dispositiu MCI. Intenteu canviar els " +"directoris o reiniciar l'equip." #: winmm.rc:103 msgid "" "Cannot access the specified file or MCI device because the application " "cannot change directories." msgstr "" +"No es pot accedir al fitxer o dispositiu MCI perquè l'aplicació no pot " +"canviar de directori." #: winmm.rc:104 msgid "" "Cannot access specified file or MCI device because the application cannot " "change drives." msgstr "" +"No es pot accedir al fitxer o dispositiu MCI perquè l'aplicació no pot " +"canviar d'unitat." #: winmm.rc:105 msgid "Specify a device or driver name that is less than 79 characters." msgstr "" +"Especifiqueu un nom de dispositiu o controlador que estigui menys de 79 " +"caràcters." #: winmm.rc:106 msgid "Specify a device or driver name that is less than 69 characters." msgstr "" +"Especifiqueu un nom de dispositiu o controlador que estigui menys de 69 " +"caràcters." #: winmm.rc:107 msgid "" "The specified command requires an integer parameter. Please provide one." msgstr "" +"El ordre especificat requereix un paràmetre de nombre sencer. Si us plau, " +"proporcioneu un." #: winmm.rc:108 msgid "" "All wave devices that can play files in the current format are in use. Wait " "until a wave device is free, and then try again." msgstr "" +"Tots els dispositius d'ones que poden reproduir els fitxers del format " +"actual estan en ús. Espereu fins que un dispositiu d'ona estigui lliure i " +"llavors torneu a intentar." #: winmm.rc:109 msgid "" "Cannot set the current wave device for play back because it is in use. Wait " "until the device is free, and then try again." msgstr "" +"No es pot configurar el dispositiu d'ona actual per la reproducció perquè " +"està en ús. Espereu fins que el dispositiu estigui lliure i llavors torneu a " +"intentar." #: winmm.rc:110 msgid "" "All wave devices that can record files in the current format are in use. " "Wait until a wave device is free, and then try again." msgstr "" +"Tots els dispositius d'ona que poden gravar fitxers en el format actual " +"estan en ús. Espereu fins que un dispositiu d'ona estigui lliure, i llavors " +"torneu a intentar." #: winmm.rc:111 msgid "" "Cannot set the current wave device for recording because it is in use. Wait " "until the device is free, and then try again." msgstr "" +"No es pot configurar el dispositiu d'ona actual per a la gravació perquè ja " +"està en ús. Espereu que el dispositiu estigui lliure i llavors torneu a " +"intentar." #: winmm.rc:112 msgid "Any compatible waveform playback device may be used." msgstr "" +"Qualsevol dispositiu de reproducció de formas d'ona compatible es pot usar." #: winmm.rc:113 msgid "Any compatible waveform recording device may be used." msgstr "" +"Qualsevol dispositiu de gravació de formas d'ona compatible es pot usar." #: winmm.rc:114 msgid "" "No wave device that can play files in the current format is installed. Use " "the Drivers option to install the wave device." msgstr "" +"Cap dispositiu d'ona que pugui reproduir els fitxers del format actual està " +"instal·lat. Useu l'opció Controladors per instal·lar el dispositiu d'ona." #: winmm.rc:115 msgid "" "The device you are trying to play to cannot recognize the current file " "format." msgstr "" +"El dispositiu de que està intentant reproduir no pot reconèixer el format de " +"fitxer actual." #: winmm.rc:116 msgid "" "No wave device that can record files in the current format is installed. Use " "the Drivers option to install the wave device." msgstr "" +"Cap dispositiu d'ona que pugui gravar els fitxers del format actual està " +"instal·lat. Useu l'opció Controladors per instal·lar el dispositiu d'ona." #: winmm.rc:117 msgid "" "The device you are trying to record from cannot recognize the current file " "format." msgstr "" +"El dispositiu de que està intentant gravar no pot reconèixer el format de " +"fitxer actual." #: winmm.rc:122 msgid "" "The time formats of the \"song pointer\" and SMPTE are mutually exclusive. " "You can't use them together." msgstr "" +"Els formats d'hora de la \"punter de cançó\" i SMPTE són mútuament excloents." +"No es poden usar junts." #: winmm.rc:124 msgid "" "The specified MIDI port is already in use. Wait until it is free; then try " "again." msgstr "" +"El port MIDI especificat ja està en ús. Espereu fins que estigui lliure; " +"llavors torneu a intentar." #: winmm.rc:127 msgid "" "The specified MIDI device is not installed on the system. Use the Drivers " "option from the Control Panel to install a MIDI device." msgstr "" +"El dispositiu MIDI especificat no està instal·lat al sistema. Utilitzeu " +"l'opció Controladors al Panell de Control per instal·lar un dispositiu MIDI." #: winmm.rc:125 msgid "" @@ -7140,304 +7402,319 @@ "on the system. Use the MIDI Mapper option from the Control Panel to edit the " "setup." msgstr "" +"La configuració actual de MIDI Mapper es refereix a un dispositiu MIDI que " +"no està instal·lat al sistema. Utilitzeu l'opció MIDI Mapper del Panell de " +"Control per modificar la configuració." #: winmm.rc:126 msgid "An error occurred with the specified port." -msgstr "" +msgstr "Ha hagut un error amb el port especificat." #: winmm.rc:129 msgid "" "All multimedia timers are being used by other applications. Quit one of " "these applications; then, try again." msgstr "" +"Les altres aplicacions estan usant tots els temporitzadors multimèdia. " +"Tanqueu una d'aquestes aplicacions; llavors, torni a intentar." #: winmm.rc:128 msgid "The system doesn't have a current MIDI port specified." -msgstr "" +msgstr "El sistema no té un port MIDI actual especificat." #: winmm.rc:123 msgid "" "The system has no installed MIDI devices. Use the Drivers option from the " "Control Panel to install a MIDI driver." msgstr "" +"El sistema no té cap dispositiu MIDI instal·lat. Useu l'opció Controladors " +"del Panell de Control per instal·lar un controlador MIDI." #: winmm.rc:118 msgid "There is no display window." -msgstr "" +msgstr "No hi ha cap finestra de mostra." #: winmm.rc:119 msgid "Could not create or use window." -msgstr "" +msgstr "No es pot crear o usar la finestra." #: winmm.rc:120 msgid "" "Cannot read the specified file. Make sure the file is still present, or " "check your disk or network connection." msgstr "" +"No es pot llegir ex fitxer especificat. Assegureu-vos que el fitxer encara " +"estigui present, o comproveu el disc o connexió de xarxa." #: winmm.rc:121 msgid "" "Cannot write to the specified file. Make sure you have enough disk space or " "are still connected to the network." msgstr "" +"No es pot escriure al fitxer especificat. Assegureu-vos que tingui espai " +"suficient de disc o que encara estigui connectat a la xarxa." #: winspool.rc:28 msgid "The output file already exists. Click OK to overwrite." msgstr "" +"El fitxer destinatari ja existeix. Feu clic en D'acord per sobreescriure." #: winspool.rc:29 msgid "Unable to create the output file." -msgstr "" +msgstr "No es pot crear el fitxer destinatari." #: wldap32.rc:27 msgid "Success" -msgstr "" +msgstr "Èxit" #: wldap32.rc:28 msgid "Operations Error" -msgstr "" +msgstr "Error d'Operacions" #: wldap32.rc:29 msgid "Protocol Error" -msgstr "" +msgstr "Error de Protocol" #: wldap32.rc:30 msgid "Time Limit Exceeded" -msgstr "" +msgstr "Límit de Temps Superat" #: wldap32.rc:31 msgid "Size Limit Exceeded" -msgstr "" +msgstr "Límit de Mida Superat" #: wldap32.rc:32 msgid "Compare False" -msgstr "" +msgstr "Comparasió Falsa" #: wldap32.rc:33 msgid "Compare True" -msgstr "" +msgstr "Comparasió Veritable" #: wldap32.rc:34 msgid "Authentication Method Not Supported" -msgstr "" +msgstr "Mètode de Connexió No Compatible" #: wldap32.rc:35 msgid "Strong Authentication Required" -msgstr "" +msgstr "Autenticació Forta Requerida" #: wldap32.rc:36 msgid "Referral (v2)" -msgstr "" +msgstr "Referència (v2)" #: wldap32.rc:37 msgid "Referral" -msgstr "" +msgstr "Referència" #: wldap32.rc:38 msgid "Administration Limit Exceeded" -msgstr "" +msgstr "Límit de Administració Superat" #: wldap32.rc:39 msgid "Unavailable Critical Extension" -msgstr "" +msgstr "Extensió Critical No Disponible" #: wldap32.rc:40 msgid "Confidentiality Required" -msgstr "" +msgstr "Confidencialitat Requerida" #: wldap32.rc:43 msgid "No Such Attribute" -msgstr "" +msgstr "Cap Atribut Aixì" #: wldap32.rc:44 msgid "Undefined Type" -msgstr "" +msgstr "Tipus No Definit" #: wldap32.rc:45 msgid "Inappropriate Matching" -msgstr "" +msgstr "Coincidència No Apropiada" #: wldap32.rc:46 msgid "Constraint Violation" -msgstr "" +msgstr "Violació de Restricció" #: wldap32.rc:47 msgid "Attribute Or Value Exists" -msgstr "" +msgstr "L'Atribut o Valor Existeix" #: wldap32.rc:48 msgid "Invalid Syntax" -msgstr "" +msgstr "Sintaxi Invàlida" #: wldap32.rc:59 msgid "No Such Object" -msgstr "" +msgstr "Cap Objecte Aixì" #: wldap32.rc:60 msgid "Alias Problem" -msgstr "" +msgstr "Problema de Àlies" #: wldap32.rc:61 msgid "Invalid DN Syntax" -msgstr "" +msgstr "Sintaxi DN Invàlida" #: wldap32.rc:62 msgid "Is Leaf" -msgstr "" +msgstr "Es Full" #: wldap32.rc:63 msgid "Alias Dereference Problem" -msgstr "" +msgstr "Problema de Desreferència d'Àlies" #: wldap32.rc:75 msgid "Inappropriate Authentication" -msgstr "" +msgstr "Autenticació No Apropiada" #: wldap32.rc:76 msgid "Invalid Credentials" -msgstr "" +msgstr "Credencials Invàlids" #: wldap32.rc:77 msgid "Insufficient Rights" -msgstr "" +msgstr "Drets Insuficients" #: wldap32.rc:78 msgid "Busy" -msgstr "" +msgstr "Ocupat" #: wldap32.rc:79 msgid "Unavailable" -msgstr "" +msgstr "No Disponible" #: wldap32.rc:80 msgid "Unwilling To Perform" -msgstr "" +msgstr "No Disposat a Realitzar" #: wldap32.rc:81 msgid "Loop Detected" -msgstr "" +msgstr "Bucle Detectat" #: wldap32.rc:87 msgid "Sort Control Missing" -msgstr "" +msgstr "Falta el Control d'Ordenació" #: wldap32.rc:88 msgid "Index range error" -msgstr "" +msgstr "Error de rang d'índex" #: wldap32.rc:91 msgid "Naming Violation" -msgstr "" +msgstr "Violació de Noms" #: wldap32.rc:92 msgid "Object Class Violation" -msgstr "" +msgstr "Violació de Classe de Objecte" #: wldap32.rc:93 msgid "Not allowed on Non-leaf" -msgstr "" +msgstr "Només es permet en ells Fulls" #: wldap32.rc:94 msgid "Not allowed on RDN" -msgstr "" +msgstr "No es permet en RDN" #: wldap32.rc:95 msgid "Already Exists" -msgstr "" +msgstr "Ja Existeix" #: wldap32.rc:96 msgid "No Object Class Mods" -msgstr "" +msgstr "Cap Modificador de Classe de Objecte" #: wldap32.rc:97 msgid "Results Too Large" -msgstr "" +msgstr "Resultats Massa Grans" #: wldap32.rc:98 msgid "Affects Multiple DSAs" -msgstr "" +msgstr "Afecta DSAs Múltiples" #: wldap32.rc:107 msgid "Other" -msgstr "" +msgstr "Altre" #: wldap32.rc:108 msgid "Server Down" -msgstr "" +msgstr "Servidor Fora de Línia" #: wldap32.rc:109 msgid "Local Error" -msgstr "" +msgstr "Error Local" #: wldap32.rc:110 msgid "Encoding Error" -msgstr "" +msgstr "Error en Codifiar" #: wldap32.rc:111 msgid "Decoding Error" -msgstr "" +msgstr "Error en Descodificar" #: wldap32.rc:112 msgid "Timeout" -msgstr "" +msgstr "Temps d'Espera Superat" #: wldap32.rc:113 msgid "Auth Unknown" -msgstr "" +msgstr "Autenticació Desconeguda" #: wldap32.rc:114 msgid "Filter Error" -msgstr "" +msgstr "Error de Filtre" #: wldap32.rc:115 msgid "User Cancelled" -msgstr "" +msgstr "Cancel·lat per Usuari" #: wldap32.rc:116 msgid "Parameter Error" -msgstr "" +msgstr "Error de Paràmetre" #: wldap32.rc:117 msgid "No Memory" -msgstr "" +msgstr "Cap Memòria" #: wldap32.rc:118 msgid "Can't connect to the LDAP server" -msgstr "" +msgstr "No es pot connectar al servidor LDAP" #: wldap32.rc:119 msgid "Operation not supported by this version of the LDAP protocol" -msgstr "" +msgstr "Operació no compatible amb aquesta versió del protocol LDAP" #: wldap32.rc:120 msgid "Specified control was not found in message" -msgstr "" +msgstr "No s'ha trobat El control especificat en el missatge" #: wldap32.rc:121 msgid "No result present in message" -msgstr "" +msgstr "Cap resultat present en el missatge" #: wldap32.rc:122 msgid "More results returned" -msgstr "" +msgstr "Més resultats retornats" #: wldap32.rc:123 msgid "Loop while handling referrals" -msgstr "" +msgstr "Cicla mentras processant referències" #: wldap32.rc:124 msgid "Referral hop limit exceeded" -msgstr "" +msgstr "Lìmit de salta de referències superat" #: attrib.rc:27 cmd.rc:299 msgid "" "Not Yet Implemented\n" "\n" msgstr "" +"Encara no Implementat\n" +"\n" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" -msgstr "" +#: attrib.rc:28 +#, fuzzy +msgid "%1: File Not Found\n" +msgstr "%s: Fitxer No Trobat\n" #: attrib.rc:47 msgid "" @@ -7460,43 +7737,62 @@ " /S Processes matching files in the current folder and all subfolders.\n" " /D Processes folders as well.\n" msgstr "" +"ATTRIB - Mostra o canvia els atributs dels fitxers.\n" +"\n" +"Sintaxi:\n" +"ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [unitat:][ruta][nom de " +"fitxer]\n" +" [/S [/D]]\n" +"\n" +"On:\n" +"\n" +" + Estableix un atribut.\n" +" - Esborra un atribut.\n" +" R Atribut de fitxer només lectura.\n" +" A Atribut de fitxer archiu.\n" +" S Atribut de fitxer sistema.\n" +" H Atribut de fitxer amagat.\n" +" [unitat:][ruta][nom de fitxer]\n" +" Especifica un fitxer o uns fitxers que ATTRIB processaran.\n" +" /S Processa fitxers coincidents a la carpeta actual i totes les " +"subcarpetes.\n" +" /D Processa les carpetes també.\n" #: clock.rc:29 msgid "Ana&log" -msgstr "" +msgstr "Ana&lògic" #: clock.rc:30 msgid "Digi&tal" -msgstr "" +msgstr "Digi&tal" #: clock.rc:32 notepad.rc:50 winefile.rc:64 wordpad.rc:81 msgid "&Font..." -msgstr "" +msgstr "&Tipus de lletra..." #: clock.rc:34 msgid "&Without Titlebar" -msgstr "" +msgstr "Sense &Barra de Títol" #: clock.rc:36 msgid "&Seconds" -msgstr "" +msgstr "&Segons" #: clock.rc:37 msgid "&Date" -msgstr "" +msgstr "&Data" #: clock.rc:39 taskmgr.rc:43 taskmgr.rc:141 msgid "&Always on Top" -msgstr "" +msgstr "Sempre &Amunt" #: clock.rc:42 -#, fuzzy msgid "&About Clock" -msgstr "&Quant a Wine..." +msgstr "&Quant a Rellotge..." #: clock.rc:48 msgid "Clock" -msgstr "" +msgstr "Rellotge" #: cmd.rc:37 msgid "" @@ -7508,40 +7804,49 @@ "Changes to default directory, environment variables etc made within a\n" "called procedure are inherited by the caller.\n" msgstr "" +"CALL s'utilitza dins d'un fitxer batch per executar\n" +"ordres d'un altre fitxer batch. Cuan es surt del fitxer batch, el control\n" +"retorna al fitxer que l'ha trucat. El ordre CALL pot proporcionar\n" +"paràmetres al procediment trucat.\n" +"\n" +"El procediment trucant hereta els canvis al directori predeterminat,\n" +"variables d'entorn etc. fets dins d'un procediment trucat.\n" #: cmd.rc:40 msgid "" "CD is the short version of CHDIR. It changes the current\n" "default directory.\n" msgstr "" +"CD és la versió curta de CHDIR. Canvia el directori predeterminat\n" +"actual.\n" #: cmd.rc:41 msgid "CHDIR changes the current default directory.\n" -msgstr "" +msgstr "CHDIR canvia el directori predeterminat actual.\n" #: cmd.rc:43 msgid "CLS clears the console screen.\n" -msgstr "" +msgstr "CLS esborra la pantalla de la consola.\n" #: cmd.rc:45 msgid "COPY copies a file.\n" -msgstr "" +msgstr "COPY copia un fitxer.\n" #: cmd.rc:46 msgid "CTTY changes the input/output device.\n" -msgstr "" +msgstr "CTTY canvia el dispositiu d'entrada/sortida\n" #: cmd.rc:47 msgid "DATE shows or changes the system date.\n" -msgstr "" +msgstr "DATE mostra o canvia la data de sistema.\n" #: cmd.rc:48 msgid "DEL deletes a file or set of files.\n" -msgstr "" +msgstr "DEL suprimeix un fitxer o conjunt de fitxers.\n" #: cmd.rc:49 msgid "DIR lists the contents of a directory.\n" -msgstr "" +msgstr "DIR mostra el contingut d'un directori.\n" #: cmd.rc:59 msgid "" @@ -7554,10 +7859,17 @@ "default). The ECHO OFF command can be prevented from displaying by\n" "preceding it with an @ sign.\n" msgstr "" +"ECHO mostra en el dispositu de terminal actual.\n" +"\n" +"ECHO ON causa que tots els ordres següents en un fitxer batch es mostrin\n" +"en el dispositu de terminal abans d'executar-se.\n" +"\n" +"ECHO OFF desfa l'efecte d'un ECHO ON anterior (ECHO està OFF per defecte).\n" +"Precedir el ordre ECHO OFF amb la signe @ prevé que es mostri.\n" #: cmd.rc:61 msgid "ERASE deletes a file or set of files.\n" -msgstr "" +msgstr "ERASE suprimeix un fitxer o conjunt de fitxers.\n" #: cmd.rc:69 msgid "" @@ -7568,6 +7880,13 @@ "The requirement to double the % sign when using FOR in a batch file does\n" "not exist in wine's cmd.\n" msgstr "" +"El ordre FOR s'usa per executar un ordre per cada un d'un conjunt de\n" +"fitxers.\n" +"\n" +"Sintaxi: FOR %variable IN (conjunt) DO ordre\n" +"\n" +"El requisit de doblar la signe % cuan usant FOR en un fitxer batch no\n" +"existeix en el cmd de wine.\n" #: cmd.rc:81 msgid "" @@ -7582,12 +7901,26 @@ "\n" "GOTO has no effect when used interactively.\n" msgstr "" +"El ordre GOTO transfereix l'execució a una altra declaració en un fitxer\n" +"batch.\n" +"\n" +"L'etiqueta que és la destinació d'un GOTO pot ser de fins a 255 caràcters " +"de\n" +"longitud però no pot incloure espais (això és diferent d'altres sistemas\n" +"operatius). Si dos o més etiquetes idèntiques existeixen en un fitxer " +"batch,\n" +"el primer sempre s'executarà. Intentar fer GOTO a una etiqueta no existent\n" +"termina l'execució del fitxer batch.\n" +"\n" +"GOTO no té cap efecte quan s'usa de forma interactiva.\n" #: cmd.rc:84 msgid "" "HELP shows brief help details on a topic.\n" "HELP without an argument shows all CMD built-in commands.\n" msgstr "" +"HELP mostra detalls d'ajuda breus sobre un tema.\n" +"HELP sense argument mostra tots els ordres integrats de CMD.\n" #: cmd.rc:94 msgid "" @@ -7600,6 +7933,14 @@ "In the second form of the command, string1 and string2 must be in double\n" "quotes. The comparison is not case-sensitive.\n" msgstr "" +"IF s'usa per executar condicionalment un ordre.\n" +"\n" +"Sintaxi: IF [NOT] EXIST nom_de_fitxer ordre\n" +" IF [NOT] cadena1==cadena2 ordre\n" +" IF [NOT] ERRORLEVEL nombre ordre\n" +"\n" +"En la segona forma de la comanda, cadena1 i cadena2 han d'estar entre\n" +"cometes dobles. La comparació no distingeix entre majúscules i minúscules.\n" #: cmd.rc:100 msgid "" @@ -7609,14 +7950,19 @@ "The command will prompt you for the new volume label for the given drive.\n" "You can display the disk volume label with the VOL command.\n" msgstr "" +"LABEL s'usa per establir una etiqueta de volum del disc.\n" +"\n" +"Sintaxi: LABEL [unitat:]\n" +"El ordre us demanarà la nova etiqueta de volum per a la unitat donada.\n" +"Podeu mostrar l'etiqueta de volum del disc amb el ordre VOL.\n" #: cmd.rc:103 msgid "MD is the short version of MKDIR. It creates a subdirectory.\n" -msgstr "" +msgstr "MD és la versió curta de MKDIR. Crea un subdirectori.\n" #: cmd.rc:104 msgid "MKDIR creates a subdirectory.\n" -msgstr "" +msgstr "MKDIR crea un subdirectori.\n" #: cmd.rc:111 msgid "" @@ -7628,6 +7974,14 @@ "\n" "MOVE fails if the old and new locations are on different DOS drive letters.\n" msgstr "" +"MOVE trasllada un fitxer o directori a un nou punt dins el sistema de\n" +"fitxers.\n" +"\n" +"Si l'article que es mou és un directori, llavors tots els fitxers i\n" +"subdirectoris a sota de l'article es mouen també.\n" +"\n" +"MOVE falla si els llocs antics i nous es troben en lletres d'unitat DOS\n" +"diferents.\n" #: cmd.rc:122 msgid "" @@ -7641,6 +7995,15 @@ "variable, for example:\n" "PATH %PATH%;c:\\temp\n" msgstr "" +"PATH mostra o canvia la ruta de cerca de cmd.\n" +"\n" +"Introduir PATH mostrarà la configuració PATH actual (inicialment\n" +"treta del registre). Per canviar la configuració feu el\n" +"ordre PATH amb el nou valor.\n" +"\n" +"També és possible modificar la PATH per usar el variable d'entorn\n" +"PATH, per exemple:\n" +"PATH %PATH%;c:\\temp\n" #: cmd.rc:128 msgid "" @@ -7649,6 +8012,12 @@ "It is mainly useful in batch files to allow the user to read the output\n" "of a previous command before it scrolls off the screen.\n" msgstr "" +"PAUSE mostra un missatge en la pantalla demanant que l'usuari premi una\n" +"tecla.\n" +"\n" +"És principalment útil en els fitxers batch per permetre que l'usuari\n" +"llegeixi la sortida d'un ordre anterior abans que es desplaci fora de la\n" +"pantalla.\n" #: cmd.rc:149 msgid "" @@ -7672,28 +8041,54 @@ "The prompt can also be changed by altering the PROMPT environment variable,\n" "so the command 'SET PROMPT=text' has the same effect as 'PROMPT text'.\n" msgstr "" +"PROMPT estableix l'indicador de la línia d'ordre.\n" +"\n" +"La cadena que segueix el ordre PROMPT (i l'espai immediatament després)\n" +"apareix al principi de la línia quan cmd està esperant l'entrada.\n" +"\n" +"Les cadenes de caràcters següents tenen el significat especial que\n" +"s'indica:\n" +"\n" +"$$ Signe de dòlar $_ Nova línia $b Barra vertical " +"(|)\n" +"$d Data actual $e Escapament $g Signe >\n" +"$l Signe < $n Unitat actual $p Ruta actual\n" +"$q Signe d'igualtat $t Temps actual $v Versió de cmd\n" +"\n" +"Teniu en compte que introduir el ordre PROMPT sense paràmetre restableix\n" +"l'indicator al valor predeterminat, que és el directori actual (que inclou\n" +"la lletra d'unitat actual) seguit del signe >.\n" +"(com un ordre PROMPT $p$g).\n" +"\n" +"L'indicador també es pot canviar per modificar la variable d'entorn PROMPT,\n" +"així que el ordre 'SET PROMPT=text' té el mateix efecte que 'PROMPT text'.\n" #: cmd.rc:153 msgid "" "A command line beginning REM (followed by a space) performs no\n" "action, and can therefore be used as a comment in a batch file.\n" msgstr "" +"Una línia d'ordres començant amb REM (seguit per un espai) no\n" +"realitza cap acció, i per tant es pot usar com comentari en un\n" +"fitxer batch.\n" #: cmd.rc:156 msgid "REN is the short version of RENAME. It renames a file.\n" msgstr "" +"REN és la versió curta de RENAME. Canvia el nom\n" +"d'un fitxer\n" #: cmd.rc:157 msgid "RENAME renames a file.\n" -msgstr "" +msgstr "REN canvia el nom d'un fitxer\n" #: cmd.rc:159 msgid "RD is the short version of RMDIR. It deletes a subdirectory.\n" -msgstr "" +msgstr "RD és la versió curta de RMDIR. Suprimeix un subdirectori.\n" #: cmd.rc:160 msgid "RMDIR deletes a subdirectory.\n" -msgstr "" +msgstr "RMDIR suprimeix un subdirectori.\n" #: cmd.rc:178 msgid "" @@ -7714,6 +8109,22 @@ "many more values than in a native Win32 implementation. Note that it is\n" "not possible to affect the operating system environment from within cmd.\n" msgstr "" +"SET mostra o canvia les variables d'entorn de cmd.\n" +"\n" +"SET sense paràmetres mostra totas de l'entorn actual.\n" +"\n" +"Per crear o modificar una variable d'entorn, la sintaxi és:\n" +"\n" +"SET =\n" +"\n" +"on i són cadenes de caràcters. No ha d'haver cap espai\n" +"abans del signe igual, ni pot el nom de la variable tenir espais\n" +"incorporats.\n" +"\n" +"Sota Wine, l'entorn del sistema operatiu subjacent es inclou en l'entorn\n" +"Win32, hi haurà en general, per tant, molts més valors que en una\n" +"implementació nativa de Win32. Tingueu en compte que no és possible\n" +"afectar l'entorn del sistema operatiu des de dins cmd.\n" #: cmd.rc:183 msgid "" @@ -7721,20 +8132,27 @@ "the list, so parameter 2 becomes parameter 1 and so on. It has no effect\n" "if called from the command line.\n" msgstr "" +"SHIFT s'utilitza en un fitxer batch per treure un paràmetre del cap de\n" +"la llista, de manera que el paràmetre 2 es converteix en el paràmetre 1\n" +"etc. No té cap efecte si es truca des de la línia d'ordres.\n" #: cmd.rc:185 msgid "TIME sets or shows the current system time.\n" -msgstr "" +msgstr "TIME estableix o mostra l'hora actual del sistema.\n" #: cmd.rc:187 msgid "Sets the window title for the cmd window, syntax TITLE [string]\n" msgstr "" +"Estableix el títol de finestra per la finestra cmd, sintaxi TITLE\n" +"[cadena]\n" #: cmd.rc:191 msgid "" "TYPE copies to the console device (or elsewhere\n" "if redirected). No check is made that the file is readable text.\n" msgstr "" +"TYPE copia al dispositiu de consola (o un\n" +"altre lloc si redirigit). No es comprova que el fitxer és text llegible.\n" #: cmd.rc:200 msgid "" @@ -7746,20 +8164,30 @@ "\n" "The verify flag has no function in Wine.\n" msgstr "" +"VERIFY s'usa per establir, esborrar o provar la bandera de verificació.\n" +"Les formes vàlides són:\n" +"\n" +"VERIFY ON\tEstableix la bandera\n" +"VERIFY OFF\tEsborra la bandera\n" +"VERIFY\t\tMostra ON o OFF segons correspon.\n" +"\n" +"La bandera de verificació no té cap funció en Wine.\n" #: cmd.rc:203 msgid "VER displays the version of cmd you are running.\n" -msgstr "" +msgstr "VER mostra la versió de cmd que s'està executant.\n" #: cmd.rc:205 msgid "VOL shows the volume label of a disk device.\n" -msgstr "" +msgstr "VOL mostra l'etiqueta de volum d'un dispositiu de disc.\n" #: cmd.rc:209 msgid "" "ENDLOCAL ends localization of environment changes in a batch file\n" "which were introduced by a preceding SETLOCAL.\n" msgstr "" +"ENDLOCAL acaba la localització de canvis en l'entorn en un fitxer\n" +"batch, els cuals un SETLOCAL anterior ha introduït.\n" #: cmd.rc:217 msgid "" @@ -7770,18 +8198,26 @@ "file, whichever comes first), at which point the previous environment\n" "settings are restored.\n" msgstr "" +"SETLOCAL comença la localització de canvis en l'entorn en un fitxer batch.\n" +"\n" +"Els canvis d'entorn fets després d'un SETLOCAL són locals al fitxer batch,\n" +"i es conserven fins que la pròxima ENDLOCAL es trobi (o al final del\n" +"fitxer, el que passi primer), al qual punt la configuració de l'entorn\n" +"anterior es restaura.\n" #: cmd.rc:220 msgid "" "PUSHD saves the current directory onto a\n" "stack, and then changes the current directory to the supplied one.\n" msgstr "" +"PUSHD desa el directori actual en una pila, i\n" +"llavors canvia el directori actual al proporcionat.\n" #: cmd.rc:223 msgid "" "POPD changes current directory to the last one saved with\n" "PUSHD.\n" -msgstr "" +msgstr "POPD canvia el directori actual al últim desat amb PUSHD.\n" #: cmd.rc:231 msgid "" @@ -7794,6 +8230,14 @@ "Specifying no file type after the equal sign removes the current " "association, if any.\n" msgstr "" +"ASSOC mostra o modifica les associacions d'extensió de fitxer\n" +"\n" +"Sintaxi: ASSOC [.ext[=[tipusDeFitxer]]]\n" +"\n" +"ASSOC sense paràmetres mostra les associacions de fitxer actuals.\n" +"Si s'usa amb només una extensió de fitxer, mostra l'associació\n" +"actual. Especificar cap tipus de ftixer després del signe igual treu\n" +"l'associació actual, si hi ha.\n" #: cmd.rc:242 msgid "" @@ -7808,10 +8252,22 @@ "Specifying no open command after the equal sign removes the command string " "associated to the specified file type.\n" msgstr "" +"FTYPE mostra o modifica els ordres d'obertura associats amb els tipus de\n" +"fitxers\n" +"\n" +"Sintaxi: FTYPE [tipusDeFitxer[=[ordreDeObertura]]]\n" +"\n" +"Sense paràmetres, mostra els tipus de fitxer pels quals les cadenes d'ordre\n" +"de abertura estan definides actualment. Si s'usa amb només un tipus de\n" +"fitxer, mostra la cadena d'ordre d'obertura associada, si hi ha. " +"Especificar\n" +"cap ordre d'obertura després del signe igual treu la cadena de ordre\n" +"associada al tipus de fitxer especificat.\n" #: cmd.rc:244 msgid "MORE displays output of files or piped input in pages.\n" msgstr "" +"MORE mostra la sortida dels fitxers o entrada de canonada en pàginas.\n" #: cmd.rc:248 msgid "" @@ -7819,12 +8275,19 @@ "presses an allowed Key from a selectable list.\n" "CHOICE is mainly used to build a menu selection in a batch file.\n" msgstr "" +"CHOICE mostra un text i espera fins que l'Usuari\n" +"premi una Tecla permesa d'una llista seleccionable.\n" +"CHOISE s'usa principalment per construir un menú de selecció en un fitxer\n" +"batch.\n" #: cmd.rc:252 msgid "" "EXIT terminates the current command session and returns\n" "to the operating system or shell from which you invoked cmd.\n" msgstr "" +"EXIT acaba la sessió d'ordres actual i torna al sistema operatiu o shell " +"des\n" +"del qual heu invocat cmd.\n" #: cmd.rc:289 msgid "" @@ -7866,110 +8329,153 @@ "\n" "Enter HELP for further information on any of the above commands.\n" msgstr "" +"Els ordres integrats de CMD són:\n" +"ASSOC\t\tMostrar o modificar les associacions d'extensió de fitxer\n" +"ATTRIB\t\tMostrar o canviar els atributs de fitxer de DOS\n" +"CALL\t\tInvocar un fitxer batch des de dins altre\n" +"CD (CHDIR)\tCanviar el directori predeterminat actual\n" +"CHOICE\t\tEsperar una pulsació de tecla d'una llista seleccionable\n" +"CLS\t\tEsborrar la pantalla de consola\n" +"COPY\t\tCopiar un fitxer\n" +"CTTY\t\tCanviar de dispositiu d'entrada/sortida\n" +"DATE\t\tMostrar o canviar la data del sistema\n" +"DEL (ERASE)\tSuprimir un fitxer o conjunt de fitxers\n" +"DIR\t\tMostrar el contingut d'un directori\n" +"ECHO\t\tCopiar text directament a la sortida de la consola\n" +"ENDLOCAL\tAcabar la localització de canvis en l'entorn en un fitxer batch\n" +"FTYPE\t\tMostrar o modificar els ordres d'obertura associats amb els\n" +"\t\ttipus de fitxer\n" +"HELP\t\tMostrar detalls breus sobre un tema\n" +"MD (MKDIR)\tCrear un subdirectori\n" +"MORE\t\tMostrar la sortida en pàginas\n" +"MOVE\t\tMover un fitxer, conjunt de fitxers, o arbre de directori\n" +"PATH\t\tEstablir o mostrar la ruta de cerca\n" +"PAUSE\t\tSuspendre l'execució d'un fitxer batch\n" +"POPD\t\tRestaurar el directori al últim desat amb PUSHD\n" +"PROMPT\t\tCanviar l'indicador d'ordre\n" +"PUSHD\t\tCanviar a un directori nou, desant l'actual\n" +"REN (RENAME)\tCanviar el nom d'un fitxer\n" +"RD (RMDIR)\tSuprimir un subdirectori\n" +"SET\t\tEstablir o mostrar les variables d'entorn\n" +"SETLOCAL\tComençar la localització de canvis en l'entorn en un fitxer\n" +"\t\tbatch\n" +"TIME\t\tEstablir o mostrar l'hora de sistema actual\n" +"TITLE\t\tEstablir el títol de finestra per la sessió CMD\n" +"TYPE\t\tAbocar el contingut d'un fitxer de text\n" +"VER\t\tMostrar la versió actual de CMD\n" +"VOL\t\tMostrar l'etiqueta de volum d'un dispositu de disc\n" +"XCOPY\t\tCopiar fitxers fonts o arbres de directori a una destinació\n" +"EXIT\t\tTancar CMD\n" +"\n" +"Introduïu HELP per més informació sobre qualsevol de les ordres\n" +"anteriors.\n" #: cmd.rc:291 msgid "Are you sure" -msgstr "" +msgstr "Esteu segur" #: cmd.rc:292 xcopy.rc:40 msgctxt "Yes key" msgid "Y" -msgstr "" +msgstr "S" #: cmd.rc:293 xcopy.rc:41 msgctxt "No key" msgid "N" -msgstr "" +msgstr "N" #: cmd.rc:294 msgid "File association missing for extension %s\n" -msgstr "" +msgstr "Falta l'associació de fitxer per l'extensió %s\n" #: cmd.rc:295 msgid "No open command associated with file type '%s'\n" -msgstr "" +msgstr "Cap ordre d'obertura associat amb el tipus de fitxer '%s'\n" #: cmd.rc:296 msgid "Overwrite %s" -msgstr "" +msgstr "Sobreescriure %s" #: cmd.rc:297 msgid "More..." -msgstr "" +msgstr "Més..." #: cmd.rc:298 msgid "Line in Batch processing possibly truncated. Using:\n" -msgstr "" +msgstr "Línia en processament batch possiblement truncada. Usant:\n" #: cmd.rc:300 msgid "Argument missing\n" -msgstr "" +msgstr "Falta la paràmetre\n" #: cmd.rc:301 msgid "Syntax error\n" -msgstr "" +msgstr "Error de sintaxi\n" + +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "%s: Fitxer No Trobat\n" #: cmd.rc:303 msgid "No help available for %s\n" -msgstr "" +msgstr "Cap ajuda disponible per %s\n" #: cmd.rc:304 msgid "Target to GOTO not found\n" -msgstr "" +msgstr "Destinació del GOTO no trobat\n" #: cmd.rc:305 msgid "Current Date is %s\n" -msgstr "" +msgstr "La Data Actual és %s\n" #: cmd.rc:306 msgid "Current Time is %s\n" -msgstr "" +msgstr "L'Hora Actual és %s\n" #: cmd.rc:307 msgid "Enter new date: " -msgstr "" +msgstr "Introduïu data nova: " #: cmd.rc:308 msgid "Enter new time: " -msgstr "" +msgstr "Introduïu hora nova: " #: cmd.rc:309 msgid "Environment variable %s not defined\n" -msgstr "" +msgstr "Variable d'entorn %s no definida\n" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" -msgstr "" +msgstr "S'ha fallat en obrir '%s'\n" #: cmd.rc:311 msgid "Cannot call batch label outside of a batch script\n" -msgstr "" +msgstr "No es pot trucar a una etiqueta batch fora d'un script batch\n" #: cmd.rc:312 xcopy.rc:42 msgctxt "All key" msgid "A" -msgstr "" +msgstr "A" #: cmd.rc:313 -#, fuzzy msgid "%s, Delete" -msgstr "&Suprimir" +msgstr "%s, Suprimir" #: cmd.rc:314 msgid "Echo is %s\n" -msgstr "" +msgstr "L'eco està %s\n" #: cmd.rc:315 msgid "Verify is %s\n" -msgstr "" +msgstr "La verificació està %s\n" #: cmd.rc:316 msgid "Verify must be ON or OFF\n" -msgstr "" +msgstr "La verificació ha d'estar ON o OFF\n" #: cmd.rc:317 msgid "Parameter error\n" -msgstr "" +msgstr "Error de paràmetre\n" #: cmd.rc:318 msgid "" @@ -7977,42 +8483,46 @@ "Volume Serial Number is %04x-%04x\n" "\n" msgstr "" +"Volum en unitat %c és %s\n" +"Nombre de Sèrie del Volum és %04x-%04x\n" +"\n" #: cmd.rc:319 msgid "Volume label (11 characters, ENTER for none)?" -msgstr "" +msgstr "Etiqueta de volum (11 caràcters, ENTER per cap)?" #: cmd.rc:320 msgid "PATH not found\n" -msgstr "" +msgstr "PATH no trobada\n" #: cmd.rc:321 msgid "Press any key to continue... " -msgstr "" +msgstr "Premeu cualsevol tecla per continuar... " #: cmd.rc:322 msgid "Wine Command Prompt" -msgstr "" +msgstr "Línia d'Ordres de Wine" #: cmd.rc:323 msgid "CMD Version %s\n" -msgstr "" +msgstr "Versió de CMD %s\n" #: cmd.rc:324 msgid "More? " -msgstr "" +msgstr "Més? " #: cmd.rc:325 msgid "The input line is too long.\n" -msgstr "" +msgstr "La lìnia d'entrada és massa llarga.\n" #: dxdiag.rc:27 msgid "DirectX Diagnostic Tool" -msgstr "" +msgstr "Eina Diagnòstica de DirextX" #: dxdiag.rc:28 msgid "Usage: dxdiag [/whql:off | /whql:on] [/t filename | /x filename]" msgstr "" +"Ús: dxdiag [/whql:off | /whql:on] [/t nom_de_fitxer | /x nom_de_fitxer]" #: explorer.rc:28 msgid "Wine Explorer" @@ -8020,33 +8530,37 @@ #: explorer.rc:29 msgid "Location:" -msgstr "" +msgstr "Ubicació:" #: hostname.rc:27 msgid "Usage: hostname\n" -msgstr "" +msgstr "Ús: hostname\n" #: hostname.rc:28 msgid "Error: Invalid option '%c'.\n" -msgstr "" +msgstr "Error: Opció invàlida '%c'.\n" #: hostname.rc:29 msgid "" "Error: Setting the system hostname is not possible with the hostname " "utility.\n" msgstr "" +"Error: Establir el nom d'equip del sistema no és possible amb la\n" +"utilitat hostname.\n" #: ipconfig.rc:27 msgid "Usage: ipconfig [ /? | /all ]\n" -msgstr "" +msgstr "Ús: ipconfig [ /? | /all ]\n" #: ipconfig.rc:28 msgid "Error: Unknown or invalid command line parameters specified\n" msgstr "" +"Error: Paràmetres de línia d'ordres desconeguts o invàlids\n" +"especificats\n" #: ipconfig.rc:29 msgid "%s adapter %s\n" -msgstr "" +msgstr "%s adaptador %s\n" #: ipconfig.rc:30 msgid "Ethernet" @@ -8054,47 +8568,47 @@ #: ipconfig.rc:32 msgid "Connection-specific DNS suffix" -msgstr "" +msgstr "Sufix DNS específic a la connexió" #: ipconfig.rc:34 msgid "Hostname" -msgstr "" +msgstr "Nom d'equip" #: ipconfig.rc:35 msgid "Node type" -msgstr "" +msgstr "Tipus de node" #: ipconfig.rc:36 msgid "Broadcast" -msgstr "" +msgstr "Difusió" #: ipconfig.rc:37 msgid "Peer-to-peer" -msgstr "" +msgstr "D'igual a igual" #: ipconfig.rc:38 msgid "Mixed" -msgstr "" +msgstr "Mixt" #: ipconfig.rc:39 msgid "Hybrid" -msgstr "" +msgstr "Híbrid" #: ipconfig.rc:40 msgid "IP routing enabled" -msgstr "" +msgstr "Encaminament IP habilitat" #: ipconfig.rc:42 msgid "Physical address" -msgstr "" +msgstr "Direcció física" #: ipconfig.rc:43 msgid "DHCP enabled" -msgstr "" +msgstr "DHCP habilitat" #: ipconfig.rc:46 msgid "Default gateway" -msgstr "" +msgstr "Passarel·la predeterminada" #: net.rc:27 msgid "" @@ -8106,6 +8620,13 @@ "\n" "Where 'command' is one of HELP, START, STOP or USE.\n" msgstr "" +"El sintaxi d'aquest ordre és:\n" +"\n" +"NET ordre [paràmetres]\n" +" -o-\n" +"NET ordre /HELP\n" +"\n" +"On 'ordre' és un de HELP, START, STOP o USE.\n" #: net.rc:28 msgid "" @@ -8116,6 +8637,12 @@ "Displays the list of running services if 'service' is omitted. Otherwise " "'service' is the name of the service to start.\n" msgstr "" +"El sintaxi d'aquest ordre és:\n" +"\n" +"NET START [servei]\n" +"\n" +"Mostra la llista de serveis executants si 'servei' s'omet. En cas contrari\n" +"'servei' és el nom del servei per iniciar.\n" #: net.rc:29 msgid "" @@ -8125,50 +8652,63 @@ "\n" "Where 'service' is the name of the service to stop.\n" msgstr "" +"El sintaxi d'aquest ordre és:\n" +"\n" +"NET STOP servei\n" +"\n" +"On 'servei' és el nom del servei per aturar.\n" #: net.rc:30 -msgid "Stopping dependent service: %s\n" -msgstr "" +#, fuzzy +msgid "Stopping dependent service: %1\n" +msgstr "Aturant servei dependent: %s\n" #: net.rc:31 -msgid "Could not stop service %s\n" -msgstr "" +#, fuzzy +msgid "Could not stop service %1\n" +msgstr "No s'ha pogut aturar el servei %s\n" #: net.rc:32 msgid "Could not get handle to service control manager.\n" -msgstr "" +msgstr "No s'ha pogut obtenir el mànec al gestor de control de servei.\n" #: net.rc:33 msgid "Could not get handle to service.\n" -msgstr "" +msgstr "No s'ha pogut obtenir el mànec al servei.\n" #: net.rc:34 -msgid "The %s service is starting.\n" -msgstr "" +#, fuzzy +msgid "The %1 service is starting.\n" +msgstr "El servei %s s'està iniciant.\n" #: net.rc:35 -msgid "The %s service was started successfully.\n" -msgstr "" +#, fuzzy +msgid "The %1 service was started successfully.\n" +msgstr "El servei %s s'ha iniciat amb èxit.\n" #: net.rc:36 -msgid "The %s service failed to start.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to start.\n" +msgstr "El servei %s ha fallat en iniciar.\n" #: net.rc:37 -msgid "The %s service is stopping.\n" -msgstr "" +#, fuzzy +msgid "The %1 service is stopping.\n" +msgstr "El servei %s està aturant.\n" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" -msgstr "" +#, fuzzy +msgid "The %1 service was stopped successfully.\n" +msgstr "S'ha aturat el servei %s amb èxit.\n" #: net.rc:39 -msgid "The %s service failed to stop.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to stop.\n" +msgstr "El servei %s ha fallat en aturar.\n" #: net.rc:41 msgid "There are no entries in the list.\n" -msgstr "" +msgstr "No hi ha cap entrada en la llista.\n" #: net.rc:42 msgid "" @@ -8176,162 +8716,167 @@ "Status Local Remote\n" "---------------------------------------------------------------\n" msgstr "" +"\n" +"Estat Local Remot\n" +"---------------------------------------------------------------\n" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" -msgstr "" +#, fuzzy +msgid "%1 %2 %3 Open resources: %4!u!\n" +msgstr "%s %s %s Recursos oberts: %lu\n" #: net.rc:44 msgid "OK" -msgstr "" +msgstr "D'acord" #: net.rc:45 msgid "Paused" -msgstr "" +msgstr "Pausat" #: net.rc:46 msgid "Disconnected" -msgstr "" +msgstr "Desconnectat" #: net.rc:47 msgid "A network error occurred" -msgstr "" +msgstr "Ha hagut un error de xarxa" #: net.rc:48 msgid "Connection is being made" -msgstr "" +msgstr "S'està fent la connexió" #: net.rc:49 msgid "Reconnecting" -msgstr "" +msgstr "Reconnectant" #: net.rc:40 msgid "The following services are running:\n" -msgstr "" +msgstr "Els següents serveis s'estan executant:\n" #: notepad.rc:27 msgid "&New\tCtrl+N" -msgstr "" +msgstr "&Nou\tCtrl+N" #: notepad.rc:28 wordpad.rc:29 msgid "&Open...\tCtrl+O" -msgstr "" +msgstr "&Obre...\tCtrl+O" #: notepad.rc:29 wordpad.rc:30 msgid "&Save\tCtrl+S" -msgstr "" +msgstr "&Desa\tCtrl+S" #: notepad.rc:32 regedit.rc:36 wordpad.rc:33 msgid "&Print...\tCtrl+P" -msgstr "" +msgstr "Im&primeix...\tCtrl+P" #: notepad.rc:33 wordpad.rc:35 msgid "Page Se&tup..." -msgstr "" +msgstr "&Configuració de pàgina..." #: notepad.rc:34 msgid "P&rinter Setup..." -msgstr "" +msgstr "Configuració d'imp&resora..." #: notepad.rc:38 regedit.rc:40 wineconsole.rc:25 winhlp32.rc:36 wordpad.rc:39 msgid "&Edit" -msgstr "" +msgstr "&Edita" #: notepad.rc:39 wordpad.rc:41 msgid "&Undo\tCtrl+Z" -msgstr "" +msgstr "&Desfés\tCtrl+Z" #: notepad.rc:41 wordpad.rc:44 msgid "Cu&t\tCtrl+X" -msgstr "" +msgstr "Re&talla\tCtrl+X" #: notepad.rc:42 wordpad.rc:45 msgid "&Copy\tCtrl+C" -msgstr "" +msgstr "&Copia\tCtrl+C" #: notepad.rc:43 wordpad.rc:46 -#, fuzzy msgid "&Paste\tCtrl+V" -msgstr "&Enganxar" +msgstr "&Enganxar\tCtrl+V" #: notepad.rc:44 progman.rc:34 regedit.rc:55 regedit.rc:90 regedit.rc:106 #: winefile.rc:29 -#, fuzzy msgid "&Delete\tDel" -msgstr "&Suprimir" +msgstr "&Suprimir\tSupr" #: notepad.rc:46 -#, fuzzy msgid "Select &all\tCtrl+A" -msgstr "Seleccionar &tot el text" +msgstr "Seleccion&ar tot\tCtrl+A" #: notepad.rc:47 msgid "&Time/Date\tF5" -msgstr "" +msgstr "&Hora/Dada\tF5" #: notepad.rc:49 msgid "&Wrap long lines" -msgstr "" +msgstr "&Tallar les línies llargues" #: notepad.rc:53 msgid "&Search...\tCtrl+F" -msgstr "" +msgstr "&Cerca...\tCtrl+F" #: notepad.rc:54 msgid "&Search next\tF3" -msgstr "" +msgstr "&Cerca proper...\tCtrl+F" #: notepad.rc:55 wordpad.rc:52 msgid "&Replace...\tCtrl+H" -msgstr "" +msgstr "&Reemplaça...\tCtrl+H" #: notepad.rc:58 progman.rc:53 regedit.rc:78 winefile.rc:86 msgid "&Contents\tF1" -msgstr "" +msgstr "&Continguts\tF1" #: notepad.rc:59 msgid "&About Notepad" -msgstr "" +msgstr "Qu&ant a Notepad" #: notepad.rc:66 msgid "Page &p" -msgstr "" +msgstr "Pàgina &p" #: notepad.rc:68 msgid "Notepad" -msgstr "" +msgstr "Bloc de Notes" #: notepad.rc:69 progman.rc:61 winhlp32.rc:79 msgid "ERROR" -msgstr "" +msgstr "ERROR" #: notepad.rc:70 progman.rc:62 winhlp32.rc:80 msgid "WARNING" -msgstr "" +msgstr "ADVERTÈNCIA" #: notepad.rc:71 progman.rc:63 winhlp32.rc:81 msgid "Information" -msgstr "" +msgstr "Informació" #: notepad.rc:73 msgid "Untitled" -msgstr "" +msgstr "Sin título" #: notepad.rc:76 msgid "Text files (*.txt)" -msgstr "" +msgstr "Fitxers de text (*.txt)" #: notepad.rc:79 msgid "" "File '%s' is too large for notepad.\n" "Please use a different editor." msgstr "" +"El fitxer '%s' és massa gran per el bloc de notes.\n" +"Si us plau, useu un editor diferent." #: notepad.rc:81 msgid "" "You did not enter any text.\n" "Please type something and try again." msgstr "" +"No heu entrat cap text.\n" +"Si us plau, introduïu alguna cosa i torneu a intentar." #: notepad.rc:83 msgid "" @@ -8339,6 +8884,9 @@ "\n" "Do you want to create a new file?" msgstr "" +"El fitxer '%s' no existeix.\n" +"\n" +"Voleu crear un fitxer nou?" #: notepad.rc:85 msgid "" @@ -8346,16 +8894,21 @@ "\n" "Would you like to save the changes?" msgstr "" +"El fitxer '%s' s'ha modificat.\n" +"\n" +"Us agradaria desar els canvis?" #: notepad.rc:86 msgid "'%s' could not be found." -msgstr "" +msgstr "No s'ha pogut trobar '%s'." #: notepad.rc:88 msgid "" "Not enough memory to complete this task.\n" "Close one or more applications to increase the amount of free memory." msgstr "" +"Falta memòria per completar aquesta tasca.\n" +"Tanqueu una o més aplicacions per augmentar la quantitat de memòria lliure." #: notepad.rc:90 msgid "Unicode (UTF-16)" @@ -8378,103 +8931,109 @@ "one of the Unicode options in the Encoding drop down list.\n" "Continue?" msgstr "" +"%s\n" +"Aquest fitxer conté caràcters Unicode que es perdran si\n" +"deseu aquest fitxer en la codificació %s.\n" +"Per mantenir aquests caràcters, feu clic a Cancel·la i\n" +"llovers seleccioneu una de les opcions Unicode en la\n" +"llista desplegable Encoding.\n" +"Voleu continuar?" #: oleview.rc:29 msgid "&Bind to file..." -msgstr "" +msgstr "&Lligar a fitxer..." #: oleview.rc:30 msgid "&View TypeLib..." -msgstr "" +msgstr "&Veu TypeLib..." #: oleview.rc:32 msgid "&System Configuration" -msgstr "" +msgstr "Configuració de &Sistema" #: oleview.rc:33 msgid "&Run the Registry Editor" -msgstr "" +msgstr "Executar l'Editor de &Registre" #: oleview.rc:37 msgid "&Object" -msgstr "" +msgstr "&Objecte" #: oleview.rc:39 msgid "&CoCreateInstance Flag" -msgstr "" +msgstr "Bandera &CoCreateInstance" #: oleview.rc:41 msgid "&In-process server" -msgstr "" +msgstr "Servidor &en procés" #: oleview.rc:42 msgid "In-process &handler" -msgstr "" +msgstr "&Manejador en procés" #: oleview.rc:43 msgid "&Local server" -msgstr "" +msgstr "Servidor &local" #: oleview.rc:44 msgid "&Remote server" -msgstr "" +msgstr "Servidor &remot" #: oleview.rc:47 msgid "View &Type information" -msgstr "" +msgstr "Veu informació de &Tipus" #: oleview.rc:49 msgid "Create &Instance" -msgstr "" +msgstr "Crea &Instància" #: oleview.rc:50 msgid "Create Instance &On..." -msgstr "" +msgstr "Crea Instància &En..." #: oleview.rc:51 msgid "&Release Instance" -msgstr "" +msgstr "Llibe&ra Instància" #: oleview.rc:53 msgid "Copy C&LSID to clipboard" -msgstr "" +msgstr "Copia C&LSID a porta-retalls" #: oleview.rc:54 msgid "Copy &HTML object Tag to clipboard" -msgstr "" +msgstr "Copia element d'objecte &HTML a porta-retalls" #: oleview.rc:60 msgid "&Expert mode" -msgstr "" +msgstr "Mode &expert" #: oleview.rc:62 msgid "&Hidden component categories" -msgstr "" +msgstr "Categories &ocultes de component" #: oleview.rc:64 oleview.rc:86 winefile.rc:66 wordpad.rc:68 msgid "&Toolbar" -msgstr "" +msgstr "Barra d'&Eines" #: oleview.rc:65 oleview.rc:87 winefile.rc:68 msgid "&Status Bar" -msgstr "" +msgstr "Barra d'E&stat" #: oleview.rc:67 regedit.rc:69 winefile.rc:82 msgid "&Refresh\tF5" -msgstr "" +msgstr "&Actualitza\tF5" #: oleview.rc:71 -#, fuzzy msgid "&About OleView" -msgstr "&Quant a Wine..." +msgstr "&Quant a OleView..." #: oleview.rc:79 msgid "&Save as..." -msgstr "" +msgstr "Anomena i &desa..." #: oleview.rc:84 msgid "&Group by type kind" -msgstr "" +msgstr "A&grupa per categoria de tipus" #: oleview.rc:93 oleview.rc:94 msgid "OleView" @@ -8482,100 +9041,102 @@ #: oleview.rc:98 msgid "ITypeLib viewer" -msgstr "" +msgstr "Visualitzador de ITypeLib" #: oleview.rc:96 msgid "OleView - OLE/COM Object Viewer" -msgstr "" +msgstr "OleView - Visualitzador de Objectes OLE/COM" #: oleview.rc:97 msgid "version 1.0" -msgstr "" +msgstr "versió 1.0" #: oleview.rc:100 msgid "TypeLib files (*.tlb; *.olb; *.dll; *.ocx; *.exe)" -msgstr "" +msgstr "Fitxers TypeLib (*.tlb; *.olb; *.dll; *.ocx; *.exe)" #: oleview.rc:103 msgid "Bind to file via a File Moniker" -msgstr "" +msgstr "Lliga a fitxer a través d'un File Moniker" #: oleview.rc:104 msgid "Open a TypeLib file and view the contents" -msgstr "" +msgstr "Obre un fitxer TypeLib i veu el contingut" #: oleview.rc:105 msgid "Change machine wide Distributed COM settings" -msgstr "" +msgstr "Canvia els ajustaments de Distributed COM de tot el equip" #: oleview.rc:106 msgid "Run the Wine registry editor" -msgstr "" +msgstr "Executar l'editor de registre de Wine" #: oleview.rc:107 msgid "Quit the application. Prompts to save changes" -msgstr "" +msgstr "Tanca l'aplicació. Demana desar els canvis" #: oleview.rc:108 msgid "Create an instance of the selected object" -msgstr "" +msgstr "Crea una instància del objecte seleccionat" #: oleview.rc:109 msgid "Create an instance of the selected object on a specific machine" -msgstr "" +msgstr "Crea una instància del objecte seleccionat en un equip específic" #: oleview.rc:110 msgid "Release the currently selected object instance" -msgstr "" +msgstr "Llibera la instància de objecte seleccionat actualment" #: oleview.rc:111 msgid "Copy the GUID of the currently selected item to the clipboard" -msgstr "" +msgstr "Copia el GUID de l'article seleccionat actualment al portapapers" #: oleview.rc:112 msgid "Display the viewer for the selected item" -msgstr "" +msgstr "Mostra el visualitzador de l'article seleccionat" #: oleview.rc:117 msgid "Toggle between expert and novice display mode" -msgstr "" +msgstr "Canvia entre els modes de visualització expert i novells" #: oleview.rc:118 msgid "" "Toggle the display of component categories that are not meant to be visible" msgstr "" +"Alterna la visualització de les categories de component que no es suposen " +"ser visibles" #: oleview.rc:119 msgid "Show or hide the toolbar" -msgstr "" +msgstr "Mostra o amaga la barra d'eines" #: oleview.rc:120 msgid "Show or hide the status bar" -msgstr "" +msgstr "Mostra o amaga la barra d'estat" #: oleview.rc:121 msgid "Refresh all lists" -msgstr "" +msgstr "Actualitza totes les llistes" #: oleview.rc:122 msgid "Display program information, version number and copyright" -msgstr "" +msgstr "Mostra informació de programa, nombre de versió i drets de autor" #: oleview.rc:113 msgid "Ask for an in-process server when calling CoGetClassObject" -msgstr "" +msgstr "Demana un servidor en procés cuan trucant a CoGetClassObject" #: oleview.rc:114 msgid "Ask for an in-process handler when calling CoGetClassObject" -msgstr "" +msgstr "Demana un manejador en procés cuan trucant a CoGetClassObject" #: oleview.rc:115 msgid "Ask for a local server when calling CoGetClassObject" -msgstr "" +msgstr "Demana un servidor local quan trucant a CoGetClassObject" #: oleview.rc:116 msgid "Ask for a remote server when calling CoGetClassObject" -msgstr "" +msgstr "Demana un servidor remot quan trucant a CoGetClassObject" #: oleview.rc:128 msgid "ObjectClasses" @@ -8583,27 +9144,27 @@ #: oleview.rc:129 msgid "Grouped by Component Category" -msgstr "" +msgstr "Agrupats per Categoria de Component" #: oleview.rc:130 msgid "OLE 1.0 Objects" -msgstr "" +msgstr "Objectes OLE 1.0" #: oleview.rc:131 msgid "COM Library Objects" -msgstr "" +msgstr "Objectes de Biblioteca COM" #: oleview.rc:132 msgid "All Objects" -msgstr "" +msgstr "Tots els Objectes" #: oleview.rc:133 msgid "Application IDs" -msgstr "" +msgstr "IDs de Aplicació" #: oleview.rc:134 msgid "Type Libraries" -msgstr "" +msgstr "Bibliotecas de Tipus" #: oleview.rc:135 msgid "ver." @@ -8611,27 +9172,27 @@ #: oleview.rc:136 msgid "Interfaces" -msgstr "" +msgstr "Interfícies" #: oleview.rc:138 msgid "Registry" -msgstr "" +msgstr "Registre" #: oleview.rc:139 msgid "Implementation" -msgstr "" +msgstr "Implementació" #: oleview.rc:140 msgid "Activation" -msgstr "" +msgstr "Activació" #: oleview.rc:142 msgid "CoGetClassObject failed." -msgstr "" +msgstr "Falló el CoGetClassObject." #: oleview.rc:143 msgid "Unknown error" -msgstr "" +msgstr "Error desconegut" #: oleview.rc:146 msgid "bytes" @@ -8639,158 +9200,155 @@ #: oleview.rc:148 msgid "LoadTypeLib( %s ) failed ($%x)" -msgstr "" +msgstr "LoadTypeLib( %s ) ha fallat ($%x)" #: oleview.rc:149 msgid "Inherited Interfaces" -msgstr "" +msgstr "Interfícies Heretades" #: oleview.rc:124 msgid "Save as an .IDL or .H file" -msgstr "" +msgstr "Desa com fitxer .IDL o .H" #: oleview.rc:125 msgid "Close window" -msgstr "" +msgstr "Tanca la finestra" #: oleview.rc:126 msgid "Group typeinfos by kind" -msgstr "" +msgstr "Agrupa informació de tipus per categoria" #: progman.rc:30 msgid "&New..." -msgstr "" +msgstr "&Nou..." #: progman.rc:31 msgid "O&pen\tEnter" -msgstr "" +msgstr "O&brir\tEnter" #: progman.rc:32 winefile.rc:27 -#, fuzzy msgid "&Move...\tF7" -msgstr "&Desplaçament" +msgstr "&Mou...\tF7" #: progman.rc:33 winefile.rc:28 -#, fuzzy msgid "&Copy...\tF8" -msgstr "&Copiar" +msgstr "&Copia...\tF8" #: progman.rc:35 msgid "&Properties\tAlt+Enter" -msgstr "" +msgstr "&Propietats\tAlt+Enter" #: progman.rc:37 msgid "&Execute..." -msgstr "" +msgstr "&Executa..." #: progman.rc:39 -#, fuzzy msgid "E&xit Windows" -msgstr "&Quant a Wine..." +msgstr "&Surt de Windows" #: progman.rc:41 taskmgr.rc:41 winefile.rc:63 winhlp32.rc:44 msgid "&Options" -msgstr "" +msgstr "&Opcions" #: progman.rc:42 msgid "&Arrange automatically" -msgstr "" +msgstr "Organitz&ar automàticament" #: progman.rc:43 -#, fuzzy msgid "&Minimize on run" -msgstr "Mí&nima" +msgstr "&Minimitza al executar" #: progman.rc:44 winefile.rc:73 msgid "&Save settings on exit" -msgstr "" +msgstr "&Desa ajustaments al sortir" #: progman.rc:46 taskmgr.rc:78 taskmgr.rc:255 msgid "&Windows" -msgstr "" +msgstr "&Finestres" #: progman.rc:47 msgid "&Overlapped\tShift+F5" -msgstr "" +msgstr "Superp&osats\tShift+F5" #: progman.rc:48 msgid "&Side by side\tShift+F4" -msgstr "" +msgstr "Junt&s\tShift+F4" #: progman.rc:49 msgid "&Arrange Icons" -msgstr "" +msgstr "Organitz&ar Icones" #: progman.rc:54 msgid "&About Program Manager" -msgstr "" +msgstr "Qu&ant a Gestor de Programas" #: progman.rc:60 msgid "Program Manager" -msgstr "" +msgstr "Gestor de Programas" #: progman.rc:64 -#, fuzzy msgid "Delete" -msgstr "&Suprimir" +msgstr "Suprimeix" #: progman.rc:65 msgid "Delete group `%s'?" -msgstr "" +msgstr "Suprimir grup `%s'?" #: progman.rc:66 msgid "Delete program `%s'?" -msgstr "" +msgstr "Suprimir programa `%s'?" #: progman.rc:67 winhlp32.rc:82 msgid "Not implemented" -msgstr "" +msgstr "No implementat" #: progman.rc:68 msgid "Error reading `%s'." -msgstr "" +msgstr "Error al llegir `%s'." #: progman.rc:69 msgid "Error writing `%s'." -msgstr "" +msgstr "Error al escriure `%s'." #: progman.rc:72 msgid "" "The group file `%s' cannot be opened.\n" "Should it be tried further on?" msgstr "" +"No es pot obrir el fitxer de grup `%s'.\n" +"S'ha d'intentar més tard?" #: progman.rc:74 msgid "Help not available." -msgstr "" +msgstr "Ajuda no disponible." #: progman.rc:75 msgid "Unknown feature in %s" -msgstr "" +msgstr "Funció desconeguda en %s" #: progman.rc:76 msgid "File `%s' exists. Not overwritten." -msgstr "" +msgstr "Fitxer `%s' existeix. No s'ha sobreescrit." #: progman.rc:77 msgid "Save group as `%s to prevent overwriting original files." -msgstr "" +msgstr "Desa el grup com `%s per evitar sobreescriure els fitxers originals." #: progman.rc:80 msgid "Programs" -msgstr "" +msgstr "Programas" #: progman.rc:81 msgid "Libraries (*.dll)" -msgstr "" +msgstr "Biblioteques (*.dll)" #: progman.rc:82 msgid "Icon files" -msgstr "" +msgstr "Fitxers d'icona" #: progman.rc:83 msgid "Icons (*.ico)" -msgstr "" +msgstr "Icones (*.ico)" #: reg.rc:27 msgid "" @@ -8799,315 +9357,323 @@ "REG [ ADD | DELETE | QUERY ]\n" "REG command /?\n" msgstr "" +"El sintaxi d'aquet ordre és:\n" +"\n" +"REG [ ADD | DELETE | QUERY ]\n" +"REG ordre /?\n" #: reg.rc:28 msgid "" "REG ADD key_name [/v value_name | /ve] [/t type] [/s separator] [/d data] [/" "f]\n" msgstr "" +"REG ADD nom_de_clau [/v nom_de_valor | /ve] [/t type] [/s separator] [/d " +"data] [/f]\n" #: reg.rc:29 msgid "REG DELETE key_name [/v value_name | /ve | /va] [/f]\n" -msgstr "" +msgstr "REG DELETE nom_de_clau [/v nom_de_valor | /ve | /va] [/f]\n" #: reg.rc:30 msgid "REG QUERY key_name [/v value_name | /ve] [/s]\n" -msgstr "" +msgstr "REG QUERY nom_de_clau [/v nom_de_valor | /ve] [/s]\n" #: reg.rc:31 msgid "The operation completed successfully\n" -msgstr "" +msgstr "La operació s'ha completat amb èxit\n" #: reg.rc:32 msgid "Error: Invalid key name\n" -msgstr "" +msgstr "Error: Nom de clau invàlid\n" #: reg.rc:33 msgid "Error: Invalid command line parameters\n" -msgstr "" +msgstr "Error: Paràmetres de línia d'ordres no vàlids\n" #: reg.rc:34 msgid "Error: Unable to add keys to remote machine\n" -msgstr "" +msgstr "Error: No es pot afegir els claus a un equip remot\n" #: reg.rc:35 msgid "" "Error: The system was unable to find the specified registry key or value\n" msgstr "" +"Error: El sistema no ha pogut trobar la clau o valor de registre " +"especificada\n" #: regedit.rc:31 msgid "&Registry" -msgstr "" +msgstr "&Registre" #: regedit.rc:33 msgid "&Import Registry File..." -msgstr "" +msgstr "&Importa Fitxer de Registre..." #: regedit.rc:34 msgid "&Export Registry File..." -msgstr "" +msgstr "&Exporta Fitxer de Registre..." #: regedit.rc:42 regedit.rc:87 -#, fuzzy msgid "&Modify..." -msgstr "&Copiar" +msgstr "&Modifica..." #: regedit.rc:46 regedit.rc:97 msgid "&Key" -msgstr "" +msgstr "&Clau" #: regedit.rc:48 regedit.rc:99 msgid "&String Value" -msgstr "" +msgstr "Valor de &Cadena" #: regedit.rc:49 regedit.rc:100 msgid "&Binary Value" -msgstr "" +msgstr "Valor &Binari" #: regedit.rc:50 regedit.rc:101 msgid "&DWORD Value" -msgstr "" +msgstr "Valor &DWORD" #: regedit.rc:51 regedit.rc:102 msgid "&Multi String Value" -msgstr "" +msgstr "Valor &Multicadena" #: regedit.rc:52 regedit.rc:103 msgid "&Expandable String Value" -msgstr "" +msgstr "Valor de Cadena Ampliabl&e" #: regedit.rc:56 regedit.rc:107 msgid "&Rename\tF2" -msgstr "" +msgstr "Canvia el &nom\tF2" #: regedit.rc:58 regedit.rc:110 msgid "&Copy Key Name" -msgstr "" +msgstr "&Copia Nom de Clau" #: regedit.rc:60 regedit.rc:112 wordpad.rc:50 msgid "&Find...\tCtrl+F" -msgstr "" +msgstr "&Cerca...\tCtrl+&F" #: regedit.rc:61 msgid "Find Ne&xt\tF3" -msgstr "" +msgstr "Cerca &Proper\tF3" #: regedit.rc:65 msgid "Status &Bar" -msgstr "" +msgstr "&Barra d'estat" #: regedit.rc:67 winefile.rc:50 msgid "Sp&lit" -msgstr "" +msgstr "Di&videix" #: regedit.rc:74 msgid "&Remove Favorite..." -msgstr "" +msgstr "T&reure Preferit..." #: regedit.rc:79 msgid "&About Registry Editor" -msgstr "" +msgstr "&Quant al Editor de Registre" #: regedit.rc:88 msgid "Modify Binary Data..." -msgstr "" +msgstr "Modifica Dades Binàries..." #: regedit.rc:109 msgid "&Export..." -msgstr "" +msgstr "&Exporta..." #: regedit.rc:134 msgid "Contains commands for working with the whole registry" -msgstr "" +msgstr "Conté ordres per treballar amb el registre sencer" #: regedit.rc:135 msgid "Contains commands for editing values or keys" -msgstr "" +msgstr "Conté ordres per editar els valors o els claus" #: regedit.rc:136 msgid "Contains commands for customising the registry window" -msgstr "" +msgstr "Conté ordres per personalitzar la finestra de registre" #: regedit.rc:137 msgid "Contains commands for accessing frequently used keys" -msgstr "" +msgstr "Conté ordres per acceder als claus freqüentment usats" #: regedit.rc:138 msgid "" "Contains commands for displaying help and information about registry editor" msgstr "" +"Conté ordres per mostrar ajuda i informació quant al editor de registre" #: regedit.rc:139 msgid "Contains commands for creating new keys or values" -msgstr "" +msgstr "Conté ordres per crear claus o valors nous" #: regedit.rc:124 msgid "Data" -msgstr "" +msgstr "Dades" #: regedit.rc:129 msgid "Registry Editor" -msgstr "" +msgstr "Editor de Registre" #: regedit.rc:191 msgid "Import Registry File" -msgstr "" +msgstr "Importar Fitxer de Registre" #: regedit.rc:192 msgid "Export Registry File" -msgstr "" +msgstr "Exportar Fitxer de Registre" #: regedit.rc:193 msgid "Registry files (*.reg)" -msgstr "" +msgstr "Fitxers de registre (*.reg)" #: regedit.rc:194 msgid "Win9x/NT4 Registry files (REGEDIT4)" -msgstr "" +msgstr "Fitxers de registre Win9x/NT4 (REGEDIT4)" #: regedit.rc:201 msgid "(Default)" -msgstr "" +msgstr "(Predeterminat)" #: regedit.rc:202 msgid "(value not set)" -msgstr "" +msgstr "(valor no establert)" #: regedit.rc:203 msgid "(cannot display value)" -msgstr "" +msgstr "(no es pot mostrar el valor)" #: regedit.rc:204 msgid "(unknown %d)" -msgstr "" +msgstr "(desconegut %d)" #: regedit.rc:160 msgid "Quits the registry editor" -msgstr "" +msgstr "Tanca l'editor de registre" #: regedit.rc:161 msgid "Adds keys to the favorites list" -msgstr "" +msgstr "Afegeix les claus a la llista de preferits" #: regedit.rc:162 msgid "Removes keys from the favorites list" -msgstr "" +msgstr "Treure les claus a la llista de preferits" #: regedit.rc:163 msgid "Shows or hides the status bar" -msgstr "" +msgstr "Mosta o amaga el barra d'estat" #: regedit.rc:164 msgid "Change position of split between two panes" -msgstr "" +msgstr "Canvia la posició de la división entre dos panells" #: regedit.rc:165 msgid "Refreshes the window" -msgstr "" +msgstr "Actualitza la finestra" #: regedit.rc:166 msgid "Deletes the selection" -msgstr "" +msgstr "Supremeix la selecció" #: regedit.rc:167 msgid "Renames the selection" -msgstr "" +msgstr "Canvia el nom de la selecció" #: regedit.rc:168 msgid "Copies the name of the selected key to the clipboard" -msgstr "" +msgstr "Copia el nom de la clau seleccionada al portapapers" #: regedit.rc:169 msgid "Finds a text string in a key, value or data" -msgstr "" +msgstr "Troba una cadena de text en un clau, un valor o unas dades" #: regedit.rc:170 msgid "Finds next occurrence of text specified in previous search" -msgstr "" +msgstr "Troba la següent aparició del text especificat en la cerca anterior" #: regedit.rc:144 msgid "Modifies the value's data" -msgstr "" +msgstr "Modifica les dades del valor" #: regedit.rc:145 msgid "Adds a new key" -msgstr "" +msgstr "Afegeix un clau nou" #: regedit.rc:146 msgid "Adds a new string value" -msgstr "" +msgstr "Afegeix un valor de cadena nou" #: regedit.rc:147 msgid "Adds a new binary value" -msgstr "" +msgstr "Afegeix un valor binari nou" #: regedit.rc:148 msgid "Adds a new double word value" -msgstr "" +msgstr "Afegeix un valor de paraula doble nou" #: regedit.rc:150 msgid "Imports a text file into the registry" -msgstr "" +msgstr "Importa un fitxer de text al registre" #: regedit.rc:152 msgid "Exports all or part of the registry to a text file" -msgstr "" +msgstr "Exporta tot o part del registre a un fitxer de text" #: regedit.rc:153 msgid "Prints all or part of the registry" -msgstr "" +msgstr "Imprimeix tot o part del registre" #: regedit.rc:155 msgid "Displays program information, version number and copyright" -msgstr "" +msgstr "Mostra informació de programa, nombre de versió, y drets d'autor" #: regedit.rc:178 msgid "Can't query value '%s'" -msgstr "" +msgstr "No es pot consultar el valor '%s'" #: regedit.rc:179 msgid "Can't edit keys of this type (%u)" -msgstr "" +msgstr "No es pot editar els claus d'aquest tipus (%u)" #: regedit.rc:180 msgid "Value is too big (%u)" -msgstr "" +msgstr "El valor es massa gran (%u)" #: regedit.rc:181 msgid "Confirm Value Delete" -msgstr "" +msgstr "Confirmar Eliminació de Valor" #: regedit.rc:182 msgid "Are you sure you want to delete value '%s'?" -msgstr "" +msgstr "Esteu segur que voleu suprimir el valor '%s'?" #: regedit.rc:186 msgid "Search string '%s' not found" -msgstr "" +msgstr "Cadena de cerca '%s' no trobada" #: regedit.rc:183 msgid "Are you sure you want to delete these values?" -msgstr "" +msgstr "Esteu segur que voleu suprimir aquests valors?" #: regedit.rc:184 msgid "New Key #%d" -msgstr "" +msgstr "Clau Nou #%d" #: regedit.rc:185 msgid "New Value #%d" -msgstr "" +msgstr "Valor Nou #%d" #: regedit.rc:177 msgid "Can't query key '%s'" -msgstr "" +msgstr "No es pot consultar el clau '%s'" #: regedit.rc:149 msgid "Adds a new multi string value" -msgstr "" +msgstr "Afegeix un valor de cadena múltiple nou" #: regedit.rc:171 msgid "Exports selected branch of the registry to a text file" -msgstr "" +msgstr "Exporta la branca del registre seleccionada a un fitxer de text" #: start.rc:46 msgid "" @@ -9133,6 +9699,30 @@ "This is free software, and you are welcome to redistribute it\n" "under certain conditions; run 'start /L' for details.\n" msgstr "" +"Inicia un programa o obrir un document en el programa normalment usat amb\n" +"els fitxers amb aquell sufix.\n" +"Ús:\n" +"start [opcions] nom_de_fitxer_del_programa [...]\n" +"start [options] nom_de_fitxer_del_document\n" +"\n" +"Opcions:\n" +"/M[inimized] Iniciar el programa minimitzat.\n" +"/MAX[imized] Iniciar el programa maximitzat.\n" +"/R[estored] Iniciar el programa normalment (ni minimitzat ni maximitzat).\n" +"/W[ait] Esperar que el programa iniciat termini, llavors surt amb el\n" +" seu codi de sortida.\n" +"/Unix Usar un nom de fitxer Unix i iniciar el fitxer com el\n" +" Explorador de Windows.\n" +"/ProgIDOpen Obrir un document usant el progID següent.\n" +"/L Mostrar la llicència d'usuari final.\n" +"/? Mostrar aquesta ajuda i sortir.\n" +"\n" +"start.exe versió 0.2 © 2003, Dan Kegel\n" +"Start ve amb ABSOLUTAMENT CAP GARANTIA; per més detalls executar amb " +"l'opció\n" +"/L.\n" +"Això és programari lliure, i esteu benvingut a redistribuir-lo sota certes\n" +"condicions; executeu 'start /L' pels detalls.\n" #: start.rc:64 msgid "" @@ -9153,6 +9743,20 @@ "\n" "See the COPYING.LIB file for license information.\n" msgstr "" +"start.exe versió 0.2 © 2003, Dan Kegel\n" +"Aquest programari és programari lliure; podeu redistribuir i/o modificar-lo\n" +"sota els termes de la Llicència Pública General Menor GNU com publicada per\n" +"la Free Software Foundation; o la versió 2.1 de la Llicència, o (a la seva\n" +"elecció) qualsevol versió posterior.\n" +"\n" +"Aquest programari es distribueix en l'esperança que sigui útil, però SENSE\n" +"CAP GARANTIA, fins i tot sense la garantia implícita de COMERCIABILITAT o\n" +"APTITUD PER A PROPÒSITS DETERMINATS. Consulteu la Llicència Pública General\n" +"Menor GNU per més detalls.\n" +"\n" +"Hauríeu d'haver rebut una còpia de la Llicència Pública General Menor GNU\n" +"juntament amb aquest programari, si no, escriviu a la Free Software\n" +"Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, EUA.\n" #: start.rc:66 msgid "" @@ -9160,401 +9764,414 @@ "specified file.\n" "ShellExecuteEx failed" msgstr "" +"L'aplicació no s'ha pogut iniciar, o no hi ha cap aplicació associada amb el " +"fitxer especificat.\n" +"Ha fallat ShellExecuteEx" #: start.rc:68 msgid "Could not translate the specified Unix filename to a DOS filename." msgstr "" +"No s'ha pogut traduir el nom de fitxer Unix especificat a un nom de fitxer " +"DOS." #: taskkill.rc:27 msgid "Usage: taskkill [/?] [/f] [/im ProcessName | /pid ProcessID]\n" -msgstr "" +msgstr "Ús: taskkill [/?] [/f] [/im NomDeProcés | /pid IdDeProcés]\n" #: taskkill.rc:28 msgid "Error: Unknown or invalid command line option specified.\n" -msgstr "" +msgstr "Error: Opció de línia d'ordres invàlida o desconeguda especificada.\n" #: taskkill.rc:29 msgid "Error: Invalid command line parameter specified.\n" -msgstr "" +msgstr "Error: Paràmetre de línia d'ordres invàlid especificat.\n" #: taskkill.rc:30 msgid "Error: One of options /im or /pid must be specified.\n" -msgstr "" +msgstr "Error: Un de les opcions /im i /pid s'ha d'especificar.\n" #: taskkill.rc:31 msgid "Error: Option %s expects a command line parameter.\n" -msgstr "" +msgstr "Error: L'opció %s espera un paràmetre de línia d'ordres.\n" #: taskkill.rc:32 msgid "Error: Options /im and /pid are mutually exclusive.\n" -msgstr "" +msgstr "Error: Les opcions /im i /pid són mútuament excloents.\n" #: taskkill.rc:33 msgid "Close message sent to top-level windows of process with PID %u.\n" msgstr "" +"Missatge de tancar enviat a les finestres del nivell superior del procès amb " +"PID %u.\n" #: taskkill.rc:34 msgid "" "Close message sent to top-level windows of process \"%s\" with PID %u.\n" msgstr "" +"Missatge de tancar enviat a les finestres del nivell superior del procès \"%s" +"\" amb PID %u.\n" #: taskkill.rc:35 msgid "Process with PID %u was forcibly terminated.\n" -msgstr "" +msgstr "El procès amb PID %u s'ha terminat a la força.\n" #: taskkill.rc:36 msgid "Process \"%s\" with PID %u was forcibly terminated.\n" -msgstr "" +msgstr "El procès \"%s\" amb PID %u s'ha terminat a la força.\n" #: taskkill.rc:37 msgid "Error: Could not find process \"%s\".\n" -msgstr "" +msgstr "Error: No s'ha pogut trobar el procès \"%s\".\n" #: taskkill.rc:38 msgid "Error: Unable to enumerate the process list.\n" -msgstr "" +msgstr "Error: No es pot enumerar la llista de processos.\n" #: taskkill.rc:39 msgid "Error: Unable to terminate process \"%s\".\n" -msgstr "" +msgstr "Error: No es pot terminar el procès \"%s\".\n" #: taskkill.rc:40 msgid "Error: Process self-termination is not permitted.\n" -msgstr "" +msgstr "Error: L'auto-terminació de procès no és permet.\n" #: taskmgr.rc:37 taskmgr.rc:108 msgid "&New Task (Run...)" -msgstr "" +msgstr "Tasca &Nova (Executa...)" #: taskmgr.rc:39 msgid "E&xit Task Manager" -msgstr "" +msgstr "&Surt de l'Administrador de Tasques" #: taskmgr.rc:45 -#, fuzzy msgid "&Minimize On Use" -msgstr "Mí&nima" +msgstr "&Mínima Al Usar" #: taskmgr.rc:47 msgid "&Hide When Minimized" -msgstr "" +msgstr "&Amaga Cuan Minimitzat" #: taskmgr.rc:49 taskmgr.rc:257 msgid "&Show 16-bit tasks" -msgstr "" +msgstr "Mostra ta&sques de 16 bits" #: taskmgr.rc:54 msgid "&Refresh Now" -msgstr "" +msgstr "Actualitza A&ra" #: taskmgr.rc:55 msgid "&Update Speed" -msgstr "" +msgstr "Frequencia d'Act&ualització" #: taskmgr.rc:57 taskmgr.rc:158 msgid "&High" -msgstr "" +msgstr "&Alt" #: taskmgr.rc:58 taskmgr.rc:162 msgid "&Normal" -msgstr "" +msgstr "&Normal" #: taskmgr.rc:60 taskmgr.rc:166 msgid "&Low" -msgstr "" +msgstr "&Baix" #: taskmgr.rc:61 msgid "&Paused" -msgstr "" +msgstr "&Pausat" #: taskmgr.rc:68 taskmgr.rc:256 msgid "&Select Columns..." -msgstr "" +msgstr "&Selecciona Columnes..." #: taskmgr.rc:69 taskmgr.rc:258 msgid "&CPU History" -msgstr "" +msgstr "Historis de &CPU" #: taskmgr.rc:71 taskmgr.rc:259 msgid "&One Graph, All CPUs" -msgstr "" +msgstr "Un Gràfic, T&otes les CPU" #: taskmgr.rc:73 taskmgr.rc:260 msgid "One Graph &Per CPU" -msgstr "" +msgstr "Un Gràfic &Per CPU" #: taskmgr.rc:76 taskmgr.rc:261 msgid "&Show Kernel Times" -msgstr "" +msgstr "Mostra les Hores del Nucli" #: taskmgr.rc:80 taskmgr.rc:96 taskmgr.rc:123 winefile.rc:79 msgid "Tile &Horizontally" -msgstr "" +msgstr "Mosaic &Horitzontal" #: taskmgr.rc:81 taskmgr.rc:97 taskmgr.rc:124 msgid "Tile &Vertically" -msgstr "" +msgstr "Mosaic &Vertical" #: taskmgr.rc:82 taskmgr.rc:98 taskmgr.rc:125 -#, fuzzy msgid "&Minimize" -msgstr "Mí&nima" +msgstr "&Minimitza" #: taskmgr.rc:84 taskmgr.rc:100 taskmgr.rc:127 msgid "&Cascade" -msgstr "" +msgstr "&Cascada" #: taskmgr.rc:85 taskmgr.rc:101 taskmgr.rc:121 msgid "&Bring To Front" -msgstr "" +msgstr "&Porta Al Primer Pla" #: taskmgr.rc:90 msgid "&About Task Manager" -msgstr "" +msgstr "Quant &a l'Administrador de Tasques" #: taskmgr.rc:120 msgid "&Switch To" -msgstr "" +msgstr "&Canvia A" #: taskmgr.rc:129 msgid "&End Task" -msgstr "" +msgstr "T&ermina Tasca" #: taskmgr.rc:130 msgid "&Go To Process" -msgstr "" +msgstr "Ana Al Procés" #: taskmgr.rc:149 msgid "&End Process" -msgstr "" +msgstr "T&ermina Procés" #: taskmgr.rc:150 msgid "End Process &Tree" -msgstr "" +msgstr "&Termina Arbre de Procés" #: taskmgr.rc:152 winedbg.rc:29 msgid "&Debug" -msgstr "" +msgstr "&Depura" #: taskmgr.rc:154 msgid "Set &Priority" -msgstr "" +msgstr "Estableix &Prioritat" #: taskmgr.rc:156 msgid "&Realtime" -msgstr "" +msgstr "Temps &real" #: taskmgr.rc:160 msgid "&Above Normal" -msgstr "" +msgstr "&Amunt del Normal" #: taskmgr.rc:164 msgid "&Below Normal" -msgstr "" +msgstr "A&baix del Normal" #: taskmgr.rc:169 msgid "Set &Affinity..." -msgstr "" +msgstr "Extableix &Afinitat..." #: taskmgr.rc:170 msgid "Edit Debug &Channels..." -msgstr "" +msgstr "Edita les Canals de Depuració..." #: taskmgr.rc:180 taskmgr.rc:181 msgid "Task Manager" -msgstr "" +msgstr "Administrador de Tasques" #: taskmgr.rc:182 msgid "Create New Task" -msgstr "" +msgstr "Crea Tasca Nova" #: taskmgr.rc:187 msgid "Runs a new program" -msgstr "" +msgstr "Executa un nou programa" #: taskmgr.rc:188 msgid "Task Manager remains in front of all other windows unless minimized" msgstr "" +"L'Administrador de Tasques queda damunt totes les finestres a menys que " +"estigui minimitzat" #: taskmgr.rc:190 msgid "Task Manager is minimized when a SwitchTo operation is performed" msgstr "" +"Es minimitza l'Administrador de Tasques cuan es realitza una operació " +"SwitchTo" #: taskmgr.rc:191 msgid "Hide the Task Manager when it is minimized" -msgstr "" +msgstr "Amaga l'Administrador de Tasques cuan es minimitza" #: taskmgr.rc:192 msgid "Force Task Manager to update now, regardless of Update Speed setting" msgstr "" +"Força que l'Administrador de Tasques s'actualitzi ara, independentment de la " +"configuració de Velocitat d'Actualització" #: taskmgr.rc:193 msgid "Displays tasks by using large icons" -msgstr "" +msgstr "Mostra les tasques usant icones grans" #: taskmgr.rc:194 msgid "Displays tasks by using small icons" -msgstr "" +msgstr "Mostra les tasques usant icones petits" #: taskmgr.rc:195 msgid "Displays information about each task" -msgstr "" +msgstr "Mosta informació sobre cada tasca" #: taskmgr.rc:196 msgid "Updates the display twice per second" -msgstr "" +msgstr "Actualitza la pantalla dues vegades per segon" #: taskmgr.rc:197 msgid "Updates the display every two seconds" -msgstr "" +msgstr "Actualitza la pantalla cada dos segons" #: taskmgr.rc:198 msgid "Updates the display every four seconds" -msgstr "" +msgstr "Actualitza la pantalla cada quatre segons" #: taskmgr.rc:203 msgid "Does not automatically update" -msgstr "" +msgstr "No s'actualitza automàticament" #: taskmgr.rc:205 msgid "Tiles the windows horizontally on the desktop" -msgstr "" +msgstr "Mosaic horizontal de les finestras en l'escriptori" #: taskmgr.rc:206 msgid "Tiles the windows vertically on the desktop" -msgstr "" +msgstr "Mosaic vertical de les finestras en l'escriptori" #: taskmgr.rc:207 msgid "Minimizes the windows" -msgstr "" +msgstr "Minimitza les finestres" #: taskmgr.rc:208 msgid "Maximizes the windows" -msgstr "" +msgstr "Maximitza les finestres" #: taskmgr.rc:209 msgid "Cascades the windows diagonally on the desktop" -msgstr "" +msgstr "Cascades de les finestres en diagonal en l'escriptori" #: taskmgr.rc:210 msgid "Brings the window front, but does not switch to it" -msgstr "" +msgstr "Porta la finestra al primer pla, però no canvia a ella" #: taskmgr.rc:211 msgid "Displays Task Manager help topics" -msgstr "" +msgstr "Mostra temas d'ajuda de l'Administrador de Tasques" #: taskmgr.rc:212 msgid "Displays program information, version number, and copyright" -msgstr "" +msgstr "Mostra informació de programa, nombre de versió, i drets de autor" #: taskmgr.rc:213 msgid "Exits the Task Manager application" -msgstr "" +msgstr "Tanca l'aplicació Administrador de Tasques" #: taskmgr.rc:215 msgid "Shows 16-bit tasks under the associated ntvdm.exe" -msgstr "" +msgstr "Mostra tasques de 16 bits sota el ntvdm.exe associat" #: taskmgr.rc:216 msgid "Select which columns will be visible on the Process page" -msgstr "" +msgstr "Seleccionar quales columnes seran visibles a la pàgina de Procés" #: taskmgr.rc:217 msgid "Displays kernel time in the performance graphs" -msgstr "" +msgstr "Mostra l'hora del nucli en els gràfics de rendiment" #: taskmgr.rc:219 msgid "A single history graph shows total CPU usage" -msgstr "" +msgstr "Una sola gràfica d'història mostra el ús de CPU total" #: taskmgr.rc:220 msgid "Each CPU has its own history graph" -msgstr "" +msgstr "Cada CPU té la seva pròpia gràfica d'història" #: taskmgr.rc:222 msgid "Brings a task to the foreground, switch focus to that task" -msgstr "" +msgstr "Porta una tasca al primer pla, canvia el focus a aquesta tasca" #: taskmgr.rc:227 msgid "Tells the selected tasks to close" -msgstr "" +msgstr "Diu a les tasques seleccionades que es tanquin" #: taskmgr.rc:228 msgid "Switches the focus to the process of the selected task" -msgstr "" +msgstr "Canvia el focus al procés de la tasca seleccionada" #: taskmgr.rc:229 msgid "Restores the Task Manager from its hidden state" -msgstr "" +msgstr "Restaura l'Administrador de Tasques del seu estat amagat" #: taskmgr.rc:230 msgid "Removes the process from the system" -msgstr "" +msgstr "Treu el procés del sistema" #: taskmgr.rc:232 msgid "Removes this process and all descendants from the system" -msgstr "" +msgstr "Treu aquest procés i tots els descendents del sistema" #: taskmgr.rc:233 msgid "Attaches the debugger to this process" -msgstr "" +msgstr "Adjunta el depurador a aquest procés" #: taskmgr.rc:235 msgid "Controls which processors the process will be allowed to run on" -msgstr "" +msgstr "Controla en quals processadors es permetrà que el procès executi" #: taskmgr.rc:237 msgid "Sets process to the REALTIME priority class" -msgstr "" +msgstr "Dóna al procés la classe de prioritat TEMPS REAL" #: taskmgr.rc:238 msgid "Sets process to the HIGH priority class" -msgstr "" +msgstr "Dóna al procés la classe de prioritat ALT" #: taskmgr.rc:240 msgid "Sets process to the ABOVE NORMAL priority class" -msgstr "" +msgstr "Dóna al procés la classe de prioritat SOBRE DEL NORMAL" #: taskmgr.rc:242 msgid "Sets process to the NORMAL priority class" -msgstr "" +msgstr "Dóna al procés la classe de prioritat NORMAL" #: taskmgr.rc:244 msgid "Sets process to the BELOW NORMAL priority class" -msgstr "" +msgstr "Dóna al procés la classe de prioritat SOTA DEL NORMAL" #: taskmgr.rc:245 msgid "Sets process to the LOW priority class" -msgstr "" +msgstr "Dóna al procés la classe de prioritat SOTA" #: taskmgr.rc:247 msgid "Controls Debug Channels" -msgstr "" +msgstr "Controla els Canals de Depuració" #: taskmgr.rc:263 msgid "Processes" -msgstr "" +msgstr "Processos" #: taskmgr.rc:264 msgid "Performance" -msgstr "" +msgstr "Rendiment" #: taskmgr.rc:265 msgid "CPU Usage: %3d%%" -msgstr "" +msgstr "Ús de CPU: %3d%%" #: taskmgr.rc:266 msgid "Processes: %d" -msgstr "" +msgstr "Processos: %d" #: taskmgr.rc:267 msgid "Mem Usage: %dK / %dK" -msgstr "" +msgstr "Ús de Memòria: %dK / %dK" #: taskmgr.rc:272 msgid "Image Name" -msgstr "" +msgstr "Nom de Imatge" #: taskmgr.rc:273 msgid "PID" @@ -9566,96 +10183,95 @@ #: taskmgr.rc:275 msgid "CPU Time" -msgstr "" +msgstr "Temps de CPU" #: taskmgr.rc:276 msgid "Mem Usage" -msgstr "" +msgstr "Ús de Mem" #: taskmgr.rc:277 msgid "Mem Delta" -msgstr "" +msgstr "Delta de Mem" #: taskmgr.rc:278 msgid "Peak Mem Usage" -msgstr "" +msgstr "Ús de Mem Més Gran" #: taskmgr.rc:279 msgid "Page Faults" -msgstr "" +msgstr "Fallades de Pàgina" #: taskmgr.rc:280 msgid "USER Objects" -msgstr "" +msgstr "Objectes USER" #: taskmgr.rc:281 msgid "I/O Reads" -msgstr "" +msgstr "Lectures E/S" #: taskmgr.rc:282 msgid "I/O Read Bytes" -msgstr "" +msgstr "Bytes E/S Llegits" #: taskmgr.rc:283 msgid "Session ID" -msgstr "" +msgstr "ID de Sessió" #: taskmgr.rc:284 msgid "Username" -msgstr "" +msgstr "Nom de Usuari" #: taskmgr.rc:285 msgid "PF Delta" -msgstr "" +msgstr "Delta de PF" #: taskmgr.rc:286 -#, fuzzy msgid "VM Size" -msgstr "&Grandària" +msgstr "Mida de VM" #: taskmgr.rc:287 msgid "Paged Pool" -msgstr "" +msgstr "Bloc Paginat" #: taskmgr.rc:288 msgid "NP Pool" -msgstr "" +msgstr "Bloc NP" #: taskmgr.rc:289 msgid "Base Pri" -msgstr "" +msgstr "Prioritat Base" #: taskmgr.rc:290 msgid "Handles" -msgstr "" +msgstr "Mànecs" #: taskmgr.rc:291 msgid "Threads" -msgstr "" +msgstr "Fils" #: taskmgr.rc:292 msgid "GDI Objects" -msgstr "" +msgstr "Objectes GDI" #: taskmgr.rc:293 msgid "I/O Writes" -msgstr "" +msgstr "Escriptures E/S" #: taskmgr.rc:294 msgid "I/O Write Bytes" -msgstr "" +msgstr "Bytes E/S escrits" #: taskmgr.rc:295 msgid "I/O Other" -msgstr "" +msgstr "Altre E/S" #: taskmgr.rc:296 msgid "I/O Other Bytes" -msgstr "" +msgstr "Bytes d'Altre I/O" #: taskmgr.rc:301 msgid "Task Manager Warning" -msgstr "" +msgstr "Advertència de l'Administrador de Tasques" #: taskmgr.rc:304 msgid "" @@ -9663,10 +10279,14 @@ "cause undesired results including system instability. Are you\n" "sure you want to change the priority class?" msgstr "" +"ADVERTÈNCIA: El canvi de la classe de prioritat d'aquest\n" +"procés pot causar resultats no desitjats incloent la\n" +"inestabilitat del sistema. Esteu segur que voleu canviar la\n" +"classe de prioritat?" #: taskmgr.rc:305 msgid "Unable to Change Priority" -msgstr "" +msgstr "No es pot Canviar la Prioritat" #: taskmgr.rc:310 msgid "" @@ -9676,52 +10296,60 @@ "data before it is terminated. Are you sure you want to\n" "terminate the process?" msgstr "" +"ADVERTÈNCIA: Acabar un procés pot causar resultats no\n" +"desitjats incloent la pèrdua de dades i la inestabilitat\n" +"del sistema. Al procés no se li donarà l'oportunitat de\n" +"desar el seu estat o les sevas dades abans que s'acaba.\n" +"Esteu segur que voleu acabar el procés?" #: taskmgr.rc:311 msgid "Unable to Terminate Process" -msgstr "" +msgstr "No es pot Terminar el Procès" #: taskmgr.rc:313 msgid "" "WARNING: Debugging this process may result in loss of data.\n" "Are you sure you wish to attach the debugger?" msgstr "" +"ADVERTÈNCIA: Depurar aquest procés pot resultar en la\n" +"pèrdua de dades.\n" +"Esteu segur que voleu adjuntar el depurador?" #: taskmgr.rc:314 msgid "Unable to Debug Process" -msgstr "" +msgstr "No es pot Depurar el Procès" #: taskmgr.rc:315 msgid "The process must have affinity with at least one processor" -msgstr "" +msgstr "El procès ha de tenir afinitat amb al menys un processador" #: taskmgr.rc:316 msgid "Invalid Option" -msgstr "" +msgstr "Opció Invàlida" #: taskmgr.rc:317 msgid "Unable to Access or Set Process Affinity" -msgstr "" +msgstr "No es pot Acceder o Establer l'Afinitat del Procès" #: taskmgr.rc:322 msgid "System Idle Process" -msgstr "" +msgstr "Procés Inactiu del Sistema" #: taskmgr.rc:323 msgid "Not Responding" -msgstr "" +msgstr "No Respondent" #: taskmgr.rc:324 msgid "Running" -msgstr "" +msgstr "Executant" #: taskmgr.rc:325 msgid "Task" -msgstr "" +msgstr "Tasca" #: taskmgr.rc:327 msgid "Debug Channels" -msgstr "" +msgstr "Canals de Depuració" #: taskmgr.rc:328 msgid "Fixme" @@ -9733,15 +10361,15 @@ #: taskmgr.rc:330 msgid "Warn" -msgstr "" +msgstr "Adv" #: taskmgr.rc:331 msgid "Trace" -msgstr "" +msgstr "Rastreig" #: uninstaller.rc:26 msgid "Wine Application Uninstaller" -msgstr "" +msgstr "Desinstal·lador d'Aplicacions de Wine" #: uninstaller.rc:27 msgid "" @@ -9749,191 +10377,194 @@ "executable.\n" "Do you want to remove the uninstall entry from the registry?" msgstr "" +"L'execució del ordre de desinstalació '%s' ha fallat, potser a causa de la " +"falta del executable.\n" +"Voleu treure l'entrada de desinstal·lació del registre?" #: view.rc:33 msgid "&Pan" -msgstr "" +msgstr "&Barrit" #: view.rc:35 msgid "&Scale to Window" -msgstr "" +msgstr "E&scala a la finestra" #: view.rc:37 msgid "&Left" -msgstr "" +msgstr "A &L'esquerra" #: view.rc:38 msgid "&Right" -msgstr "" +msgstr "Al D&reta" #: view.rc:39 msgid "&Up" -msgstr "" +msgstr "Am&unt" #: view.rc:40 msgid "&Down" -msgstr "" +msgstr "A &Baix" #: view.rc:46 msgid "Regular Metafile Viewer" -msgstr "" +msgstr "Visualitzador de Metafitxers Regular" #: winecfg.rc:31 msgid "Libraries" -msgstr "" +msgstr "Biblioteques" #: winecfg.rc:32 msgid "Drives" -msgstr "" +msgstr "Unitats" #: winecfg.rc:33 msgid "Select the Unix target directory, please." -msgstr "" +msgstr "Seleccioneu el directori de destinació d'Unix, si us plau." #: winecfg.rc:35 msgid "Show &Advanced" -msgstr "" +msgstr "Mostrar &Avançat" #: winecfg.rc:34 msgid "Hide &Advanced" -msgstr "" +msgstr "Amagar &Avançat" #: winecfg.rc:36 msgid "(No Theme)" -msgstr "" +msgstr "(Cap Tema)" #: winecfg.rc:37 msgid "Graphics" -msgstr "" +msgstr "Gràfics" #: winecfg.rc:38 msgid "Desktop Integration" -msgstr "" +msgstr "Integració d'Escriptori" #: winecfg.rc:39 msgid "Audio" -msgstr "" +msgstr "Àudio" #: winecfg.rc:40 -#, fuzzy msgid "About" -msgstr "&Quant a Wine..." +msgstr "Quant a..." #: winecfg.rc:41 msgid "Wine configuration" -msgstr "" +msgstr "Configuració de Wine" #: winecfg.rc:43 msgid "Theme files (*.msstyles; *.theme)" -msgstr "" +msgstr "Fitxer de tema (*.msstyles; *.theme)" #: winecfg.rc:44 -#, fuzzy msgid "Select a theme file" -msgstr "Seleccionar &tot el text" +msgstr "Seleccioneu un fitxer de tema" #: winecfg.rc:45 msgid "Folder" -msgstr "" +msgstr "Carpeta" #: winecfg.rc:46 msgid "Links to" -msgstr "" +msgstr "Enllaça a" #: winecfg.rc:42 msgid "Wine configuration for %s" -msgstr "" +msgstr "Configuració de Wine para %s" #: winecfg.rc:87 msgid "Selected driver: %s" -msgstr "" +msgstr "Controlador seleccionat: %s" #: winecfg.rc:88 msgid "(None)" -msgstr "" +msgstr "(Cap)" #: winecfg.rc:89 msgid "Audio test failed!" -msgstr "" +msgstr "Ha fallat la prova d'audio!" #: winecfg.rc:91 msgid "(System default)" -msgstr "" +msgstr "(Defecte del sistema)" #: winecfg.rc:51 msgid "" "Changing the load order of this library is not recommended.\n" "Are you sure you want to do this?" msgstr "" +"Canviar el orden de carga d'aquesta biblioteca no es recomana.\n" +"Esteu segur que voleu fer això?" #: winecfg.rc:52 msgid "Warning: system library" -msgstr "" +msgstr "Advertència: biblioteca de sistema" #: winecfg.rc:53 msgid "native" -msgstr "" +msgstr "nativa" #: winecfg.rc:54 msgid "builtin" -msgstr "" +msgstr "interna" #: winecfg.rc:55 msgid "native, builtin" -msgstr "" +msgstr "nativa, interna" #: winecfg.rc:56 msgid "builtin, native" -msgstr "" +msgstr "interna, nativa" #: winecfg.rc:57 msgid "disabled" -msgstr "" +msgstr "discapacitat" #: winecfg.rc:58 msgid "Default Settings" -msgstr "" +msgstr "Configuració Predeterminada" #: winecfg.rc:59 msgid "Wine Programs (*.exe; *.exe.so)" -msgstr "" +msgstr "Programas de Wine (*.exe; *.exe.so)" #: winecfg.rc:60 msgid "Use global settings" -msgstr "" +msgstr "Usar ajustaments globals" #: winecfg.rc:61 msgid "Select an executable file" -msgstr "" +msgstr "Seleccioneu un fitxer executable" #: winecfg.rc:66 msgid "Hardware" -msgstr "" +msgstr "Maquinari" #: winecfg.rc:67 msgctxt "vertex shader mode" msgid "None" -msgstr "" +msgstr "Cap" #: winecfg.rc:72 msgid "Autodetect..." -msgstr "" +msgstr "Autodetectar..." #: winecfg.rc:73 msgid "Local hard disk" -msgstr "" +msgstr "Disc dur local" #: winecfg.rc:74 msgid "Network share" -msgstr "" +msgstr "Recurs compartit de xarxa" #: winecfg.rc:75 msgid "Floppy disk" -msgstr "" +msgstr "Disquet" #: winecfg.rc:76 msgid "CD-ROM" -msgstr "" +msgstr "CD-ROM" #: winecfg.rc:77 msgid "" @@ -9941,10 +10572,14 @@ "\n" "Each drive must have a letter, from A to Z, so you cannot have more than 26." msgstr "" +"No podeu afegir més unitats.\n" +"\n" +"Cada unitat ha de tenir una lletra, de A a Z, així que no podeu tenir més de " +"26." #: winecfg.rc:78 msgid "System drive" -msgstr "" +msgstr "Unitat de sistema" #: winecfg.rc:79 msgid "" @@ -9953,15 +10588,19 @@ "Most Windows applications expect drive C to exist, and will die messily if " "it doesn't. If you proceed remember to recreate it!" msgstr "" +"Esteu segur que voleu suprimir la unitat C?\n" +"\n" +"La majoría de les aplicacions de Windows esperen que la unitat C existeixi, " +"y fallaran desordenadament si no. Si procedeixes, recordeu recrear-la!" #: winecfg.rc:80 msgctxt "Drive letter" msgid "Letter" -msgstr "" +msgstr "Lletra d'Unitat" #: winecfg.rc:81 msgid "Drive Mapping" -msgstr "" +msgstr "Mapa d'Unitat" #: winecfg.rc:82 msgid "" @@ -9969,199 +10608,204 @@ "\n" "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" +"No teniu una unitat C. Això no està molt bé.\n" +"\n" +"Recordeu fer clic en 'Afegir' en la pestanya Unitats per crear una!\n" #: winecfg.rc:96 msgid "Controls Background" -msgstr "" +msgstr "Controls--Fons" #: winecfg.rc:97 msgid "Controls Text" -msgstr "" +msgstr "Controls--Text" #: winecfg.rc:99 msgid "Menu Background" -msgstr "" +msgstr "Menú--Fons" #: winecfg.rc:100 msgid "Menu Text" -msgstr "" +msgstr "Menú--Text" #: winecfg.rc:101 msgid "Scrollbar" -msgstr "" +msgstr "Barra de Desplaçament" #: winecfg.rc:102 -#, fuzzy msgid "Selection Background" -msgstr "Seleccionar &tot el text" +msgstr "Selecció--Fons" #: winecfg.rc:103 -#, fuzzy msgid "Selection Text" -msgstr "Seleccionar &tot el text" +msgstr "Selecció--Text" #: winecfg.rc:104 msgid "ToolTip Background" -msgstr "" +msgstr "Indicador de Funció--Fons" #: winecfg.rc:105 msgid "ToolTip Text" -msgstr "" +msgstr "Indicador de Funció--Text" #: winecfg.rc:106 msgid "Window Background" -msgstr "" +msgstr "Finestra--Fons" #: winecfg.rc:107 msgid "Window Text" -msgstr "" +msgstr "Finestra--Text" #: winecfg.rc:108 msgid "Active Title Bar" -msgstr "" +msgstr "Títol Actiu--Barra" #: winecfg.rc:109 msgid "Active Title Text" -msgstr "" +msgstr "Títol Actiu--Text" #: winecfg.rc:110 msgid "Inactive Title Bar" -msgstr "" +msgstr "Títol Inactiu--Barra" #: winecfg.rc:111 msgid "Inactive Title Text" -msgstr "" +msgstr "Títol Inactiu--Text" #: winecfg.rc:112 msgid "Message Box Text" -msgstr "" +msgstr "Text de Quadre de Missatge" #: winecfg.rc:113 msgid "Application Workspace" -msgstr "" +msgstr "Espai de Treball d'Aplicació" #: winecfg.rc:114 msgid "Window Frame" -msgstr "" +msgstr "Marca de Finestra" #: winecfg.rc:115 msgid "Active Border" -msgstr "" +msgstr "Vora Activa" #: winecfg.rc:116 msgid "Inactive Border" -msgstr "" +msgstr "Vora Inactiva" #: winecfg.rc:117 msgid "Controls Shadow" -msgstr "" +msgstr "Controls--Ombra" #: winecfg.rc:118 msgid "Gray Text" -msgstr "" +msgstr "Text Gris" #: winecfg.rc:119 msgid "Controls Highlight" -msgstr "" +msgstr "Controls--Ressalt" #: winecfg.rc:120 msgid "Controls Dark Shadow" -msgstr "" +msgstr "Controls--Ombra Fosca" #: winecfg.rc:121 msgid "Controls Light" -msgstr "" +msgstr "Controls--Brillo" #: winecfg.rc:122 msgid "Controls Alternate Background" -msgstr "" +msgstr "Controls--Fons Alternatiu" #: winecfg.rc:123 msgid "Hot Tracked Item" -msgstr "" +msgstr "Element Ressaltat" #: winecfg.rc:124 msgid "Active Title Bar Gradient" -msgstr "" +msgstr "Gradient de Barra de Títol Actiu" #: winecfg.rc:125 msgid "Inactive Title Bar Gradient" -msgstr "" +msgstr "Gradient de Barra de Títol Inactiu" #: winecfg.rc:126 msgid "Menu Highlight" -msgstr "" +msgstr "Menú--Ressalt" #: winecfg.rc:127 msgid "Menu Bar" -msgstr "" +msgstr "Menú--Barra" #: wineconsole.rc:26 msgid "Set &Defaults" -msgstr "" +msgstr "Establir valors pre&determinats" #: wineconsole.rc:28 msgid "&Mark" -msgstr "" +msgstr "&Marcar" #: wineconsole.rc:31 -#, fuzzy msgid "&Select all" -msgstr "Seleccionar &tot el text" +msgstr "&Selecciona tot" #: wineconsole.rc:32 msgid "Sc&roll" -msgstr "" +msgstr "Desplaça&r" #: wineconsole.rc:33 msgid "S&earch" -msgstr "" +msgstr "C&ercar" #: wineconsole.rc:36 msgid "Setup - Default settings" -msgstr "" +msgstr "Instalació - Ajustaments predeterminats" #: wineconsole.rc:37 msgid "Setup - Current settings" -msgstr "" +msgstr "Instalació - Ajustaments actuals" #: wineconsole.rc:38 msgid "Configuration error" -msgstr "" +msgstr "Error de configuració" #: wineconsole.rc:39 msgid "Screen buffer size must be greater or equal to the window's one" msgstr "" +"La mida de la memòria intermèdia de pantalla ha de ser major o igual al de " +"la finestra" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" -msgstr "" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" +msgstr "Cada caràcter és %ld píxels d'ampla per %ld píxels d'alta" #: wineconsole.rc:35 msgid "This is a test" -msgstr "" +msgstr "Això és una prova" #: wineconsole.rc:41 msgid "wineconsole: Couldn't parse event id\n" -msgstr "" +msgstr "wineconsole: No s'ha pogut procesar la id del event\n" #: wineconsole.rc:42 msgid "wineconsole: Invalid backend\n" -msgstr "" +msgstr "wineconsole: Backend invàlid\n" #: wineconsole.rc:43 msgid "wineconsole: Unrecognized command line option\n" -msgstr "" +msgstr "wineconsole: Opció de línea d'ordres no reconeguda\n" #: wineconsole.rc:44 msgid "Starts a program in a Wine console\n" -msgstr "" +msgstr "Inicia un programa en una consola Wine\n" #: wineconsole.rc:45 msgid "" "wineconsole: Starting program %s failed.\n" "The command is invalid.\n" msgstr "" +"wineconsole: El iniciar el programa %s ha fallat.\n" +"L'ordre és invàlida.\n" #: wineconsole.rc:47 msgid "" @@ -10171,6 +10815,11 @@ "\n" "Options:\n" msgstr "" +"\n" +"Ús:\n" +" wineconsole [opcions] \n" +"\n" +"Opcions:\n" #: wineconsole.rc:49 msgid "" @@ -10179,10 +10828,14 @@ " try to setup the current terminal as a Wine " "console.\n" msgstr "" +" --backend={user|curses} Triar user generarà una finestra nova, curses\n" +" intentarà configurar el terminal actual com " +"consola de Wine.\n" #: wineconsole.rc:50 msgid " The Wine program to launch in the console.\n" msgstr "" +" El programa Wine que s'iniciarà en la consola.\n" #: wineconsole.rc:51 msgid "" @@ -10192,119 +10845,123 @@ "Starts the Wine command prompt in a Wine console.\n" "\n" msgstr "" +"\n" +"Exemple:\n" +" wineconsole cmd\n" +"Inicia la línea d'ordres en una consola Wine.\n" +"\n" #: winedbg.rc:35 msgid "Wine program crash" -msgstr "" +msgstr "Crash del programa Wine" #: winedbg.rc:36 msgid "Internal errors - invalid parameters received" -msgstr "" +msgstr "Errors interns - paràmetres invàlids rebuts" #: winedbg.rc:37 msgid "(unidentified)" -msgstr "" +msgstr "(no identificat)" #: winefile.rc:26 msgid "&Open\tEnter" -msgstr "" +msgstr "&Obrir\tEnter" #: winefile.rc:30 msgid "Re&name..." -msgstr "" +msgstr "Ca&nvia el nom..." #: winefile.rc:31 msgid "Propert&ies\tAlt+Enter" -msgstr "" +msgstr "Prop&ietats\tAlt+Enter" #: winefile.rc:33 msgid "&Run..." -msgstr "" +msgstr "Executa&r..." #: winefile.rc:35 msgid "Cr&eate Directory..." -msgstr "" +msgstr "Cr&ear Directori..." #: winefile.rc:38 winemine.rc:46 msgid "E&xit\tAlt+X" -msgstr "" +msgstr "Sortir\tAlt+&X" #: winefile.rc:44 msgid "&Disk" -msgstr "" +msgstr "&Disc" #: winefile.rc:45 msgid "Connect &Network Drive..." -msgstr "" +msgstr "Co&nectar Unitat de Xarxa" #: winefile.rc:46 msgid "&Disconnect Network Drive" -msgstr "" +msgstr "&Desconnectar Unitat de Xarxa" #: winefile.rc:52 msgid "&Name" -msgstr "" +msgstr "&Nom" #: winefile.rc:53 msgid "&All File Details" -msgstr "" +msgstr "Tots els Det&alls del Fitxer" #: winefile.rc:55 msgid "&Sort by Name" -msgstr "" +msgstr "Ordenar per Nom" #: winefile.rc:56 msgid "Sort &by Type" -msgstr "" +msgstr "Ordenar per Tipus" #: winefile.rc:57 msgid "Sort by Si&ze" -msgstr "" +msgstr "Ordenar per Mida" #: winefile.rc:58 msgid "Sort by &Date" -msgstr "" +msgstr "Ordenar per &Data" #: winefile.rc:60 msgid "Filter by&..." -msgstr "" +msgstr "Filtrar per&..." #: winefile.rc:67 msgid "&Drivebar" -msgstr "" +msgstr "Barra &d'Unitats" #: winefile.rc:70 msgid "F&ull Screen\tCtrl+Shift+S" -msgstr "" +msgstr "Pantalla Completa\tCtrl+Shift+S" #: winefile.rc:77 msgid "New &Window" -msgstr "" +msgstr "Finestra Nova" #: winefile.rc:78 msgid "Cascading\tCtrl+F5" -msgstr "" +msgstr "Cascada\tCtrl+F5" #: winefile.rc:80 msgid "Tile &Vertically\tCtrl+F4" -msgstr "" +msgstr "Mosaic &Vertical\tCtrl+F4" #: winefile.rc:87 -#, fuzzy msgid "&About Wine File Manager" -msgstr "&Quant a Wine..." +msgstr "&Quant al Gestor de Fixers de Wine..." #: winefile.rc:93 msgid "Applying font settings" -msgstr "" +msgstr "Aplicant ajustaments de lletra" #: winefile.rc:94 msgid "Error while selecting new font." -msgstr "" +msgstr "Error al seleccionar el nou tipus de lletra." #: winefile.rc:99 msgid "Wine File Manager" -msgstr "" +msgstr "Gestor de Fixers de Wine" #: winefile.rc:101 msgid "root fs" @@ -10320,7 +10977,7 @@ #: winefile.rc:105 msgid "Not yet implemented" -msgstr "" +msgstr "Encara no implementat" #: winefile.rc:112 msgid "CDate" @@ -10336,52 +10993,52 @@ #: winefile.rc:115 msgid "Index/Inode" -msgstr "" +msgstr "Índex/Inode" #: winefile.rc:118 msgid "Security" -msgstr "" +msgstr "Seguritat" #: winefile.rc:120 -msgid "%s of %s free" -msgstr "" +#, fuzzy +msgid "%1 of %2 free" +msgstr "%s de %s lliure" #: winemine.rc:34 msgid "&Game" -msgstr "" +msgstr "&Joc" #: winemine.rc:35 msgid "&New\tF2" -msgstr "" +msgstr "&Nou\tF2" #: winemine.rc:37 msgid "Question &Marks" -msgstr "" +msgstr "&Signes d'Interrogació" #: winemine.rc:39 msgid "&Beginner" -msgstr "" +msgstr "&Principiant" #: winemine.rc:40 msgid "&Advanced" -msgstr "" +msgstr "&Avançat" #: winemine.rc:41 msgid "&Expert" -msgstr "" +msgstr "&Expert" #: winemine.rc:42 msgid "&Custom..." -msgstr "" +msgstr "&Costum..." #: winemine.rc:44 msgid "&Fastest Times" -msgstr "" +msgstr "&Millors Temps" #: winemine.rc:49 -#, fuzzy msgid "&About WineMine" -msgstr "&Quant a Wine..." +msgstr "&Quant a WineMine..." #: winemine.rc:27 msgid "WineMine" @@ -10389,298 +11046,291 @@ #: winemine.rc:28 msgid "Nobody" -msgstr "" +msgstr "Ningú" #: winemine.rc:29 msgid "Copyright 2000 Joshua Thielen" -msgstr "" +msgstr "© 2000 Joshua Thielen" #: winhlp32.rc:32 msgid "Printer &setup..." -msgstr "" +msgstr "Configuració d'impre&ssora" #: winhlp32.rc:39 -#, fuzzy msgid "&Annotate..." -msgstr "&Quant a Wine..." +msgstr "&Anota..." #: winhlp32.rc:41 msgid "&Bookmark" -msgstr "" +msgstr "&Marca" #: winhlp32.rc:42 msgid "&Define..." -msgstr "" +msgstr "&Defineix..." #: winhlp32.rc:45 msgid "History" -msgstr "" +msgstr "Historia" #: winhlp32.rc:48 winhlp32.rc:69 msgid "Small" -msgstr "" +msgstr "Petit" #: winhlp32.rc:49 winhlp32.rc:70 msgid "Normal" -msgstr "" +msgstr "Normal" #: winhlp32.rc:50 winhlp32.rc:71 msgid "Large" -msgstr "" +msgstr "Gran" #: winhlp32.rc:54 msgid "&Help on help\tF1" -msgstr "" +msgstr "&Ajuda sobre l'ajuda\tF1" #: winhlp32.rc:55 msgid "Always on &top" -msgstr "" +msgstr "Sempre amun&t" #: winhlp32.rc:56 -#, fuzzy msgid "&About Wine Help" -msgstr "&Quant a Wine..." +msgstr "&Quant a l'Ajuda de Wine..." #: winhlp32.rc:64 msgid "Annotation..." -msgstr "" +msgstr "Anotació..." #: winhlp32.rc:65 -#, fuzzy msgid "Copy" -msgstr "&Copiar" +msgstr "Copia" #: winhlp32.rc:78 msgid "Wine Help" -msgstr "" +msgstr "Ajuda de Wine" #: winhlp32.rc:83 msgid "Error while reading the help file `%s'" -msgstr "" +msgstr "Error al llegir el fitxer d'ajuda `%s'" #: winhlp32.rc:85 msgid "Summary" -msgstr "" +msgstr "Resum" #: winhlp32.rc:84 msgid "&Index" -msgstr "" +msgstr "&Índex" #: winhlp32.rc:88 msgid "Help files (*.hlp)" -msgstr "" +msgstr "Fitxers d'ajuda (*.hlp)" #: winhlp32.rc:89 msgid "Cannot find '%s'. Do you want to find this file yourself?" -msgstr "" +msgstr "No es pot trobar '%s'. Voleu localitzar aquest fitxer vós mateix?" #: winhlp32.rc:90 msgid "Cannot find a richedit implementation... Aborting" -msgstr "" +msgstr "No es pot trobar una implementació de richedit...Avortant" #: winhlp32.rc:91 msgid "Help topics: " -msgstr "" +msgstr "Temes d'ajuda: " #: wordpad.rc:28 msgid "&New...\tCtrl+N" -msgstr "" +msgstr "&Nou...\tCtrl+N" #: wordpad.rc:42 msgid "R&edo\tCtrl+Y" -msgstr "" +msgstr "R&efés\tCtrl+Y" #: wordpad.rc:47 msgid "&Clear\tDEL" -msgstr "" +msgstr "Es&borra\tDEL" #: wordpad.rc:48 -#, fuzzy msgid "&Select all\tCtrl+A" -msgstr "Seleccionar &tot el text" +msgstr "&Selecciona tot\tCtrl+A" #: wordpad.rc:51 msgid "Find &next\tF3" -msgstr "" +msgstr "Cerca &següent\tF3" #: wordpad.rc:54 msgid "Read-&only" -msgstr "" +msgstr "N&omés lectura" #: wordpad.rc:55 msgid "&Modified" -msgstr "" +msgstr "&Modificat" #: wordpad.rc:57 msgid "E&xtras" -msgstr "" +msgstr "E&xtres" #: wordpad.rc:59 -#, fuzzy msgid "Selection &info" -msgstr "Seleccionar &tot el text" +msgstr "Informació de selecció" #: wordpad.rc:60 msgid "Character &format" -msgstr "" +msgstr "&Format de caràcters" #: wordpad.rc:61 msgid "&Def. char format" -msgstr "" +msgstr "Format de caràcters pre&determinat" #: wordpad.rc:62 msgid "Paragrap&h format" -msgstr "" +msgstr "Format de paragra&f" #: wordpad.rc:63 msgid "&Get text" -msgstr "" +msgstr "&Obté text" #: wordpad.rc:69 msgid "&Formatbar" -msgstr "" +msgstr "Barra de %format" #: wordpad.rc:70 msgid "&Ruler" -msgstr "" +msgstr "&Regle" #: wordpad.rc:71 msgid "&Statusbar" -msgstr "" +msgstr "Barra d'E&stat" #: wordpad.rc:73 msgid "&Options..." -msgstr "" +msgstr "&Opcions..." #: wordpad.rc:75 msgid "&Insert" -msgstr "" +msgstr "&Insereix" #: wordpad.rc:77 msgid "&Date and time..." -msgstr "" +msgstr "&Data i hora..." #: wordpad.rc:79 msgid "F&ormat" -msgstr "" +msgstr "F&ormat" #: wordpad.rc:82 wordpad.rc:105 msgid "&Bullet points" -msgstr "" +msgstr "&Pics" #: wordpad.rc:83 wordpad.rc:106 msgid "&Paragraph..." -msgstr "" +msgstr "&Paragraf..." #: wordpad.rc:84 msgid "&Tabs..." -msgstr "" +msgstr "&Tabuladors..." #: wordpad.rc:85 msgid "Backgroun&d" -msgstr "" +msgstr "&Fons" #: wordpad.rc:87 msgid "&System\tCtrl+1" -msgstr "" +msgstr "&Sistema\tCtrl+1" #: wordpad.rc:88 -#, fuzzy msgid "&Pale yellow\tCtrl+2" -msgstr "Seleccionar &tot el text" +msgstr "Groc &pal·lid\tCtrl+2" #: wordpad.rc:93 -#, fuzzy msgid "&About Wine Wordpad" -msgstr "&Quant a Wine..." +msgstr "&Quant a Wine Wordpad..." #: wordpad.rc:130 msgid "Automatic" -msgstr "" +msgstr "Automàtic" #: wordpad.rc:136 msgid "All documents (*.*)" -msgstr "" +msgstr "Tots els documents (*.*)" #: wordpad.rc:137 msgid "Text documents (*.txt)" -msgstr "" +msgstr "Documents de text (*.txt)" #: wordpad.rc:138 msgid "Unicode text document (*.txt)" -msgstr "" +msgstr "Documents de text Unicode (*.txt)" #: wordpad.rc:139 msgid "Rich text format (*.rtf)" -msgstr "" +msgstr "Format de text enriquit (*.rtf)" #: wordpad.rc:140 msgid "Rich text document" -msgstr "" +msgstr "Document de text enriquit" #: wordpad.rc:141 msgid "Text document" -msgstr "" +msgstr "Document de text" #: wordpad.rc:142 msgid "Unicode text document" -msgstr "" +msgstr "Document de text Unicode" #: wordpad.rc:143 msgid "Printer files (*.prn)" -msgstr "" +msgstr "Fitxers d'impressora (*.prn)" #: wordpad.rc:148 msgid "Left" -msgstr "" +msgstr "Esquerra" #: wordpad.rc:149 msgid "Right" -msgstr "" +msgstr "Dreta" #: wordpad.rc:150 msgid "Center" -msgstr "" +msgstr "Centre" #: wordpad.rc:156 msgid "Text" -msgstr "" +msgstr "Text" #: wordpad.rc:157 msgid "Rich text" -msgstr "" +msgstr "Text enriquit" #: wordpad.rc:163 msgid "Next page" -msgstr "" +msgstr "Pàgina següent" #: wordpad.rc:164 msgid "Previous page" -msgstr "" +msgstr "Pàgina anterior" #: wordpad.rc:165 msgid "Two pages" -msgstr "" +msgstr "Dues pàgines" #: wordpad.rc:166 msgid "One page" -msgstr "" +msgstr "Una pàgina" #: wordpad.rc:167 msgid "Zoom in" -msgstr "" +msgstr "Apropoa" #: wordpad.rc:168 msgid "Zoom out" -msgstr "" +msgstr "Allunya" #: wordpad.rc:170 msgid "Page" -msgstr "" +msgstr "Pàgina" #: wordpad.rc:171 msgid "Pages" -msgstr "" +msgstr "Pàgines" #: wordpad.rc:172 msgctxt "unit: centimeter" @@ -10690,117 +11340,126 @@ #: wordpad.rc:173 msgctxt "unit: inch" msgid "in" -msgstr "" +msgstr "polzades" #: wordpad.rc:174 msgid "inch" -msgstr "" +msgstr "polzada" #: wordpad.rc:175 msgctxt "unit: point" msgid "pt" -msgstr "" +msgstr "pt" #: wordpad.rc:180 msgid "Document" -msgstr "" +msgstr "Document" #: wordpad.rc:181 msgid "Save changes to '%s'?" -msgstr "" +msgstr "Desar canvis a '%s'?" #: wordpad.rc:182 msgid "Finished searching the document." -msgstr "" +msgstr "S'ha acabat de cercar el document." #: wordpad.rc:183 msgid "Failed to load the RichEdit library." -msgstr "" +msgstr "S'ha fallat en carregar la biblioteca RichEdit." #: wordpad.rc:184 msgid "" "You have chosen to save in plain text format, which will cause all " "formatting to be lost. Are you sure that you wish to do this?" msgstr "" +"Heu triat desar en format de text pla, el que farà que tot el format es " +"perdi. Esteu segur que voleu fer això?" #: wordpad.rc:187 msgid "Invalid number format" -msgstr "" +msgstr "Format de nombre invàlid" #: wordpad.rc:188 msgid "OLE storage documents are not supported" -msgstr "" +msgstr "No s'accepten documents de " #: wordpad.rc:189 msgid "Could not save the file." -msgstr "" +msgstr "No s'ha pogut desar el fitxer." #: wordpad.rc:190 msgid "You do not have access to save the file." -msgstr "" +msgstr "No teneu accés per guardar el fitxer." #: wordpad.rc:191 msgid "Could not open the file." -msgstr "" +msgstr "No s'ha pogut obrir el fitxer." #: wordpad.rc:192 msgid "You do not have access to open the file." -msgstr "" +msgstr "No teneu accés per obrir el fitxer." #: wordpad.rc:193 msgid "Printing not implemented" -msgstr "" +msgstr "Impressió no implementada" #: wordpad.rc:194 msgid "Cannot add more than 32 tab stops." -msgstr "" +msgstr "No es pot afegir més de 32 aturadas de tabulador." #: write.rc:27 msgid "Starting Wordpad failed" -msgstr "" +msgstr "El inici de Wordpad ha fallat" #: xcopy.rc:27 msgid "Invalid number of parameters - Use xcopy /? for help\n" -msgstr "" +msgstr "Nombre de paràmetres invàlid - Useu xcopy /? per ajuda\n" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" -msgstr "" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" +msgstr "Paràmetre invàlida '%1' - Useu xcopy /? per ajuda\n" #: xcopy.rc:29 msgid "Press to begin copying\n" -msgstr "" +msgstr "Premeu per començar a copiar\n" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" -msgstr "" +msgid "%1!d! file(s) would be copied\n" +msgstr "%1!d! fitxer(s) es copiarian\n" #: xcopy.rc:31 -msgid "%d file(s) copied\n" -msgstr "" +msgid "%1!d! file(s) copied\n" +msgstr "%1!d! fitxer(s) copiat(s)\n" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" +"És '%1' un nom de fitxer o un\n" +"directori a la destinació?\n" +"(F - Fitxer, D - Directori)\n" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" -msgstr "" +msgid "%1? (Yes|No)\n" +msgstr "%1? (Sí|No)\n" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" -msgstr "" +msgid "Overwrite %1? (Yes|No|All)\n" +msgstr "Sobreescriure %1? (Yes|No|All)\n" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" -msgstr "" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "La còpia de '%1' a '%2' ha fallat amb r/c %d\n" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" +msgstr "S'ha fallat en obrir '%1'\n" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" -msgstr "" +msgid "Failed during reading of '%1'\n" +msgstr "S'ha fallat durant la lectura de '%1'\n" #: xcopy.rc:43 msgctxt "File key" @@ -10847,3 +11506,36 @@ "\t\tthan source.\n" "\n" msgstr "" +"XCOPY - Copia fitxers o arbres de directori a una destinació.\n" +"\n" +"Sintaxi:\n" +"XCOPY font [destinació] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U]\n" +"\t [/R] [/H] [/C] [/P] [/A] [/M] [/E] [/D] [/Y] [/-Y]\n" +"\n" +"On:\n" +"\n" +"[/I] Suposar el directori si la destinació no existeix i copiant dos o més\n" +"\tfitxers.\n" +"[/S] Copiar els directoris i subdirectoris.\n" +"[/E] Copiar els directoris i subdirectoris, incloent els buits.\n" +"[/Q] No mostrar els noms durant la còpia, és dir, silcenci.\n" +"[/F] Mostrar els noms de font i destinació complets durant la còpia.\n" +"[/L] Simular l'operació, mostrant els noms que es copiarian.\n" +"[/W] Preguntar abans de començar l'operació de còpia.\n" +"[/T] Crear una estructura de directoris buits però no copiar els fitxers.\n" +"[/Y] Reprimir el preguntar al sobreescriure els fitxers.\n" +"[/-Y] Habilitar el preguntar al sobreescriure els fitxers.\n" +"[/P] Preguntar sobre cada fitxer font abans de copiar.\n" +"[/N] Copiar usant els noms curts.\n" +"[/U] Copiar només els arxius que ja existeixen en la destinació.\n" +"[/R] Sobreescriure qualsevol fitxer de només lectura.\n" +"[/H] Incloure els fitxers amagats i els fitxers de sistema en la còpia.\n" +"[/C] Continuar inclús si es produeix un error durant la còpia.\n" +"[/A] Només copiar els fitxers amb l'atribut d'archiu establert.\n" +"[/M] Només copiar els fitxers amb l'atribut d'archiu establert, treure el\n" +"\tatribut d'archiu.\n" +"[/D | /D:m-d-y] Copiar els fitxers nous o els modificats després de la data\n" +"\t\tsubministrada.\n" +"\t\tSi no es proporciona cap data, només es copia si la destinació\n" +"\t\tés més vell que el font.\n" +"\n" diff -Nru wine1.3-1.3.30/po/cs.po wine1.3-1.3.31/po/cs.po --- wine1.3-1.3.30/po/cs.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/cs.po 2011-10-21 18:38:36.000000000 +0000 @@ -125,7 +125,7 @@ msgstr "nekomprimovaný" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "" #: comctl32.rc:39 @@ -6911,7 +6911,7 @@ msgstr "" #: shlwapi.rc:27 -msgid "%ld bytes" +msgid "%d bytes" msgstr "" #: shlwapi.rc:28 @@ -7845,9 +7845,10 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" -msgstr "" +#: attrib.rc:28 +#, fuzzy +msgid "%1: File Not Found\n" +msgstr "Soubor nebyl nalezen" #: attrib.rc:47 msgid "" @@ -8491,6 +8492,10 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -8519,7 +8524,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "" @@ -8710,12 +8715,13 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" -msgstr "" +#, fuzzy +msgid "Could not stop service %1\n" +msgstr "Nemohu vytvořit nebo použít okno." #: net.rc:32 msgid "Could not get handle to service control manager.\n" @@ -8726,28 +8732,32 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" -msgstr "" +#, fuzzy +msgid "The %1 service is starting.\n" +msgstr "Ovladač zařízení není připraven." #: net.rc:35 -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "" #: net.rc:36 -msgid "The %s service failed to start.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to start.\n" +msgstr "Volné místo" #: net.rc:37 -msgid "The %s service is stopping.\n" -msgstr "" +#, fuzzy +msgid "The %1 service is stopping.\n" +msgstr "Kryt tiskárny je otevřen; " #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "" #: net.rc:39 -msgid "The %s service failed to stop.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to stop.\n" +msgstr "Volné místo" #: net.rc:41 msgid "There are no entries in the list.\n" @@ -8761,7 +8771,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -10871,7 +10881,8 @@ msgstr "Zásobník obrazovky musí být větší nebo stejně velký jakzásobník okna" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "Každý znak je %ld pixelů široký a %ld pixelů vysoký" #: wineconsole.rc:35 @@ -11088,7 +11099,8 @@ msgstr "Zabezpečení" #: winefile.rc:120 -msgid "%s of %s free" +#, fuzzy +msgid "%1 of %2 free" msgstr "%s z %s volného" #: winemine.rc:34 @@ -11533,7 +11545,7 @@ msgstr "" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" #: xcopy.rc:29 @@ -11541,34 +11553,38 @@ msgstr "" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" msgstr "" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" msgstr "" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +msgid "%1? (Yes|No)\n" msgstr "" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" msgstr "" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" msgstr "" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/da.po wine1.3-1.3.31/po/da.po --- wine1.3-1.3.30/po/da.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/da.po 2011-10-21 18:38:36.000000000 +0000 @@ -129,7 +129,7 @@ msgstr "ukomprimeret" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "Annullering..." #: comctl32.rc:39 @@ -6946,7 +6946,8 @@ msgstr "Papirkurven" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld bytes" #: shlwapi.rc:28 @@ -7901,8 +7902,9 @@ "Ikke implementeret endnu\n" "\n" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" +#: attrib.rc:28 +#, fuzzy +msgid "%1: File Not Found\n" msgstr "%s : Filen ikke fundet\n" #: attrib.rc:47 @@ -8534,6 +8536,10 @@ msgid "Syntax error\n" msgstr "Syntaks fejl\n" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "%s : Filen ikke fundet\n" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "Ingen hjælp tilgængelig for %s\n" @@ -8562,7 +8568,7 @@ msgid "Environment variable %s not defined\n" msgstr "Miljøvariable %s ikke defineret\n" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "Kunne ikke åbne «%s»\n" @@ -8767,11 +8773,13 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +#, fuzzy +msgid "Stopping dependent service: %1\n" msgstr "Stopper afhængig tjeneste: %s\n" #: net.rc:31 -msgid "Could not stop service %s\n" +#, fuzzy +msgid "Could not stop service %1\n" msgstr "Kunne ikke stoppe tjenesten «%s»\n" #: net.rc:32 @@ -8783,27 +8791,33 @@ msgstr "Kunne ikke kontakte tjenesten.\n" #: net.rc:34 -msgid "The %s service is starting.\n" +#, fuzzy +msgid "The %1 service is starting.\n" msgstr "Tjenesten «%s» starter.\n" #: net.rc:35 -msgid "The %s service was started successfully.\n" +#, fuzzy +msgid "The %1 service was started successfully.\n" msgstr "Tjenesten «%s» startede vellykket.\n" #: net.rc:36 -msgid "The %s service failed to start.\n" +#, fuzzy +msgid "The %1 service failed to start.\n" msgstr "Tjenesten «%s» kunne ikke starte.\n" #: net.rc:37 -msgid "The %s service is stopping.\n" +#, fuzzy +msgid "The %1 service is stopping.\n" msgstr "Tjenesten «%s» stopper.\n" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +#, fuzzy +msgid "The %1 service was stopped successfully.\n" msgstr "Tjenesten «%s» stoppede vellykket.\n" #: net.rc:39 -msgid "The %s service failed to stop.\n" +#, fuzzy +msgid "The %1 service failed to stop.\n" msgstr "Kunne ikke stoppe tjenesten «%s».\n" #: net.rc:41 @@ -8821,7 +8835,8 @@ "---------------------------------------------------------------\n" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +#, fuzzy +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "%s %s %s Åbne resourser: %lu\n" #: net.rc:44 @@ -10952,7 +10967,8 @@ msgstr "Skærm buffer størrelsen, skal være større eller lig med vinduet" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "Hvert tegn er %ld pixel bred og %ld pixel høj" #: wineconsole.rc:35 @@ -11186,7 +11202,8 @@ msgstr "Sikkerhed" #: winefile.rc:120 -msgid "%s of %s free" +#, fuzzy +msgid "%1 of %2 free" msgstr "%s af %s ledig" #: winemine.rc:34 @@ -11609,7 +11626,8 @@ msgstr "Ugyldigt antal parametere; brug «xcopy /?» for hjelp\n" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +#, fuzzy +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "Ugyldigt parameter «%s»; brug «xcopy /?» for hjelp\n" #: xcopy.rc:29 @@ -11617,16 +11635,19 @@ msgstr "Tryk Enter for at begynde at kopiere\n" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +#, fuzzy +msgid "%1!d! file(s) would be copied\n" msgstr "%d fil(er) vil blive kopieret\n" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +#, fuzzy +msgid "%1!d! file(s) copied\n" msgstr "%d fil(er) kopieret\n" #: xcopy.rc:34 +#, fuzzy msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" @@ -11635,19 +11656,28 @@ "(F - Fil, K - Katalog)\n" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +#, fuzzy +msgid "%1? (Yes|No)\n" msgstr "%s? (Ja|Nei)\n" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +#, fuzzy +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "Overskrive «%s»? (Ja|Nei|Alle)\n" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +#, fuzzy +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" msgstr "Kunne ikke kopiere «%s» til «%s»; fejlet med r/c %d\n" +#: xcopy.rc:38 +#, fuzzy +msgid "Failed to open '%1'\n" +msgstr "Kunne ikke åbne «%s»\n" + #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +#, fuzzy +msgid "Failed during reading of '%1'\n" msgstr "Kunne ikke læse «%s»\n" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/de.po wine1.3-1.3.31/po/de.po --- wine1.3-1.3.30/po/de.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/de.po 2011-10-21 18:38:36.000000000 +0000 @@ -117,7 +117,7 @@ msgstr "Unkomprimiert" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "Abbrechen..." #: comctl32.rc:39 @@ -6747,7 +6747,8 @@ msgstr "Papierkorb" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld Bytes" #: shlwapi.rc:28 @@ -7723,8 +7724,9 @@ "Noch nicht implementiert\n" "\n" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" +#: attrib.rc:28 +#, fuzzy +msgid "%1: File Not Found\n" msgstr "%s : Datei nicht gefunden\n" #: attrib.rc:47 @@ -8438,6 +8440,10 @@ msgid "Syntax error\n" msgstr "Syntaxfehler\n" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "%s : Datei nicht gefunden\n" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "Hilfe für %s ist nicht verfügbar\n" @@ -8466,7 +8472,7 @@ msgid "Environment variable %s not defined\n" msgstr "Die Umgebungsvariable %s ist nicht definiert\n" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "'%s' konnte nicht geöffnet werden\n" @@ -8679,11 +8685,13 @@ "Der angegebene Dienst wird gestoppt.\n" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +#, fuzzy +msgid "Stopping dependent service: %1\n" msgstr "Stoppe den abbhängigen Dienst: %s\n" #: net.rc:31 -msgid "Could not stop service %s\n" +#, fuzzy +msgid "Could not stop service %1\n" msgstr "Konnte den Dienst nicht stoppen %s\n" #: net.rc:32 @@ -8695,27 +8703,33 @@ msgstr "Konnte den Zeiger zum Dienst nicht bekommen.\n" #: net.rc:34 -msgid "The %s service is starting.\n" +#, fuzzy +msgid "The %1 service is starting.\n" msgstr "Der %s Dienst startet.\n" #: net.rc:35 -msgid "The %s service was started successfully.\n" +#, fuzzy +msgid "The %1 service was started successfully.\n" msgstr "Der %s Dienst wurde erfolgreich gestartet.\n" #: net.rc:36 -msgid "The %s service failed to start.\n" +#, fuzzy +msgid "The %1 service failed to start.\n" msgstr "Der Start des %s Dienstes ist fehlgeschlagen.\n" #: net.rc:37 -msgid "The %s service is stopping.\n" +#, fuzzy +msgid "The %1 service is stopping.\n" msgstr "Der %s Dienst wird gestoppt.\n" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +#, fuzzy +msgid "The %1 service was stopped successfully.\n" msgstr "Der %s Dienst wurde erfolgreich beendet.\n" #: net.rc:39 -msgid "The %s service failed to stop.\n" +#, fuzzy +msgid "The %1 service failed to stop.\n" msgstr "Der %s Dienst konnte nicht beendet werden.\n" #: net.rc:41 @@ -8733,7 +8747,8 @@ "---------------------------------------------------------------\n" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +#, fuzzy +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "%s %s %s Offene Ressourcen: %lu\n" #: net.rc:44 @@ -10798,7 +10813,8 @@ msgstr "Die Bildschirmgröße muß größer oder gleich der des Fensters sein" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "Jeder Buchstabe ist %ld Pixel breit und %ld Pixel hoch" #: wineconsole.rc:35 @@ -11023,7 +11039,8 @@ msgstr "Sicherheit" #: winefile.rc:120 -msgid "%s of %s free" +#, fuzzy +msgid "%1 of %2 free" msgstr "%s von %s frei" #: winemine.rc:34 @@ -11442,7 +11459,8 @@ msgstr "Falsche Parameteranzahl - xcopy /? zeigt Hilfe an\n" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +#, fuzzy +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "Unbekannter Parameter '%s' - xcopy /? zeigt Hilfe an\n" #: xcopy.rc:29 @@ -11450,16 +11468,19 @@ msgstr "Eingabetaste betätigen, um mit dem Kopieren zu beginnen\n" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +#, fuzzy +msgid "%1!d! file(s) would be copied\n" msgstr "%d Datei(en) würden kopiert\n" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +#, fuzzy +msgid "%1!d! file(s) copied\n" msgstr "%d Datei(en) kopiert\n" #: xcopy.rc:34 +#, fuzzy msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" @@ -11468,19 +11489,28 @@ "(D - Datei, V - Verzeichnis)\n" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +#, fuzzy +msgid "%1? (Yes|No)\n" msgstr "%s? (Ja|Nein)\n" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +#, fuzzy +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "%s überschreiben? (Ja|Nein|Alle)\n" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +#, fuzzy +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" msgstr "Kopieren von '%s' nach '%s' fehlgeschlagen. Fehlernummer: %d\n" +#: xcopy.rc:38 +#, fuzzy +msgid "Failed to open '%1'\n" +msgstr "'%s' konnte nicht geöffnet werden\n" + #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +#, fuzzy +msgid "Failed during reading of '%1'\n" msgstr "Fehler beim Lesen von '%s'\n" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/el.po wine1.3-1.3.31/po/el.po --- wine1.3-1.3.30/po/el.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/el.po 2011-10-21 18:38:36.000000000 +0000 @@ -114,7 +114,7 @@ msgstr "" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "" #: comctl32.rc:39 @@ -6712,7 +6712,7 @@ msgstr "" #: shlwapi.rc:27 -msgid "%ld bytes" +msgid "%d bytes" msgstr "" #: shlwapi.rc:28 @@ -7544,9 +7544,9 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 +#: attrib.rc:28 #, fuzzy -msgid "%s: File Not Found\n" +msgid "%1: File Not Found\n" msgstr "Το αρχείο δε βρέθηκε" #: attrib.rc:47 @@ -8018,6 +8018,11 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +#, fuzzy +msgid "%s: File Not Found\n" +msgstr "Το αρχείο δε βρέθηκε" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -8046,7 +8051,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "" @@ -8236,11 +8241,11 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" +msgid "Could not stop service %1\n" msgstr "" #: net.rc:32 @@ -8252,27 +8257,28 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" +msgid "The %1 service is starting.\n" msgstr "" #: net.rc:35 -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "" #: net.rc:36 -msgid "The %s service failed to start.\n" +msgid "The %1 service failed to start.\n" msgstr "" #: net.rc:37 -msgid "The %s service is stopping.\n" -msgstr "" +#, fuzzy +msgid "The %1 service is stopping.\n" +msgstr "Το αρχείο δε βρέθηκε" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "" #: net.rc:39 -msgid "The %s service failed to stop.\n" +msgid "The %1 service failed to stop.\n" msgstr "" #: net.rc:41 @@ -8287,7 +8293,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -10253,7 +10259,7 @@ msgstr "" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "" #: wineconsole.rc:35 @@ -10462,7 +10468,7 @@ msgstr "" #: winefile.rc:120 -msgid "%s of %s free" +msgid "%1 of %2 free" msgstr "" #: winemine.rc:34 @@ -10878,7 +10884,7 @@ msgstr "" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" #: xcopy.rc:29 @@ -10886,34 +10892,38 @@ msgstr "" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" msgstr "" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" msgstr "" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +msgid "%1? (Yes|No)\n" msgstr "" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" msgstr "" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" msgstr "" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/en.po wine1.3-1.3.31/po/en.po --- wine1.3-1.3.30/po/en.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/en.po 2011-10-21 18:38:36.000000000 +0000 @@ -115,8 +115,8 @@ msgstr "" #: browseui.rc:25 -msgid "Cancelling..." -msgstr "" +msgid "Canceling..." +msgstr "Cancelling..." #: comctl32.rc:39 msgid "Separator" @@ -6629,7 +6629,7 @@ msgstr "" #: shlwapi.rc:27 -msgid "%ld bytes" +msgid "%d bytes" msgstr "" #: shlwapi.rc:28 @@ -7574,9 +7574,9 @@ "Not Yet Implemented\n" "\n" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" -msgstr "%s: File Not Found\n" +#: attrib.rc:28 +msgid "%1: File Not Found\n" +msgstr "%1: File Not Found\n" #: attrib.rc:47 msgid "" @@ -8210,6 +8210,10 @@ msgid "Syntax error\n" msgstr "Syntax error\n" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "%s: File Not Found\n" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "No help available for %s\n" @@ -8238,7 +8242,7 @@ msgid "Environment variable %s not defined\n" msgstr "Environment variable %s not defined\n" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "Failed to open '%s'\n" @@ -8437,12 +8441,12 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" -msgstr "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" +msgstr "Stopping dependent service: %1\n" #: net.rc:31 -msgid "Could not stop service %s\n" -msgstr "Could not stop service %s\n" +msgid "Could not stop service %1\n" +msgstr "Could not stop service %1\n" #: net.rc:32 msgid "Could not get handle to service control manager.\n" @@ -8453,28 +8457,28 @@ msgstr "Could not get handle to service.\n" #: net.rc:34 -msgid "The %s service is starting.\n" -msgstr "The %s service is starting.\n" +msgid "The %1 service is starting.\n" +msgstr "The %1 service is starting.\n" #: net.rc:35 -msgid "The %s service was started successfully.\n" -msgstr "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" +msgstr "The %1 service was started successfully.\n" #: net.rc:36 -msgid "The %s service failed to start.\n" -msgstr "The %s service failed to start.\n" +msgid "The %1 service failed to start.\n" +msgstr "The %1 service failed to start.\n" #: net.rc:37 -msgid "The %s service is stopping.\n" -msgstr "The %s service is stopping.\n" +msgid "The %1 service is stopping.\n" +msgstr "The %1 service is stopping.\n" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" -msgstr "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" +msgstr "The %1 service was stopped successfully.\n" #: net.rc:39 -msgid "The %s service failed to stop.\n" -msgstr "The %s service failed to stop.\n" +msgid "The %1 service failed to stop.\n" +msgstr "The %1 service failed to stop.\n" #: net.rc:41 msgid "There are no entries in the list.\n" @@ -8491,8 +8495,8 @@ "---------------------------------------------------------------\n" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" -msgstr "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" +msgstr "%1 %2 %3 Open resources: %4!u!\n" #: net.rc:44 msgid "OK" @@ -10482,7 +10486,7 @@ msgstr "" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "" #: wineconsole.rc:35 @@ -10690,7 +10694,7 @@ msgstr "Security" #: winefile.rc:120 -msgid "%s of %s free" +msgid "%1 of %2 free" msgstr "" #: winemine.rc:34 @@ -11103,46 +11107,50 @@ msgstr "Invalid number of parameters - Use xcopy /? for help\n" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" -msgstr "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" +msgstr "Invalid parameter '%1' - Use xcopy /? for help\n" #: xcopy.rc:29 msgid "Press to begin copying\n" msgstr "Press to begin copying\n" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" -msgstr "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" +msgstr "%1!d! file(s) would be copied\n" #: xcopy.rc:31 -msgid "%d file(s) copied\n" -msgstr "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" +msgstr "%1!d! file(s) copied\n" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" -msgstr "%s? (Yes|No)\n" +msgid "%1? (Yes|No)\n" +msgstr "%1? (Yes|No)\n" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" -msgstr "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" +msgstr "Overwrite %1? (Yes|No|All)\n" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" -msgstr "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "Copying of '%1' to '%2' failed with r/c %3!d!\n" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" +msgstr "Failed to open '%1'\n" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" -msgstr "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" +msgstr "Failed during reading of '%1'\n" #: xcopy.rc:43 msgctxt "File key" diff -Nru wine1.3-1.3.30/po/en_US.po wine1.3-1.3.31/po/en_US.po --- wine1.3-1.3.30/po/en_US.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/en_US.po 2011-10-21 18:38:36.000000000 +0000 @@ -119,8 +119,8 @@ msgstr "uncompressed" #: browseui.rc:25 -msgid "Cancelling..." -msgstr "Cancelling..." +msgid "Canceling..." +msgstr "Canceling..." #: comctl32.rc:39 msgid "Separator" @@ -6726,8 +6726,8 @@ msgstr "Trash" #: shlwapi.rc:27 -msgid "%ld bytes" -msgstr "%ld bytes" +msgid "%d bytes" +msgstr "%d bytes" #: shlwapi.rc:28 msgctxt "time unit: hours" @@ -7672,9 +7672,9 @@ "Not Yet Implemented\n" "\n" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" -msgstr "%s: File Not Found\n" +#: attrib.rc:28 +msgid "%1: File Not Found\n" +msgstr "%1: File Not Found\n" #: attrib.rc:47 msgid "" @@ -8352,6 +8352,10 @@ msgid "Syntax error\n" msgstr "Syntax error\n" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "%s: File Not Found\n" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "No help available for %s\n" @@ -8380,7 +8384,7 @@ msgid "Environment variable %s not defined\n" msgstr "Environment variable %s not defined\n" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "Failed to open '%s'\n" @@ -8592,12 +8596,12 @@ "Where 'service' is the name of the service to stop.\n" #: net.rc:30 -msgid "Stopping dependent service: %s\n" -msgstr "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" +msgstr "Stopping dependent service: %1\n" #: net.rc:31 -msgid "Could not stop service %s\n" -msgstr "Could not stop service %s\n" +msgid "Could not stop service %1\n" +msgstr "Could not stop service %1\n" #: net.rc:32 msgid "Could not get handle to service control manager.\n" @@ -8608,28 +8612,28 @@ msgstr "Could not get handle to service.\n" #: net.rc:34 -msgid "The %s service is starting.\n" -msgstr "The %s service is starting.\n" +msgid "The %1 service is starting.\n" +msgstr "The %1 service is starting.\n" #: net.rc:35 -msgid "The %s service was started successfully.\n" -msgstr "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" +msgstr "The %1 service was started successfully.\n" #: net.rc:36 -msgid "The %s service failed to start.\n" -msgstr "The %s service failed to start.\n" +msgid "The %1 service failed to start.\n" +msgstr "The %1 service failed to start.\n" #: net.rc:37 -msgid "The %s service is stopping.\n" -msgstr "The %s service is stopping.\n" +msgid "The %1 service is stopping.\n" +msgstr "The %1 service is stopping.\n" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" -msgstr "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" +msgstr "The %1 service was stopped successfully.\n" #: net.rc:39 -msgid "The %s service failed to stop.\n" -msgstr "The %s service failed to stop.\n" +msgid "The %1 service failed to stop.\n" +msgstr "The %1 service failed to stop.\n" #: net.rc:41 msgid "There are no entries in the list.\n" @@ -8646,8 +8650,8 @@ "---------------------------------------------------------------\n" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" -msgstr "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" +msgstr "%1 %2 %3 Open resources: %4!u!\n" #: net.rc:44 msgid "OK" @@ -10679,8 +10683,8 @@ msgstr "Screen buffer size must be greater or equal to the window's one" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" -msgstr "Each character is %ld pixels wide on %ld pixels high" +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" +msgstr "Each character is %1!u! pixels wide on %2!u! pixels high" #: wineconsole.rc:35 msgid "This is a test" @@ -10904,8 +10908,8 @@ msgstr "Security" #: winefile.rc:120 -msgid "%s of %s free" -msgstr "%s of %s free" +msgid "%1 of %2 free" +msgstr "%1 of %2 free" #: winemine.rc:34 msgid "&Game" @@ -11319,46 +11323,50 @@ msgstr "Invalid number of parameters - Use xcopy /? for help\n" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" -msgstr "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" +msgstr "Invalid parameter '%1' - Use xcopy /? for help\n" #: xcopy.rc:29 msgid "Press to begin copying\n" msgstr "Press to begin copying\n" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" -msgstr "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" +msgstr "%1!d! file(s) would be copied\n" #: xcopy.rc:31 -msgid "%d file(s) copied\n" -msgstr "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" +msgstr "%1!d! file(s) copied\n" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" -msgstr "%s? (Yes|No)\n" +msgid "%1? (Yes|No)\n" +msgstr "%1? (Yes|No)\n" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" -msgstr "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" +msgstr "Overwrite %1? (Yes|No|All)\n" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" -msgstr "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "Copying of '%1' to '%2' failed with r/c %3!d!\n" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" +msgstr "Failed to open '%1'\n" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" -msgstr "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" +msgstr "Failed during reading of '%1'\n" #: xcopy.rc:43 msgctxt "File key" diff -Nru wine1.3-1.3.30/po/eo.po wine1.3-1.3.31/po/eo.po --- wine1.3-1.3.30/po/eo.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/eo.po 2011-10-21 18:38:36.000000000 +0000 @@ -119,7 +119,7 @@ msgstr "" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "" #: comctl32.rc:39 @@ -6802,7 +6802,8 @@ msgstr "" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld bytes" #: shlwapi.rc:28 @@ -7639,9 +7640,9 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 +#: attrib.rc:28 #, fuzzy -msgid "%s: File Not Found\n" +msgid "%1: File Not Found\n" msgstr "Dosiero ne estis trovita" #: attrib.rc:47 @@ -8119,6 +8120,11 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +#, fuzzy +msgid "%s: File Not Found\n" +msgstr "Dosiero ne estis trovita" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -8147,7 +8153,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "" @@ -8338,11 +8344,11 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" +msgid "Could not stop service %1\n" msgstr "" #: net.rc:32 @@ -8354,28 +8360,31 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" +msgid "The %1 service is starting.\n" msgstr "" #: net.rc:35 -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "" #: net.rc:36 -msgid "The %s service failed to start.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to start.\n" +msgstr "Disponebla Spaco" #: net.rc:37 -msgid "The %s service is stopping.\n" -msgstr "" +#, fuzzy +msgid "The %1 service is stopping.\n" +msgstr "La printila pordo estas malfermita; " #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "" #: net.rc:39 -msgid "The %s service failed to stop.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to stop.\n" +msgstr "Disponebla Spaco" #: net.rc:41 msgid "There are no entries in the list.\n" @@ -8389,7 +8398,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -10414,7 +10423,8 @@ "Ekran-bufra grandeco devas esti pli granda aý egala ol fenestr-bufra tiu" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "Tipo estas larøa %ld bilderojn kaj alta %ld bilderojn" #: wineconsole.rc:35 @@ -10637,7 +10647,7 @@ msgstr "" #: winefile.rc:120 -msgid "%s of %s free" +msgid "%1 of %2 free" msgstr "" #: winemine.rc:34 @@ -11072,7 +11082,7 @@ msgstr "" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" #: xcopy.rc:29 @@ -11080,34 +11090,38 @@ msgstr "" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" msgstr "" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" msgstr "" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +msgid "%1? (Yes|No)\n" msgstr "" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" msgstr "" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" msgstr "" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/es.po wine1.3-1.3.31/po/es.po --- wine1.3-1.3.30/po/es.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/es.po 2011-10-21 18:38:36.000000000 +0000 @@ -119,7 +119,7 @@ msgstr "sin compresión" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "Cancelando..." #: comctl32.rc:39 @@ -7083,7 +7083,8 @@ msgstr "Papelera de reciclaje" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld bytes" #: shlwapi.rc:28 @@ -8062,8 +8063,9 @@ "No implementado\n" "\n" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" +#: attrib.rc:28 +#, fuzzy +msgid "%1: File Not Found\n" msgstr "%s : Archivo no encontrado\n" #: attrib.rc:47 @@ -8728,6 +8730,10 @@ msgid "Syntax error\n" msgstr "Error de sintaxis\n" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "%s : Archivo no encontrado\n" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "No hay ayuda disponible para %s\n" @@ -8756,7 +8762,7 @@ msgid "Environment variable %s not defined\n" msgstr "Variable de entorno %s no definida\n" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "No se pudo abrir '%s'\n" @@ -8952,12 +8958,13 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" -msgstr "" +#, fuzzy +msgid "Could not stop service %1\n" +msgstr "No puede crearse o usar una ventana." #: net.rc:32 msgid "Could not get handle to service control manager.\n" @@ -8968,30 +8975,34 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" -msgstr "" +#, fuzzy +msgid "The %1 service is starting.\n" +msgstr "La operación finalizó con éxito\n" #: net.rc:35 #, fuzzy -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "La operación finalizó con éxito\n" #: net.rc:36 -msgid "The %s service failed to start.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to start.\n" +msgstr "La operación finalizó con éxito\n" #: net.rc:37 -msgid "The %s service is stopping.\n" -msgstr "" +#, fuzzy +msgid "The %1 service is stopping.\n" +msgstr "La operación finalizó con éxito\n" #: net.rc:38 #, fuzzy -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "La operación finalizó con éxito\n" #: net.rc:39 -msgid "The %s service failed to stop.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to stop.\n" +msgstr "Error: nombre de clave no válido\n" #: net.rc:41 msgid "There are no entries in the list.\n" @@ -9005,7 +9016,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -11156,7 +11167,8 @@ "ventana" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "Cada caracter tiene %ld píxeles de ancho por %ld píxeles de alto" #: wineconsole.rc:35 @@ -11390,7 +11402,8 @@ msgstr "Seguridad" #: winefile.rc:120 -msgid "%s of %s free" +#, fuzzy +msgid "%1 of %2 free" msgstr "%s de %s libre" #: winemine.rc:34 @@ -11837,7 +11850,7 @@ msgstr "" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" #: xcopy.rc:29 @@ -11845,36 +11858,42 @@ msgstr "" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" msgstr "" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" msgstr "" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" -msgstr "" +#, fuzzy +msgid "%1? (Yes|No)\n" +msgstr "Sobrescribir %s" #: xcopy.rc:36 #, fuzzy -msgid "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "Sobrescribir %s" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" msgstr "" +#: xcopy.rc:38 +#, fuzzy +msgid "Failed to open '%1'\n" +msgstr "No se pudo abrir '%s'\n" + #: xcopy.rc:39 #, fuzzy -msgid "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" msgstr "No se pudo abrir '%s'\n" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/fa.po wine1.3-1.3.31/po/fa.po --- wine1.3-1.3.30/po/fa.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/fa.po 2011-10-21 18:38:36.000000000 +0000 @@ -113,7 +113,7 @@ msgstr "" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "" #: comctl32.rc:39 @@ -6680,7 +6680,7 @@ msgstr "" #: shlwapi.rc:27 -msgid "%ld bytes" +msgid "%d bytes" msgstr "" #: shlwapi.rc:28 @@ -7521,9 +7521,9 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 +#: attrib.rc:28 #, fuzzy -msgid "%s: File Not Found\n" +msgid "%1: File Not Found\n" msgstr "'%s' پیدا نشد." #: attrib.rc:47 @@ -7996,6 +7996,11 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +#, fuzzy +msgid "%s: File Not Found\n" +msgstr "'%s' پیدا نشد." + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -8024,7 +8029,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "" @@ -8214,11 +8219,11 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" +msgid "Could not stop service %1\n" msgstr "" #: net.rc:32 @@ -8230,27 +8235,27 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" +msgid "The %1 service is starting.\n" msgstr "" #: net.rc:35 -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "" #: net.rc:36 -msgid "The %s service failed to start.\n" +msgid "The %1 service failed to start.\n" msgstr "" #: net.rc:37 -msgid "The %s service is stopping.\n" +msgid "The %1 service is stopping.\n" msgstr "" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "" #: net.rc:39 -msgid "The %s service failed to stop.\n" +msgid "The %1 service failed to stop.\n" msgstr "" #: net.rc:41 @@ -8265,7 +8270,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -10253,7 +10258,7 @@ msgstr "" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "" #: wineconsole.rc:35 @@ -10467,7 +10472,7 @@ msgstr "" #: winefile.rc:120 -msgid "%s of %s free" +msgid "%1 of %2 free" msgstr "" #: winemine.rc:34 @@ -10901,7 +10906,7 @@ msgstr "" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" #: xcopy.rc:29 @@ -10909,34 +10914,38 @@ msgstr "" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" msgstr "" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" msgstr "" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +msgid "%1? (Yes|No)\n" msgstr "" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" msgstr "" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" msgstr "" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/fi.po wine1.3-1.3.31/po/fi.po --- wine1.3-1.3.30/po/fi.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/fi.po 2011-10-21 18:38:36.000000000 +0000 @@ -119,7 +119,7 @@ msgstr "" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "" #: comctl32.rc:39 @@ -6903,7 +6903,8 @@ msgstr "Roskakori" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld tavua" #: shlwapi.rc:28 @@ -7742,9 +7743,9 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 +#: attrib.rc:28 #, fuzzy -msgid "%s: File Not Found\n" +msgid "%1: File Not Found\n" msgstr "Tiedostoa ei löydy" #: attrib.rc:47 @@ -8222,6 +8223,11 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +#, fuzzy +msgid "%s: File Not Found\n" +msgstr "Tiedostoa ei löydy" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -8250,7 +8256,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "" @@ -8441,11 +8447,11 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" +msgid "Could not stop service %1\n" msgstr "" #: net.rc:32 @@ -8457,28 +8463,31 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" +msgid "The %1 service is starting.\n" msgstr "" #: net.rc:35 -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "" #: net.rc:36 -msgid "The %s service failed to start.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to start.\n" +msgstr "Tilaa jäljellä" #: net.rc:37 -msgid "The %s service is stopping.\n" -msgstr "" +#, fuzzy +msgid "The %1 service is stopping.\n" +msgstr "Tulostimen kansi on auki; " #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "" #: net.rc:39 -msgid "The %s service failed to stop.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to stop.\n" +msgstr "Tilaa jäljellä" #: net.rc:41 msgid "There are no entries in the list.\n" @@ -8492,7 +8501,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -10535,7 +10544,7 @@ msgstr "" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "" #: wineconsole.rc:35 @@ -10757,7 +10766,7 @@ msgstr "" #: winefile.rc:120 -msgid "%s of %s free" +msgid "%1 of %2 free" msgstr "" #: winemine.rc:34 @@ -11201,7 +11210,7 @@ msgstr "" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" #: xcopy.rc:29 @@ -11209,34 +11218,38 @@ msgstr "" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" msgstr "" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" msgstr "" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +msgid "%1? (Yes|No)\n" msgstr "" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" msgstr "" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" msgstr "" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/fr.po wine1.3-1.3.31/po/fr.po --- wine1.3-1.3.30/po/fr.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/fr.po 2011-10-21 18:38:36.000000000 +0000 @@ -5,7 +5,7 @@ "Project-Id-Version: Wine\n" "Report-Msgid-Bugs-To: http://bugs.winehq.org\n" "POT-Creation-Date: N/A\n" -"PO-Revision-Date: 2011-09-06 22:11+0100\n" +"PO-Revision-Date: 2011-10-10 22:11+0100\n" "Last-Translator: Frédéric Delanoy \n" "Language-Team: none\n" "Language: French\n" @@ -120,7 +120,7 @@ msgstr "non compressé" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "Annulation..." #: comctl32.rc:39 @@ -6750,8 +6750,8 @@ msgstr "Corbeille" #: shlwapi.rc:27 -msgid "%ld bytes" -msgstr "%ld octets" +msgid "%d bytes" +msgstr "%d octets" #: shlwapi.rc:28 msgctxt "time unit: hours" @@ -7733,12 +7733,12 @@ "Pas encore implémenté\n" "\n" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" +#: attrib.rc:28 +#, fuzzy +msgid "%1: File Not Found\n" msgstr "%s : fichier non trouvé\n" #: attrib.rc:47 -#, fuzzy msgid "" "ATTRIB - Displays or changes file attributes.\n" "\n" @@ -7768,17 +7768,17 @@ "\n" "où\n" "\n" -"+ Définit un attribut.\n" -"- Supprime un attribut.\n" -"R Attribut de fichier en lecture seule.\n" -"A Attribut de fichier archive.\n" -"S Attribut de fichier système.\n" -"H Attribut de fichier caché.\n" -"[lecteur:][chemin][nomFichier]\n" -"Spécifie un ou plusieurs fichiers à faire traiter par attrib.\n" -"/S Traite les fichiers correspondants dans le dossier courant\n" -"et tous les sous-dossiers.\n" -"/D Traite également les dossiers.\n" +" + Définit un attribut.\n" +" - Supprime un attribut.\n" +" R Attribut de fichier en lecture seule.\n" +" A Attribut de fichier archive.\n" +" S Attribut de fichier système.\n" +" H Attribut de fichier caché.\n" +" [lecteur:][chemin][nomFichier]\n" +" Spécifie un ou plusieurs fichiers qu'attrib doit traiter.\n" +" /S Traite les fichiers correspondants dans le dossier courant\n" +" et tous les sous-dossiers.\n" +" /D Traite également les dossiers.\n" #: clock.rc:29 msgid "Ana&log" @@ -8031,18 +8031,19 @@ "PATH %PATH%;c:\\temp\n" #: cmd.rc:128 -#, fuzzy msgid "" "PAUSE displays a message on the screen asking the user to press a key.\n" "\n" "It is mainly useful in batch files to allow the user to read the output\n" "of a previous command before it scrolls off the screen.\n" msgstr "" -"PAUSE affiche un message sur l'écran : « Pressez Entrée pour continuer »\n" -"et attend que l'utilisateur presse la touche Entrée. PAUSE est surtout " -"utilisé dans\n" -"les fichiers batchs pour permettre à l'utilisateur de lire la sortie de\n" -"la dernière commande avant qu'elle ne disparaisse de l'écran.\n" +"PAUSE affiche un message à l'écran demandant à l'utilisateur d'appuyer sur " +"une touche.\n" +"\n" +"Principalement utilisé dans des fichiers batchs pour permettre à " +"l'utilisateur\n" +"de lire la sortie de la dernière commande avant qu'elle ne disparaisse de " +"l'écran.\n" #: cmd.rc:149 msgid "" @@ -8325,7 +8326,6 @@ "au système d'exploitation ou au shell où vous avez invoqué cmd.\n" #: cmd.rc:289 -#, fuzzy msgid "" "CMD built-in commands are:\n" "ASSOC\t\tShow or modify file extension associations\n" @@ -8387,6 +8387,7 @@ "MORE\t\tAffiche du texte par pages\n" "MOVE\t\tDéplace un fichier, un groupe de fichiers ou un répertoire\n" "PATH\t\tRègle ou affiche le chemin de recherche\n" +"PAUSE\t\tSuspend l'exécution d'un fichier batch\n" "POPD\t\tRemplace le répertoire courant par le dernier enregistré avec\n" "\t\tPUSHD\n" "PROMPT\t\tChange l'invite de commande\n" @@ -8449,6 +8450,10 @@ msgid "Syntax error\n" msgstr "Erreur de syntaxe\n" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "%s : fichier non trouvé\n" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "Pas d'aide disponible pour %s\n" @@ -8477,7 +8482,7 @@ msgid "Environment variable %s not defined\n" msgstr "La variable d'environnement %s n'est pas définie\n" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "Impossible d'ouvrir « %s »\n" @@ -8529,9 +8534,8 @@ msgstr "PATH non trouvé\n" #: cmd.rc:321 -#, fuzzy msgid "Press any key to continue... " -msgstr "Appuyez sur ENTRÉE pour continuer : " +msgstr "Appuyez sur une touche pour continuer... " #: cmd.rc:322 msgid "Wine Command Prompt" @@ -8692,11 +8696,13 @@ "où « service » est le nom du service à arrêter.\n" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +#, fuzzy +msgid "Stopping dependent service: %1\n" msgstr "Arrêt du service dépendant : %s\n" #: net.rc:31 -msgid "Could not stop service %s\n" +#, fuzzy +msgid "Could not stop service %1\n" msgstr "Impossible d'arrêter le service %s\n" #: net.rc:32 @@ -8708,27 +8714,33 @@ msgstr "Impossible d'obtenir un descripteur du service.\n" #: net.rc:34 -msgid "The %s service is starting.\n" +#, fuzzy +msgid "The %1 service is starting.\n" msgstr "Le service %s démarre.\n" #: net.rc:35 -msgid "The %s service was started successfully.\n" +#, fuzzy +msgid "The %1 service was started successfully.\n" msgstr "Le service %s a démarré avec succès.\n" #: net.rc:36 -msgid "The %s service failed to start.\n" +#, fuzzy +msgid "The %1 service failed to start.\n" msgstr "Le service %s n'a pas pu être démarré.\n" #: net.rc:37 -msgid "The %s service is stopping.\n" +#, fuzzy +msgid "The %1 service is stopping.\n" msgstr "Le service %s est en cours d'arrêt.\n" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +#, fuzzy +msgid "The %1 service was stopped successfully.\n" msgstr "Le service %s a été arrêté avec succès.\n" #: net.rc:39 -msgid "The %s service failed to stop.\n" +#, fuzzy +msgid "The %1 service failed to stop.\n" msgstr "Le service %s n'a pas pu être arrêté.\n" #: net.rc:41 @@ -8746,7 +8758,8 @@ "---------------------------------------------------------------\n" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +#, fuzzy +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "%s %s %s Ressources ouvertes : %lu\n" #: net.rc:44 @@ -9075,9 +9088,8 @@ msgstr "version 1.0" #: oleview.rc:100 -#, fuzzy msgid "TypeLib files (*.tlb; *.olb; *.dll; *.ocx; *.exe)" -msgstr "Fichiers TypeLib (*.tlb;*.olb;*.dll;*.ocx;*.exe)" +msgstr "Fichiers TypeLib (*.tlb ; *.olb ; *.dll ; *.ocx ; *.exe)" #: oleview.rc:103 msgid "Bind to file via a File Moniker" @@ -10519,22 +10531,19 @@ #: winecfg.rc:87 msgid "Selected driver: %s" -msgstr "" +msgstr "Pilote sélectionné : %s" #: winecfg.rc:88 -#, fuzzy msgid "(None)" -msgstr "Aucune" +msgstr "(Aucun)" #: winecfg.rc:89 -#, fuzzy msgid "Audio test failed!" -msgstr "Échec de réinitialisation du disque dur\n" +msgstr "Échec du test audio !" #: winecfg.rc:91 -#, fuzzy msgid "(System default)" -msgstr "Chemin système (path)" +msgstr "(Valeur par défaut du système)" #: winecfg.rc:51 msgid "" @@ -10573,9 +10582,8 @@ msgstr "Paramètres par défaut" #: winecfg.rc:59 -#, fuzzy msgid "Wine Programs (*.exe; *.exe.so)" -msgstr "Programmes de Wine (*.exe,*.exe.so)" +msgstr "Programmes de Wine (*.exe ; *.exe.so)" #: winecfg.rc:60 msgid "Use global settings" @@ -10825,7 +10833,8 @@ "de la fenêtre" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "Chaque caractère fait %ld pixels de large et %ld pixels de haut" #: wineconsole.rc:35 @@ -10998,9 +11007,8 @@ msgstr "Arranger &verticalement\tCtrl+F4" #: winefile.rc:87 -#, fuzzy msgid "&About Wine File Manager" -msgstr "Gestionnaire de fichiers de Wine" +msgstr "À &propos du gestionnaire de fichiers de Wine" #: winefile.rc:93 msgid "Applying font settings" @@ -11051,7 +11059,8 @@ msgstr "Sécurité" #: winefile.rc:120 -msgid "%s of %s free" +#, fuzzy +msgid "%1 of %2 free" msgstr "%s libres sur %s" #: winemine.rc:34 @@ -11327,9 +11336,8 @@ msgstr "Document texte Unicode" #: wordpad.rc:143 -#, fuzzy msgid "Printer files (*.prn)" -msgstr "Fichiers d'impression (*.PRN)" +msgstr "Fichiers d'impression (*.prn)" #: wordpad.rc:148 msgid "Left" @@ -11469,47 +11477,51 @@ "Nombre invalide de paramètres - Utilisez xcopy /? pour obtenir de l'aide\n" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" -"Paramètre invalide « %s » - Utilisez xcopy /? pour obtenir de l'aide\n" +"Paramètre « %1 » invalide - Utilisez xcopy /? pour obtenir de l'aide\n" #: xcopy.rc:29 msgid "Press to begin copying\n" msgstr "Appuyez sur ENTRÉE pour démarrer la copie\n" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" -msgstr "%d fichier(s) seront copiés\n" +msgid "%1!d! file(s) would be copied\n" +msgstr "%1!d! fichier(s) seront copiés\n" #: xcopy.rc:31 -msgid "%d file(s) copied\n" -msgstr "%d fichier(s) copiés\n" +msgid "%1!d! file(s) copied\n" +msgstr "%1!d! fichier(s) copiés\n" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" -"« %s » est-il un fichier ou un répertoire\n" +"« %1 » est-il un fichier ou un répertoire\n" "dans la destination ?\n" "(F - Fichier, R - Répertoire)\n" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" -msgstr "%s ? (Oui|Non)\n" +msgid "%1? (Yes|No)\n" +msgstr "%1 ? (Oui|Non)\n" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" -msgstr "Écraser %s ? (Oui|Non|Tous)\n" +msgid "Overwrite %1? (Yes|No|All)\n" +msgstr "Écraser %1 ? (Oui|Non|Tous)\n" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" -msgstr "La copie de « %s » vers « %s » a échoué avec le code de retour %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "La copie de « %1 » vers « %2 » a échoué avec le code de retour %3!d!\n" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" +msgstr "Impossible d'ouvrir « %1 »\n" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" -msgstr "Impossible de lire « %s »\n" +msgid "Failed during reading of '%1'\n" +msgstr "Impossible de lire « %1 »\n" #: xcopy.rc:43 msgctxt "File key" diff -Nru wine1.3-1.3.30/po/he.po wine1.3-1.3.31/po/he.po --- wine1.3-1.3.30/po/he.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/he.po 2011-10-21 18:38:36.000000000 +0000 @@ -118,7 +118,7 @@ msgstr "ללא דחיסה" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "בהליכי ביטול..." #: comctl32.rc:39 @@ -6941,7 +6941,8 @@ msgstr "אשפה" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld בתים" #: shlwapi.rc:28 @@ -7776,8 +7777,9 @@ "Not Yet Implemented\n" "\n" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" +#: attrib.rc:28 +#, fuzzy +msgid "%1: File Not Found\n" msgstr "%s: File Not Found\n" #: attrib.rc:47 @@ -8421,6 +8423,10 @@ msgid "Syntax error\n" msgstr "Syntax error\n" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "%s: File Not Found\n" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "No help available for %s\n" @@ -8449,7 +8455,7 @@ msgid "Environment variable %s not defined\n" msgstr "Environment variable %s not defined\n" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "Failed to open '%s'\n" @@ -8653,11 +8659,13 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +#, fuzzy +msgid "Stopping dependent service: %1\n" msgstr "Stopping dependent service: %s\n" #: net.rc:31 -msgid "Could not stop service %s\n" +#, fuzzy +msgid "Could not stop service %1\n" msgstr "Could not stop service %s\n" #: net.rc:32 @@ -8669,27 +8677,33 @@ msgstr "Could not get handle to service.\n" #: net.rc:34 -msgid "The %s service is starting.\n" +#, fuzzy +msgid "The %1 service is starting.\n" msgstr "The %s service is starting.\n" #: net.rc:35 -msgid "The %s service was started successfully.\n" +#, fuzzy +msgid "The %1 service was started successfully.\n" msgstr "The %s service was started successfully.\n" #: net.rc:36 -msgid "The %s service failed to start.\n" +#, fuzzy +msgid "The %1 service failed to start.\n" msgstr "The %s service failed to start.\n" #: net.rc:37 -msgid "The %s service is stopping.\n" +#, fuzzy +msgid "The %1 service is stopping.\n" msgstr "The %s service is stopping.\n" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +#, fuzzy +msgid "The %1 service was stopped successfully.\n" msgstr "The %s service was stopped successfully.\n" #: net.rc:39 -msgid "The %s service failed to stop.\n" +#, fuzzy +msgid "The %1 service failed to stop.\n" msgstr "The %s service failed to stop.\n" #: net.rc:41 @@ -8707,7 +8721,8 @@ "---------------------------------------------------------------\n" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +#, fuzzy +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "%s %s %s Open resources: %lu\n" #: net.rc:44 @@ -10818,7 +10833,8 @@ msgstr "גודל מאגר המסך חייב להיות גדול או שווה לזה של החלון" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "כל תו הוא ברוחב %ld פיקסלים על גובה של %ld פיקסלים" #: wineconsole.rc:35 @@ -11047,7 +11063,8 @@ msgstr "אבטחה" #: winefile.rc:120 -msgid "%s of %s free" +#, fuzzy +msgid "%1 of %2 free" msgstr "%s מתוך %s פנויים" #: winemine.rc:34 @@ -11466,7 +11483,8 @@ msgstr "Invalid number of parameters - Use xcopy /? for help\n" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +#, fuzzy +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "Invalid parameter '%s' - Use xcopy /? for help\n" #: xcopy.rc:29 @@ -11474,16 +11492,19 @@ msgstr "Press to begin copying\n" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +#, fuzzy +msgid "%1!d! file(s) would be copied\n" msgstr "%d file(s) would be copied\n" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +#, fuzzy +msgid "%1!d! file(s) copied\n" msgstr "%d file(s) copied\n" #: xcopy.rc:34 +#, fuzzy msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" @@ -11492,19 +11513,28 @@ "(F - File, D - Directory)\n" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +#, fuzzy +msgid "%1? (Yes|No)\n" msgstr "%s? (Yes|No)\n" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +#, fuzzy +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "Overwrite %s? (Yes|No|All)\n" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +#, fuzzy +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" msgstr "Copying of '%s' to '%s' failed with r/c %d\n" +#: xcopy.rc:38 +#, fuzzy +msgid "Failed to open '%1'\n" +msgstr "Failed to open '%s'\n" + #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +#, fuzzy +msgid "Failed during reading of '%1'\n" msgstr "Failed during reading of '%s'\n" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/hi.po wine1.3-1.3.31/po/hi.po --- wine1.3-1.3.30/po/hi.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/hi.po 2011-10-21 18:38:36.000000000 +0000 @@ -113,7 +113,7 @@ msgstr "" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "" #: comctl32.rc:39 @@ -6600,7 +6600,7 @@ msgstr "" #: shlwapi.rc:27 -msgid "%ld bytes" +msgid "%d bytes" msgstr "" #: shlwapi.rc:28 @@ -7431,8 +7431,8 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" +#: attrib.rc:28 +msgid "%1: File Not Found\n" msgstr "" #: attrib.rc:47 @@ -7905,6 +7905,10 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -7933,7 +7937,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "" @@ -8122,11 +8126,11 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" +msgid "Could not stop service %1\n" msgstr "" #: net.rc:32 @@ -8138,27 +8142,27 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" +msgid "The %1 service is starting.\n" msgstr "" #: net.rc:35 -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "" #: net.rc:36 -msgid "The %s service failed to start.\n" +msgid "The %1 service failed to start.\n" msgstr "" #: net.rc:37 -msgid "The %s service is stopping.\n" +msgid "The %1 service is stopping.\n" msgstr "" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "" #: net.rc:39 -msgid "The %s service failed to stop.\n" +msgid "The %1 service failed to stop.\n" msgstr "" #: net.rc:41 @@ -8173,7 +8177,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -10115,7 +10119,7 @@ msgstr "" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "" #: wineconsole.rc:35 @@ -10328,7 +10332,7 @@ msgstr "" #: winefile.rc:120 -msgid "%s of %s free" +msgid "%1 of %2 free" msgstr "" #: winemine.rc:34 @@ -10743,7 +10747,7 @@ msgstr "" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" #: xcopy.rc:29 @@ -10751,34 +10755,38 @@ msgstr "" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" msgstr "" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" msgstr "" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +msgid "%1? (Yes|No)\n" msgstr "" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" msgstr "" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" msgstr "" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/hu.po wine1.3-1.3.31/po/hu.po --- wine1.3-1.3.30/po/hu.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/hu.po 2011-10-21 18:38:36.000000000 +0000 @@ -125,7 +125,7 @@ msgstr "tömörítetlen" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "Megszakítás..." #: comctl32.rc:39 @@ -7102,7 +7102,8 @@ msgstr "Lomtár" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld bájt" #: shlwapi.rc:28 @@ -7938,9 +7939,9 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 +#: attrib.rc:28 #, fuzzy -msgid "%s: File Not Found\n" +msgid "%1: File Not Found\n" msgstr "Fájl nem található" #: attrib.rc:47 @@ -8418,6 +8419,11 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +#, fuzzy +msgid "%s: File Not Found\n" +msgstr "Fájl nem található" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -8446,7 +8452,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "" @@ -8638,11 +8644,11 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" +msgid "Could not stop service %1\n" msgstr "" #: net.rc:32 @@ -8654,28 +8660,31 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" +msgid "The %1 service is starting.\n" msgstr "" #: net.rc:35 -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "" #: net.rc:36 -msgid "The %s service failed to start.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to start.\n" +msgstr "Érvénytelen azonosítók" #: net.rc:37 -msgid "The %s service is stopping.\n" -msgstr "" +#, fuzzy +msgid "The %1 service is stopping.\n" +msgstr "A nyomtató fedele nyitva; " #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "" #: net.rc:39 -msgid "The %s service failed to stop.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to stop.\n" +msgstr "Érvénytelen azonosítók" #: net.rc:41 msgid "There are no entries in the list.\n" @@ -8689,7 +8698,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -10808,7 +10817,8 @@ msgstr "" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "Minden karakter %ld pixel széles és %ld pixel magas" #: wineconsole.rc:35 @@ -11025,7 +11035,7 @@ msgstr "&Biztonság" #: winefile.rc:120 -msgid "%s of %s free" +msgid "%1 of %2 free" msgstr "" #: winemine.rc:34 @@ -11455,7 +11465,7 @@ msgstr "" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" #: xcopy.rc:29 @@ -11463,34 +11473,38 @@ msgstr "" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" msgstr "" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" msgstr "" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +msgid "%1? (Yes|No)\n" msgstr "" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" msgstr "" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" msgstr "" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/it.po wine1.3-1.3.31/po/it.po --- wine1.3-1.3.30/po/it.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/it.po 2011-10-21 18:38:36.000000000 +0000 @@ -1,11 +1,11 @@ # Italian translations for Wine -# +# Luca Bennati , 2011. msgid "" msgstr "" "Project-Id-Version: Wine\n" "Report-Msgid-Bugs-To: http://bugs.winehq.org\n" "POT-Creation-Date: N/A\n" -"PO-Revision-Date: 2011-10-07 13:37+0200\n" +"PO-Revision-Date: 2011-10-18 20:40+0200\n" "Last-Translator: Luca Bennati \n" "Language-Team: none\n" "Language: Italian\n" @@ -119,7 +119,7 @@ msgstr "Non compresso" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "Annullando..." #: comctl32.rc:39 @@ -694,7 +694,7 @@ #: crypt32.rc:53 cryptdlg.rc:31 msgctxt "Certification Practice Statement" msgid "CPS" -msgstr "CPS" +msgstr "Dichiarazione della pratica di certificazione (CPS)" #: crypt32.rc:54 cryptdlg.rc:32 msgid "User Notice" @@ -702,7 +702,7 @@ #: crypt32.rc:55 msgid "On-line Certificate Status Protocol" -msgstr "Protocollo Status Certificato on-line" +msgstr "Protocollo di verifica online dei certificati (OCSP)" #: crypt32.rc:56 msgid "Certification Authority Issuer" @@ -1300,14 +1300,12 @@ msgstr "Emittente CRL" #: crypt32.rc:212 -#, fuzzy msgid "Key Compromise" -msgstr "Compromesso chiave" +msgstr "Chiave compromessa" #: crypt32.rc:213 -#, fuzzy msgid "CA Compromise" -msgstr "Compromesso AC" +msgstr "AC compromessa" #: crypt32.rc:214 msgid "Affiliation Changed" @@ -3627,7 +3625,7 @@ #: winerror.mc:1606 msgid "Moving the replacement file failed\n" -msgstr "Spostamento del file di sostituzione fallito" +msgstr "Spostamento del file di sostituzione fallito\n" #: winerror.mc:1611 msgid "The journal is being deleted\n" @@ -4486,9 +4484,8 @@ msgstr "Tipo di aggancio non permesso\n" #: winerror.mc:2691 -#, fuzzy msgid "Interactive window station required\n" -msgstr "Stazione di finestre interattiva richiesta\n" +msgstr "Stazione interattiva di finestre richiesta\n" #: winerror.mc:2696 msgid "Timeout\n" @@ -5247,7 +5244,6 @@ msgstr "Driver non valido\n" #: winerror.mc:3646 -#, fuzzy msgid "Invalid object resolver set\n" msgstr "Insieme di risolutori di oggetto non valido\n" @@ -5268,7 +5264,6 @@ msgstr "Pipe RPC chiusa\n" #: winerror.mc:3671 -#, fuzzy msgid "Discipline error on RPC pipe\n" msgstr "Errore di disciplina sulla pipe RPC\n" @@ -6739,8 +6734,8 @@ msgstr "Cestino" #: shlwapi.rc:27 -msgid "%ld bytes" -msgstr "%ld byte" +msgid "%d bytes" +msgstr "%d byte" #: shlwapi.rc:28 msgctxt "time unit: hours" @@ -7705,8 +7700,9 @@ "Non ancora implementato\n" "\n" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" +#: attrib.rc:28 +#, fuzzy +msgid "%1: File Not Found\n" msgstr "%s : File non trovato\n" #: attrib.rc:47 @@ -8002,18 +7998,17 @@ "PATH %PATH%;c:\\temp\n" #: cmd.rc:128 -#, fuzzy msgid "" "PAUSE displays a message on the screen asking the user to press a key.\n" "\n" "It is mainly useful in batch files to allow the user to read the output\n" "of a previous command before it scrolls off the screen.\n" msgstr "" -"PAUSE mostra un messaggio sullo schermo 'Premere Invio per continuare'\n" -"e aspetta che l'utente prema Invio. È utile principalmente nei files\n" -"batch per permettere all'utente di leggere l'output di un comando " -"precedente\n" -"prima che scorra fuori dallo schermo.\n" +"PAUSE mostra un messaggio sullo schermo che chiede all'utente di premere un " +"tasto.\n" +"\n" +"È utile soprattutto in file batch per permettere all'utente di leggere\n" +"l'output di un comando precedente prima che scorra via dallo schermo.\n" #: cmd.rc:149 msgid "" @@ -8409,6 +8404,10 @@ msgid "Syntax error\n" msgstr "Errore di sintassi\n" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "%s : File non trovato\n" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "Nessun aiuto disponibile per %s\n" @@ -8437,7 +8436,7 @@ msgid "Environment variable %s not defined\n" msgstr "Variabile d'ambiente %s non definita\n" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "Impossibile aprire '%s'\n" @@ -8489,9 +8488,8 @@ msgstr "PATH non trovato\n" #: cmd.rc:321 -#, fuzzy msgid "Press any key to continue... " -msgstr "Premere Invio per continuare: " +msgstr "Premere un tasto qualsiasi per continuare... " #: cmd.rc:322 msgid "Wine Command Prompt" @@ -8651,11 +8649,13 @@ "Dove 'servizio' è il nome del servizio da fermare.\n" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +#, fuzzy +msgid "Stopping dependent service: %1\n" msgstr "Interrompendo il servizio dipendente: %s\n" #: net.rc:31 -msgid "Could not stop service %s\n" +#, fuzzy +msgid "Could not stop service %1\n" msgstr "Impossibile interrompere il servizio %s\n" #: net.rc:32 @@ -8668,27 +8668,33 @@ msgstr "Impossibile ottenere l'handle del servizio.\n" #: net.rc:34 -msgid "The %s service is starting.\n" +#, fuzzy +msgid "The %1 service is starting.\n" msgstr "Il servizio %s sarà avviato.\n" #: net.rc:35 -msgid "The %s service was started successfully.\n" +#, fuzzy +msgid "The %1 service was started successfully.\n" msgstr "Il servizio %s è stato avviato con successo.\n" #: net.rc:36 -msgid "The %s service failed to start.\n" +#, fuzzy +msgid "The %1 service failed to start.\n" msgstr "Impossibile avviare il servizio %s.\n" #: net.rc:37 -msgid "The %s service is stopping.\n" +#, fuzzy +msgid "The %1 service is stopping.\n" msgstr "Il servizio %s sarà fermato.\n" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +#, fuzzy +msgid "The %1 service was stopped successfully.\n" msgstr "Il servizio %s è stato fermato con successo.\n" #: net.rc:39 -msgid "The %s service failed to stop.\n" +#, fuzzy +msgid "The %1 service failed to stop.\n" msgstr "Impossibile fermare il servizio %s.\n" #: net.rc:41 @@ -8706,7 +8712,8 @@ "---------------------------------------------------------------\n" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +#, fuzzy +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "%s %s %s Risorse aperte: %lu\n" #: net.rc:44 @@ -10764,7 +10771,8 @@ "finestra" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "Il carattere è largo %ld pixel e alto %ld pixel" #: wineconsole.rc:35 @@ -10989,7 +10997,8 @@ msgstr "Sicurezza" #: winefile.rc:120 -msgid "%s of %s free" +#, fuzzy +msgid "%1 of %2 free" msgstr "liberi %s di %s" #: winemine.rc:34 @@ -11406,46 +11415,50 @@ msgstr "Numero non valido di parametri - Digita xcopy /? per l'aiuto\n" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" -msgstr "Parametro '%s' non valido - Digita xcopy /? per l'aiuto\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" +msgstr "Parametro '%1' non valido - Digita xcopy /? per l'aiuto\n" #: xcopy.rc:29 msgid "Press to begin copying\n" msgstr "Premi Invio per iniziare a copiare\n" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" -msgstr "%d file saranno copiati\n" +msgid "%1!d! file(s) would be copied\n" +msgstr "%1!d! file saranno copiati\n" #: xcopy.rc:31 -msgid "%d file(s) copied\n" -msgstr "%d file copiato/i\n" +msgid "%1!d! file(s) copied\n" +msgstr "%1!d! file copiato/i\n" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" -"'%s' è il nome di un file o una cartella\n" +"'%1' è il nome di un file o una cartella\n" "nella destinazione?\n" "(F - File, C - Cartella)\n" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" -msgstr "%s? (Sì|No)\n" +msgid "%1? (Yes|No)\n" +msgstr "%1? (Sì|No)\n" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" -msgstr "Sovrascrivere %s? (Sì|No|Tutti)\n" +msgid "Overwrite %1? (Yes|No|All)\n" +msgstr "Sovrascrivere %1? (Sì|No|Tutti)\n" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" -msgstr "La copia di '%s' in '%s' è fallita con r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "La copia di '%1' in '%2' è fallita con r/c %3!d!\n" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" +msgstr "Impossibile aprire '%1'\n" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" -msgstr "Errore durante la lettura di '%s'\n" +msgid "Failed during reading of '%1'\n" +msgstr "Errore durante la lettura di '%1'\n" #: xcopy.rc:43 msgctxt "File key" diff -Nru wine1.3-1.3.30/po/ja.po wine1.3-1.3.31/po/ja.po --- wine1.3-1.3.30/po/ja.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/ja.po 2011-10-21 18:38:36.000000000 +0000 @@ -119,7 +119,7 @@ msgstr "未圧縮" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "キャンセル…" #: comctl32.rc:39 @@ -6704,7 +6704,8 @@ msgstr "ごみ箱" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld バイト" #: shlwapi.rc:28 @@ -7646,8 +7647,9 @@ "まだ実装されていません\n" "\n" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" +#: attrib.rc:28 +#, fuzzy +msgid "%1: File Not Found\n" msgstr "%s: ファイルが見つかりません\n" #: attrib.rc:47 @@ -8335,6 +8337,10 @@ msgid "Syntax error\n" msgstr "構文エラー\n" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "%s: ファイルが見つかりません\n" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "%s に対するヘルプはありません\n" @@ -8363,7 +8369,7 @@ msgid "Environment variable %s not defined\n" msgstr "環境変数 %s は定義されていません\n" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "'%s' を開けません\n" @@ -8575,11 +8581,13 @@ "'サービス'は停止するサービスの名前です。\n" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +#, fuzzy +msgid "Stopping dependent service: %1\n" msgstr "依存するサービスを停止中: %s\n" #: net.rc:31 -msgid "Could not stop service %s\n" +#, fuzzy +msgid "Could not stop service %1\n" msgstr "サービス %s を停止できませんでした。\n" #: net.rc:32 @@ -8591,27 +8599,33 @@ msgstr "サービスのハンドルを取得できませんでした。\n" #: net.rc:34 -msgid "The %s service is starting.\n" +#, fuzzy +msgid "The %1 service is starting.\n" msgstr "%s サービスを開始しています。\n" #: net.rc:35 -msgid "The %s service was started successfully.\n" +#, fuzzy +msgid "The %1 service was started successfully.\n" msgstr "%s サービスを起動しました。\n" #: net.rc:36 -msgid "The %s service failed to start.\n" +#, fuzzy +msgid "The %1 service failed to start.\n" msgstr "%s サービスの起動に失敗しました。\n" #: net.rc:37 -msgid "The %s service is stopping.\n" +#, fuzzy +msgid "The %1 service is stopping.\n" msgstr "%s サービスを停止中です。\n" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +#, fuzzy +msgid "The %1 service was stopped successfully.\n" msgstr "%s サービスは停止しました。\n" #: net.rc:39 -msgid "The %s service failed to stop.\n" +#, fuzzy +msgid "The %1 service failed to stop.\n" msgstr "%s サービスの停止に失敗しました。\n" #: net.rc:41 @@ -8629,7 +8643,8 @@ "---------------------------------------------------------------\n" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +#, fuzzy +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "%s %s %s リソース数: %lu\n" #: net.rc:44 @@ -10677,7 +10692,8 @@ "スクリーン バッファ サイズはウィンドウ バッファ サイズ以上にしてください。" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "それぞれの文字は %ld ピクセルの幅 %ld ピクセルの高さ" #: wineconsole.rc:35 @@ -10900,7 +10916,8 @@ msgstr "セキュリティ" #: winefile.rc:120 -msgid "%s of %s free" +#, fuzzy +msgid "%1 of %2 free" msgstr "%s の空き (全容量 %s)" #: winemine.rc:34 @@ -11315,7 +11332,8 @@ msgstr "パラメータの数が違います。xcopy /? で使い方を表示します\n" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +#, fuzzy +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "無効なパラメータ '%s' です。xcopy /? で使い方を表示します\n" #: xcopy.rc:29 @@ -11323,16 +11341,19 @@ msgstr "コピーを開始するには を押してください\n" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +#, fuzzy +msgid "%1!d! file(s) would be copied\n" msgstr "%d ファイルがコピーされる見込みです。\n" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +#, fuzzy +msgid "%1!d! file(s) copied\n" msgstr "%d ファイルをコピーしました\n" #: xcopy.rc:34 +#, fuzzy msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" @@ -11341,19 +11362,28 @@ "(F - ファイル、D - ディレクトリ)\n" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +#, fuzzy +msgid "%1? (Yes|No)\n" msgstr "%s? (Yes|No)\n" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +#, fuzzy +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "%s を上書きしますか? (Yes|No|All)\n" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +#, fuzzy +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" msgstr "'%s' から '%s' へのコピーは失敗しました。戻り値 %d\n" +#: xcopy.rc:38 +#, fuzzy +msgid "Failed to open '%1'\n" +msgstr "'%s' を開けません\n" + #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +#, fuzzy +msgid "Failed during reading of '%1'\n" msgstr "'%s' の読み込み中に失敗しました\n" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/ko.po wine1.3-1.3.31/po/ko.po --- wine1.3-1.3.30/po/ko.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/ko.po 2011-10-21 18:38:36.000000000 +0000 @@ -119,7 +119,7 @@ msgstr "압축안됨" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "취소하는 중.." #: comctl32.rc:39 @@ -6711,7 +6711,8 @@ msgstr "휴지통" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld 바이트" #: shlwapi.rc:28 @@ -7639,8 +7640,9 @@ "아직 구현되지 않았습니다\n" "\n" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" +#: attrib.rc:28 +#, fuzzy +msgid "%1: File Not Found\n" msgstr "%s :파일을 찾을 수 없습니다\n" #: attrib.rc:47 @@ -7926,16 +7928,16 @@ "PATH %PATH%;c:\\temp\n" #: cmd.rc:128 -#, fuzzy msgid "" "PAUSE displays a message on the screen asking the user to press a key.\n" "\n" "It is mainly useful in batch files to allow the user to read the output\n" "of a previous command before it scrolls off the screen.\n" msgstr "" -"PAUSE는 'Press Return key to continue' 메세지를 화면에 보여주고\n" -"사용자가 리턴 키를 누를 때까지 기다림. 이것은 주로 배치파일에서 스크린을\n" -"넘치게 하는 이전 명령의 결과를 읽도록 한다\n" +"PAUSE 는 사용자가 아무 키나 누르라는 메세지를 화면에 보여줍니다.\n" +"\n" +"사용자가 화면에서 스크롤 하기 전에 이전 명령의 결과를 읽을 수 있도록\n" +"배치파일에서 주로 유용하게 사용합니다.\n" #: cmd.rc:149 msgid "" @@ -8199,7 +8201,6 @@ "호출한 셀로 돌아갑니다.\n" #: cmd.rc:289 -#, fuzzy msgid "" "CMD built-in commands are:\n" "ASSOC\t\tShow or modify file extension associations\n" @@ -8259,6 +8260,7 @@ "MORE\t\t페이지 출력 보여주기\n" "MOVE\t\t파일 이나 여러 파일,그리고 디렉토리 구조 이동\n" "PATH\t\t탐색 경로 보여주거나 설정하기\n" +"PAUSE\t\t배치 파일에서 실행을 정지시킴\n" "POPD\t\tPUSHD로 마지막으로 저장했던 디렉토리로 돌아가기\n" "PROMPT\t\t명령 프롬프트 바꾸기\n" "PUSHD\t\t현재 디렉토리를 저장하고, 새 디렉토리로 바꾸기\n" @@ -8318,6 +8320,10 @@ msgid "Syntax error\n" msgstr "문법 오류\n" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "%s :파일을 찾을 수 없습니다\n" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "%s를 위한 어떠한 도움말도 찾을 수 없습니다\n" @@ -8346,7 +8352,7 @@ msgid "Environment variable %s not defined\n" msgstr "환경 변수 %s 는 정의되지 않았습니다\n" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "'%s' 열기 실패\n" @@ -8398,13 +8404,12 @@ msgstr "PATH를 찾을 수 없습니다\n" #: cmd.rc:321 -#, fuzzy msgid "Press any key to continue... " -msgstr "리턴 키를 누르면 계속: " +msgstr "아무 키나 누르면 진행함... " #: cmd.rc:322 msgid "Wine Command Prompt" -msgstr "Wine 명령 입력대기" +msgstr "Wine 명령 프롬프트" #: cmd.rc:323 msgid "CMD Version %s\n" @@ -8412,7 +8417,7 @@ #: cmd.rc:324 msgid "More? " -msgstr " 더? " +msgstr "더? " #: cmd.rc:325 msgid "The input line is too long.\n" @@ -8558,11 +8563,13 @@ "'서비스'는 정지할 서비스의 이름입니다.\n" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +#, fuzzy +msgid "Stopping dependent service: %1\n" msgstr "종속된 서비스 정지중: %s\n" #: net.rc:31 -msgid "Could not stop service %s\n" +#, fuzzy +msgid "Could not stop service %1\n" msgstr "%s 서비스를 정지할 수 없습니다\n" #: net.rc:32 @@ -8574,27 +8581,33 @@ msgstr "서비스 핸들을 얻을 수 없습니다.\n" #: net.rc:34 -msgid "The %s service is starting.\n" +#, fuzzy +msgid "The %1 service is starting.\n" msgstr "%s 서비스는 시작중.\n" #: net.rc:35 -msgid "The %s service was started successfully.\n" +#, fuzzy +msgid "The %1 service was started successfully.\n" msgstr "%s 서비스 시작 성공.\n" #: net.rc:36 -msgid "The %s service failed to start.\n" +#, fuzzy +msgid "The %1 service failed to start.\n" msgstr "%s 서비스 시작 실패.\n" #: net.rc:37 -msgid "The %s service is stopping.\n" +#, fuzzy +msgid "The %1 service is stopping.\n" msgstr "%s 서비스 정지.\n" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +#, fuzzy +msgid "The %1 service was stopped successfully.\n" msgstr "%s 서비스 정지 성공.\n" #: net.rc:39 -msgid "The %s service failed to stop.\n" +#, fuzzy +msgid "The %1 service failed to stop.\n" msgstr "%s 서비스 정지 실패.\n" #: net.rc:41 @@ -8612,7 +8625,8 @@ "---------------------------------------------------------------\n" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +#, fuzzy +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "%s %s %s 열린 리소스: %lu\n" #: net.rc:44 @@ -9680,17 +9694,16 @@ msgstr "PID %u 의 프로세스의 최상위 창에 닫는 메세지 보냈습니다.\n" #: taskkill.rc:34 -#, fuzzy msgid "" "Close message sent to top-level windows of process \"%s\" with PID %u.\n" -msgstr "PID %u 의 프로세스 \"%s\"의 최상위 창에 닫는 메세지 보냈습니다.\n" +msgstr "" +"PID %u 의 프로세스 \"%s\"의 최상위 창에 닫으라는 메세지를 보냈습니다.\n" #: taskkill.rc:35 msgid "Process with PID %u was forcibly terminated.\n" msgstr "PID %u 의 프로세스는 강제로 종료되었습니다.\n" #: taskkill.rc:36 -#, fuzzy msgid "Process \"%s\" with PID %u was forcibly terminated.\n" msgstr "PID %u 의 프로세스 \"%s\" 는 강제로 종료되엇습니다.\n" @@ -9700,7 +9713,7 @@ #: taskkill.rc:38 msgid "Error: Unable to enumerate the process list.\n" -msgstr "오류: 프로세스 목록을 열거 할 수 업습니다.\n" +msgstr "오류: 프로세스 목록을 열거 할 수 없습니다.\n" #: taskkill.rc:39 msgid "Error: Unable to terminate process \"%s\".\n" @@ -10348,14 +10361,12 @@ msgstr "(없음)" #: winecfg.rc:89 -#, fuzzy msgid "Audio test failed!" -msgstr "하드디스크 재설정 실패\n" +msgstr "오디오 테스트 실패!" #: winecfg.rc:91 -#, fuzzy msgid "(System default)" -msgstr "시스템 경로" +msgstr "(시스템 기본)" #: winecfg.rc:51 msgid "" @@ -10641,7 +10652,8 @@ msgstr "스크린 버퍼 크기는 반드시 창보다 같거나 커야합니다." #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "각각의 글자는 %ld 픽셀 너비에 %ld 픽셀 높이를 가집니다" #: wineconsole.rc:35 @@ -10864,7 +10876,8 @@ msgstr "보안" #: winefile.rc:120 -msgid "%s of %s free" +#, fuzzy +msgid "%1 of %2 free" msgstr "%s of %s 사용가능" #: winemine.rc:34 @@ -11279,7 +11292,8 @@ msgstr "올바르지 않은 매개변수의 갯수 - xcopy /?로 도움말을 보시오\n" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +#, fuzzy +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "올바르지 않은 매개변수 '%s' - xcopy /?로 도움말을 보시오\n" #: xcopy.rc:29 @@ -11287,16 +11301,19 @@ msgstr " 를 누르면 복사가 시작될 것입니다\n" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +#, fuzzy +msgid "%1!d! file(s) would be copied\n" msgstr "%d 파일이 복사될 것입니다\n" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +#, fuzzy +msgid "%1!d! file(s) copied\n" msgstr "%d 파일이 복사되었습니다\n" #: xcopy.rc:34 +#, fuzzy msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" @@ -11305,20 +11322,28 @@ "(F - 파일, D - 디렉토리)\n" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +#, fuzzy +msgid "%1? (Yes|No)\n" msgstr "%s? (예|아니오)\n" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +#, fuzzy +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "%s를 덮어쓰겠습니까? (예|아니오|모두)\n" #: xcopy.rc:37 #, fuzzy -msgid "Copying of '%s' to '%s' failed with r/c %d\n" -msgstr " r/c %d로 '%s'를 '%s'로 복사 실패 \n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "r/c %d로 '%s'를 '%s'로 복사 실패 \n" + +#: xcopy.rc:38 +#, fuzzy +msgid "Failed to open '%1'\n" +msgstr "'%s' 열기 실패\n" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +#, fuzzy +msgid "Failed during reading of '%1'\n" msgstr "'%s를 읽지 못했습니다'\n" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/lt.po wine1.3-1.3.31/po/lt.po --- wine1.3-1.3.30/po/lt.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/lt.po 2011-10-21 18:38:36.000000000 +0000 @@ -1,12 +1,11 @@ # Lithuanian translations for Wine -# Aurimas Fišeras , 2011. -# Aurimas Fišeras , 2011. +# msgid "" msgstr "" "Project-Id-Version: Wine\n" "Report-Msgid-Bugs-To: http://bugs.winehq.org\n" "POT-Creation-Date: N/A\n" -"PO-Revision-Date: 2011-10-09 11:54+0300\n" +"PO-Revision-Date: 2011-10-20 22:44+0300\n" "Last-Translator: Aurimas Fišeras \n" "Language-Team: komp_lt@konf.lt\n" "Language: Lithuanian\n" @@ -122,7 +121,7 @@ msgstr "neglaudintas" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "Atsisakoma..." #: comctl32.rc:39 @@ -6733,8 +6732,8 @@ msgstr "Šiukšlinė" #: shlwapi.rc:27 -msgid "%ld bytes" -msgstr "%ld baitai" +msgid "%d bytes" +msgstr "%d baitai" #: shlwapi.rc:28 msgctxt "time unit: hours" @@ -7687,8 +7686,9 @@ "Dar nerealizuota\n" "\n" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" +#: attrib.rc:28 +#, fuzzy +msgid "%1: File Not Found\n" msgstr "%s: failas nerastas\n" #: attrib.rc:47 @@ -8365,6 +8365,10 @@ msgid "Syntax error\n" msgstr "Sintaksės klaida\n" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "%s: failas nerastas\n" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "Nėra informacijos apie %s\n" @@ -8393,7 +8397,7 @@ msgid "Environment variable %s not defined\n" msgstr "Aplinkos kintamasis %s neapibrėžtas\n" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "Nepavyko atverti „%s“\n" @@ -8605,11 +8609,13 @@ "Kur „tarnyba“ yra stabdomos tarnybos pavadinimas.\n" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +#, fuzzy +msgid "Stopping dependent service: %1\n" msgstr "Stabdoma priklausoma tarnyba: %s\n" #: net.rc:31 -msgid "Could not stop service %s\n" +#, fuzzy +msgid "Could not stop service %1\n" msgstr "Nepavyko sustabdyti tarnybos %s\n" #: net.rc:32 @@ -8621,27 +8627,33 @@ msgstr "Nepavyko gauti tarnybos rodyklės.\n" #: net.rc:34 -msgid "The %s service is starting.\n" +#, fuzzy +msgid "The %1 service is starting.\n" msgstr "Tarnyba %s yra paleidžiama.\n" #: net.rc:35 -msgid "The %s service was started successfully.\n" +#, fuzzy +msgid "The %1 service was started successfully.\n" msgstr "Tarnyba %s sėkmingai paleista.\n" #: net.rc:36 -msgid "The %s service failed to start.\n" +#, fuzzy +msgid "The %1 service failed to start.\n" msgstr "Tarnyba %s nepasileido.\n" #: net.rc:37 -msgid "The %s service is stopping.\n" +#, fuzzy +msgid "The %1 service is stopping.\n" msgstr "Tarnyba %s yra stabdoma.\n" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +#, fuzzy +msgid "The %1 service was stopped successfully.\n" msgstr "Tarnyba %s sėkmingai sustabdyta.\n" #: net.rc:39 -msgid "The %s service failed to stop.\n" +#, fuzzy +msgid "The %1 service failed to stop.\n" msgstr "Tarnyba %s nesustojo.\n" #: net.rc:41 @@ -8659,7 +8671,8 @@ "---------------------------------------------------------------\n" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +#, fuzzy +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "%s %s %s Atverti ištekliai: %lu\n" #: net.rc:44 @@ -10704,8 +10717,9 @@ msgstr "Ekrano buferio dydis turi būti didesnis arba lygus lango buferiui" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" -msgstr "Kiekvienas simbolis yra %ld pikselių pločio ir %ld pikselių aukščio" +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" +msgstr "" +"Kiekvienas simbolis yra %1!u! pikselių pločio ir %2!u! pikselių aukščio" #: wineconsole.rc:35 msgid "This is a test" @@ -10927,8 +10941,8 @@ msgstr "Saugumas" #: winefile.rc:120 -msgid "%s of %s free" -msgstr "%s iš %s laisva" +msgid "%1 of %2 free" +msgstr "%1 iš %2 laisva" #: winemine.rc:34 msgid "&Game" @@ -11342,46 +11356,50 @@ msgstr "Neteisingas parametrų skaičius - pagalba: xcopy /?\n" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" -msgstr "Neteisingas parametras „%s“ - pagalba: xcopy /?\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" +msgstr "Neteisingas parametras „%1“ – pagalba: xcopy /?\n" #: xcopy.rc:29 msgid "Press to begin copying\n" msgstr "Spauskite <įvesti> kopijavimui pradėti\n" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" -msgstr "bus nukopijuota failų: %d\n" +msgid "%1!d! file(s) would be copied\n" +msgstr "bus nukopijuota failų: %1!d!\n" #: xcopy.rc:31 -msgid "%d file(s) copied\n" -msgstr "nukopijuota failų: %d\n" +msgid "%1!d! file(s) copied\n" +msgstr "nukopijuota failų: %1!d!\n" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" -"Ar „%s“ yra failas, ar katalogas,\n" +"Ar „%1“ yra failas, ar katalogas,\n" "ar paskirtis?\n" "(F - failas, K - katalogas)\n" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" -msgstr "%s? (Taip|Ne)\n" +msgid "%1? (Yes|No)\n" +msgstr "%1? (Taip|Ne)\n" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" -msgstr "Perrašyti %s? (Taip|Ne|Visus)\n" +msgid "Overwrite %1? (Yes|No|All)\n" +msgstr "Perrašyti %1? (Taip|Ne|Visus)\n" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" -msgstr "„%s“ kopijavimas į „%s“ nepavyko su r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "„%1“ kopijavimas į „%2“ nepavyko su r/c %3!d!\n" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" +msgstr "Nepavyko atverti „%1“\n" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" -msgstr "Klaida skaitant „%s“\n" +msgid "Failed during reading of '%1'\n" +msgstr "Klaida skaitant „1“\n" #: xcopy.rc:43 msgctxt "File key" diff -Nru wine1.3-1.3.30/po/ml.po wine1.3-1.3.31/po/ml.po --- wine1.3-1.3.30/po/ml.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/ml.po 2011-10-21 18:38:36.000000000 +0000 @@ -113,7 +113,7 @@ msgstr "" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "" #: comctl32.rc:39 @@ -6600,7 +6600,7 @@ msgstr "" #: shlwapi.rc:27 -msgid "%ld bytes" +msgid "%d bytes" msgstr "" #: shlwapi.rc:28 @@ -7431,8 +7431,8 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" +#: attrib.rc:28 +msgid "%1: File Not Found\n" msgstr "" #: attrib.rc:47 @@ -7905,6 +7905,10 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -7933,7 +7937,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "" @@ -8122,11 +8126,11 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" +msgid "Could not stop service %1\n" msgstr "" #: net.rc:32 @@ -8138,27 +8142,27 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" +msgid "The %1 service is starting.\n" msgstr "" #: net.rc:35 -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "" #: net.rc:36 -msgid "The %s service failed to start.\n" +msgid "The %1 service failed to start.\n" msgstr "" #: net.rc:37 -msgid "The %s service is stopping.\n" +msgid "The %1 service is stopping.\n" msgstr "" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "" #: net.rc:39 -msgid "The %s service failed to stop.\n" +msgid "The %1 service failed to stop.\n" msgstr "" #: net.rc:41 @@ -8173,7 +8177,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -10115,7 +10119,7 @@ msgstr "" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "" #: wineconsole.rc:35 @@ -10328,7 +10332,7 @@ msgstr "" #: winefile.rc:120 -msgid "%s of %s free" +msgid "%1 of %2 free" msgstr "" #: winemine.rc:34 @@ -10743,7 +10747,7 @@ msgstr "" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" #: xcopy.rc:29 @@ -10751,34 +10755,38 @@ msgstr "" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" msgstr "" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" msgstr "" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +msgid "%1? (Yes|No)\n" msgstr "" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" msgstr "" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" msgstr "" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/nb_NO.po wine1.3-1.3.31/po/nb_NO.po --- wine1.3-1.3.30/po/nb_NO.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/nb_NO.po 2011-10-21 18:38:36.000000000 +0000 @@ -117,7 +117,7 @@ msgstr "ukomprimert" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "Avbryter..." #: comctl32.rc:39 @@ -7008,7 +7008,8 @@ msgstr "Papirkurv" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld byte" #: shlwapi.rc:28 @@ -7952,9 +7953,10 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" -msgstr "" +#: attrib.rc:28 +#, fuzzy +msgid "%1: File Not Found\n" +msgstr "Fant ikke filen\n" #: attrib.rc:47 msgid "" @@ -8605,6 +8607,10 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -8633,7 +8639,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "Klarte ikke åpne «%s»\n" @@ -8834,11 +8840,13 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +#, fuzzy +msgid "Stopping dependent service: %1\n" msgstr "Stopper avhengig tjeneste: %s\n" #: net.rc:31 -msgid "Could not stop service %s\n" +#, fuzzy +msgid "Could not stop service %1\n" msgstr "Klarte ikke stoppe tjenesten «%s»\n" #: net.rc:32 @@ -8850,27 +8858,33 @@ msgstr "Klarte ikke nå tjenesten.\n" #: net.rc:34 -msgid "The %s service is starting.\n" +#, fuzzy +msgid "The %1 service is starting.\n" msgstr "Tjenesten «%s» starter.\n" #: net.rc:35 -msgid "The %s service was started successfully.\n" +#, fuzzy +msgid "The %1 service was started successfully.\n" msgstr "Tjenesten «%s» ble startet vellykket.\n" #: net.rc:36 -msgid "The %s service failed to start.\n" +#, fuzzy +msgid "The %1 service failed to start.\n" msgstr "Tjenesten «%s» klarte ikke starte.\n" #: net.rc:37 -msgid "The %s service is stopping.\n" +#, fuzzy +msgid "The %1 service is stopping.\n" msgstr "Tjenesten «%s» stopper.\n" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +#, fuzzy +msgid "The %1 service was stopped successfully.\n" msgstr "Tjenesten «%s» ble stoppet vellykket.\n" #: net.rc:39 -msgid "The %s service failed to stop.\n" +#, fuzzy +msgid "The %1 service failed to stop.\n" msgstr "Klarte ikke stoppe tjenesten «%s».\n" #: net.rc:41 @@ -8888,7 +8902,8 @@ "---------------------------------------------------------------\n" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +#, fuzzy +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "%s %s %s Åpne ressurser: %lu\n" #: net.rc:44 @@ -10983,7 +10998,8 @@ msgstr "Skjermens hurtigminnestørrelse må være større eller lik vinduets" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "Hvert tegn er %ld piksler bredt og %ld piksler høyt" #: wineconsole.rc:35 @@ -11219,7 +11235,8 @@ msgstr "Sikkerhet" #: winefile.rc:120 -msgid "%s of %s free" +#, fuzzy +msgid "%1 of %2 free" msgstr "%s av %s ledig" #: winemine.rc:34 @@ -11642,7 +11659,8 @@ msgstr "Ugyldig antall parametere; bruk «xcopy /?» for hjelp\n" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +#, fuzzy +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "Ugyldig parameter «%s»; bruk «xcopy /?» for hjelp\n" #: xcopy.rc:29 @@ -11650,16 +11668,19 @@ msgstr "Trykk Enter for å begynne å kopiere\n" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +#, fuzzy +msgid "%1!d! file(s) would be copied\n" msgstr "%d fil(er) ville blitt kopiert\n" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +#, fuzzy +msgid "%1!d! file(s) copied\n" msgstr "%d fil(er) kopiert\n" #: xcopy.rc:34 +#, fuzzy msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" @@ -11668,19 +11689,28 @@ "(F - Fil, K - Katalog)\n" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +#, fuzzy +msgid "%1? (Yes|No)\n" msgstr "%s? (Ja|Nei)\n" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +#, fuzzy +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "Skrive over «%s»? (Ja|Nei|Alle)\n" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +#, fuzzy +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" msgstr "Klarte ikke kopiere «%s» til «%s»; feilet med r/c %d\n" +#: xcopy.rc:38 +#, fuzzy +msgid "Failed to open '%1'\n" +msgstr "Klarte ikke åpne «%s»\n" + #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +#, fuzzy +msgid "Failed during reading of '%1'\n" msgstr "Klarte ikke lese «%s»\n" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/nl.po wine1.3-1.3.31/po/nl.po --- wine1.3-1.3.30/po/nl.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/nl.po 2011-10-21 18:38:36.000000000 +0000 @@ -121,7 +121,7 @@ msgstr "ongecomprimeerd" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "Annuleren..." #: comctl32.rc:39 @@ -6843,7 +6843,8 @@ msgstr "Prullenbak" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld bytes" #: shlwapi.rc:28 @@ -7810,8 +7811,9 @@ "Nog niet geïmplementeerd\n" "\n" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" +#: attrib.rc:28 +#, fuzzy +msgid "%1: File Not Found\n" msgstr "%s : Bestand Niet Gevonden\n" #: attrib.rc:47 @@ -8464,6 +8466,10 @@ msgid "Syntax error\n" msgstr "Fout in de syntax\n" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "%s : Bestand Niet Gevonden\n" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "Geen help beschikbaar voor %s\n" @@ -8492,7 +8498,7 @@ msgid "Environment variable %s not defined\n" msgstr "Omgevingsvariable %s niet gedefinieerd\n" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "Openen van '%s' is mislukt\n" @@ -8698,11 +8704,13 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +#, fuzzy +msgid "Stopping dependent service: %1\n" msgstr "Stoppen van afhankelijke service: %s\n" #: net.rc:31 -msgid "Could not stop service %s\n" +#, fuzzy +msgid "Could not stop service %1\n" msgstr "Kon service %s niet stoppen\n" #: net.rc:32 @@ -8714,27 +8722,33 @@ msgstr "Kon geen handle krijgen naar de service.\n" #: net.rc:34 -msgid "The %s service is starting.\n" +#, fuzzy +msgid "The %1 service is starting.\n" msgstr "De %s service is aan het starten.\n" #: net.rc:35 -msgid "The %s service was started successfully.\n" +#, fuzzy +msgid "The %1 service was started successfully.\n" msgstr "De %s service was succesvol gestart.\n" #: net.rc:36 -msgid "The %s service failed to start.\n" +#, fuzzy +msgid "The %1 service failed to start.\n" msgstr "De %s service start is mislukt.\n" #: net.rc:37 -msgid "The %s service is stopping.\n" +#, fuzzy +msgid "The %1 service is stopping.\n" msgstr "De %s service is aan het stoppen.\n" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +#, fuzzy +msgid "The %1 service was stopped successfully.\n" msgstr "De %s service was succesvol gestopt.\n" #: net.rc:39 -msgid "The %s service failed to stop.\n" +#, fuzzy +msgid "The %1 service failed to stop.\n" msgstr "De %s service wilde niet stoppen.\n" #: net.rc:41 @@ -8752,7 +8766,8 @@ "---------------------------------------------------------------\n" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +#, fuzzy +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "%s %s %s Open resources: %lu\n" #: net.rc:44 @@ -10840,7 +10855,8 @@ msgstr "De schermbuffer moet groter dan of gelijk zijn aan de vensterbuffer" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "Elk karakter is %ld pixels breed en %ld pixels hoog" #: wineconsole.rc:35 @@ -11075,7 +11091,8 @@ msgstr "Beveiliging" #: winefile.rc:120 -msgid "%s of %s free" +#, fuzzy +msgid "%1 of %2 free" msgstr "%s van %s vrij" #: winemine.rc:34 @@ -11498,7 +11515,8 @@ msgstr "Onjuist aantal parameters - Gebruik xcopy /? om hulp te krijgen\n" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +#, fuzzy +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "Onjuiste parameter '%s' - Gebruik xcopy /? om hulp te krijgen\n" #: xcopy.rc:29 @@ -11506,16 +11524,19 @@ msgstr "Druk op om te beginnen met kopiëren\n" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +#, fuzzy +msgid "%1!d! file(s) would be copied\n" msgstr "%d bestand(en) zouden worden gekopieerd\n" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +#, fuzzy +msgid "%1!d! file(s) copied\n" msgstr "%d bestand(en) gekopieerd\n" #: xcopy.rc:34 +#, fuzzy msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" @@ -11524,19 +11545,28 @@ "(B - Bestand, D - Directory)\n" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +#, fuzzy +msgid "%1? (Yes|No)\n" msgstr "%s? (Ja|Nee)\n" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +#, fuzzy +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "Overschrijven %s? (Ja|Nee|Alles)\n" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +#, fuzzy +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" msgstr "Kopiëren van '%s' naar '%s' mislukt met r/c %d\n" +#: xcopy.rc:38 +#, fuzzy +msgid "Failed to open '%1'\n" +msgstr "Openen van '%s' is mislukt\n" + #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +#, fuzzy +msgid "Failed during reading of '%1'\n" msgstr "Fout tijdens lezen van '%s'\n" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/or.po wine1.3-1.3.31/po/or.po --- wine1.3-1.3.30/po/or.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/or.po 2011-10-21 18:38:36.000000000 +0000 @@ -113,7 +113,7 @@ msgstr "" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "" #: comctl32.rc:39 @@ -6600,7 +6600,7 @@ msgstr "" #: shlwapi.rc:27 -msgid "%ld bytes" +msgid "%d bytes" msgstr "" #: shlwapi.rc:28 @@ -7431,8 +7431,8 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" +#: attrib.rc:28 +msgid "%1: File Not Found\n" msgstr "" #: attrib.rc:47 @@ -7905,6 +7905,10 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -7933,7 +7937,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "" @@ -8122,11 +8126,11 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" +msgid "Could not stop service %1\n" msgstr "" #: net.rc:32 @@ -8138,27 +8142,27 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" +msgid "The %1 service is starting.\n" msgstr "" #: net.rc:35 -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "" #: net.rc:36 -msgid "The %s service failed to start.\n" +msgid "The %1 service failed to start.\n" msgstr "" #: net.rc:37 -msgid "The %s service is stopping.\n" +msgid "The %1 service is stopping.\n" msgstr "" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "" #: net.rc:39 -msgid "The %s service failed to stop.\n" +msgid "The %1 service failed to stop.\n" msgstr "" #: net.rc:41 @@ -8173,7 +8177,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -10115,7 +10119,7 @@ msgstr "" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "" #: wineconsole.rc:35 @@ -10328,7 +10332,7 @@ msgstr "" #: winefile.rc:120 -msgid "%s of %s free" +msgid "%1 of %2 free" msgstr "" #: winemine.rc:34 @@ -10743,7 +10747,7 @@ msgstr "" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" #: xcopy.rc:29 @@ -10751,34 +10755,38 @@ msgstr "" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" msgstr "" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" msgstr "" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +msgid "%1? (Yes|No)\n" msgstr "" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" msgstr "" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" msgstr "" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/pa.po wine1.3-1.3.31/po/pa.po --- wine1.3-1.3.30/po/pa.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/pa.po 2011-10-21 18:38:36.000000000 +0000 @@ -113,7 +113,7 @@ msgstr "" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "" #: comctl32.rc:39 @@ -6600,7 +6600,7 @@ msgstr "" #: shlwapi.rc:27 -msgid "%ld bytes" +msgid "%d bytes" msgstr "" #: shlwapi.rc:28 @@ -7431,8 +7431,8 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" +#: attrib.rc:28 +msgid "%1: File Not Found\n" msgstr "" #: attrib.rc:47 @@ -7905,6 +7905,10 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -7933,7 +7937,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "" @@ -8122,11 +8126,11 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" +msgid "Could not stop service %1\n" msgstr "" #: net.rc:32 @@ -8138,27 +8142,27 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" +msgid "The %1 service is starting.\n" msgstr "" #: net.rc:35 -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "" #: net.rc:36 -msgid "The %s service failed to start.\n" +msgid "The %1 service failed to start.\n" msgstr "" #: net.rc:37 -msgid "The %s service is stopping.\n" +msgid "The %1 service is stopping.\n" msgstr "" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "" #: net.rc:39 -msgid "The %s service failed to stop.\n" +msgid "The %1 service failed to stop.\n" msgstr "" #: net.rc:41 @@ -8173,7 +8177,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -10115,7 +10119,7 @@ msgstr "" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "" #: wineconsole.rc:35 @@ -10328,7 +10332,7 @@ msgstr "" #: winefile.rc:120 -msgid "%s of %s free" +msgid "%1 of %2 free" msgstr "" #: winemine.rc:34 @@ -10743,7 +10747,7 @@ msgstr "" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" #: xcopy.rc:29 @@ -10751,34 +10755,38 @@ msgstr "" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" msgstr "" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" msgstr "" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +msgid "%1? (Yes|No)\n" msgstr "" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" msgstr "" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" msgstr "" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/pl.po wine1.3-1.3.31/po/pl.po --- wine1.3-1.3.30/po/pl.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/pl.po 2011-10-21 18:38:36.000000000 +0000 @@ -5,9 +5,9 @@ "Project-Id-Version: Wine\n" "Report-Msgid-Bugs-To: http://bugs.winehq.org\n" "POT-Creation-Date: N/A\n" -"PO-Revision-Date: 2011-06-16 13:50-0500\n" -"Last-Translator: Łukasz Wojniłowicz\n" -"Language-Team: none\n" +"PO-Revision-Date: 2011-10-15 21:53+0200\n" +"Last-Translator: Łukasz Wojniłowicz \n" +"Language-Team: Polish \n" "Language: Polish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -119,7 +119,7 @@ msgstr "nie skompresowany" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "Trwa anulowanie..." #: comctl32.rc:39 @@ -164,7 +164,6 @@ msgstr "Ścieżka systemowa" #: comdlg32.rc:34 shell32.rc:153 winecfg.rc:98 winefile.rc:103 -#, fuzzy msgctxt "display name" msgid "Desktop" msgstr "Pulpit" @@ -692,7 +691,6 @@ msgstr "Preferuj dane podpisane" #: crypt32.rc:53 cryptdlg.rc:31 -#, fuzzy msgctxt "Certification Practice Statement" msgid "CPS" msgstr "CPS" @@ -802,9 +800,8 @@ msgstr "Inicjały" #: crypt32.rc:80 -#, fuzzy msgid "Surname" -msgstr "Nazwa użytkownika" +msgstr "Nazwisko" #: crypt32.rc:81 msgid "Domain Component" @@ -1231,7 +1228,6 @@ msgstr "Typ podmiotu=" #: crypt32.rc:195 -#, fuzzy msgctxt "Certificate Authority" msgid "CA" msgstr "UC" @@ -1262,7 +1258,6 @@ msgstr "Metoda dostępu=" #: crypt32.rc:202 -#, fuzzy msgctxt "Online Certificate Status Protocol" msgid "OCSP" msgstr "OCSP" @@ -2027,14 +2022,12 @@ msgstr "Standardowe urządzenie Device" #: dinput.rc:34 -#, fuzzy msgid "Action" -msgstr "Aktywacja" +msgstr "Działanie" #: dinput.rc:35 -#, fuzzy msgid "Object" -msgstr "&Obiekt" +msgstr "Obiekt" #: dxdiagn.rc:25 msgid "Regional Setting" @@ -2363,9 +2356,8 @@ msgstr "Kodowane URI zawiera niewłaściwe znaki" #: jscript.rc:48 -#, fuzzy msgid "URI to be decoded is incorrect" -msgstr "Kodowane URI zawiera niewłaściwe znaki" +msgstr "URI do dekodowania jest niepoprawny" #: jscript.rc:50 msgid "Array length must be a finite positive integer" @@ -2509,7 +2501,7 @@ #: winerror.mc:191 msgid "Lock violation\n" -msgstr "" +msgstr "Naruszenie blokady\n" #: winerror.mc:196 msgid "Wrong disk\n" @@ -2681,7 +2673,7 @@ #: winerror.mc:406 msgid "Semaphore user limit\n" -msgstr "" +msgstr "Ograniczenie użytkownika semafory\n" #: winerror.mc:411 msgid "Insert disk for drive %1\n" @@ -2729,7 +2721,7 @@ #: winerror.mc:471 msgid "Semaphore timeout\n" -msgstr "" +msgstr "Przekroczenie czasu semafory\n" #: winerror.mc:476 msgid "Insufficient buffer\n" @@ -2873,7 +2865,7 @@ #: winerror.mc:656 msgid "Segment not locked\n" -msgstr "" +msgstr "Segment niezablokowany\n" #: winerror.mc:661 msgid "Bad thread ID address\n" @@ -2897,7 +2889,7 @@ #: winerror.mc:686 msgid "Lock failed\n" -msgstr "" +msgstr "Nieudane zablokowanie\n" #: winerror.mc:691 msgid "Resource in use\n" @@ -2909,7 +2901,7 @@ #: winerror.mc:701 msgid "Atomic locks not supported\n" -msgstr "" +msgstr "Blokady atomowe są nieobsługiwane\n" #: winerror.mc:706 msgid "Invalid segment number\n" @@ -3021,7 +3013,7 @@ #: winerror.mc:841 msgid "Segment locked\n" -msgstr "" +msgstr "Segment zablokowany\n" #: winerror.mc:846 msgid "Too many modules\n" @@ -3105,7 +3097,7 @@ #: winerror.mc:946 msgid "Too many posts to semaphore\n" -msgstr "" +msgstr "Zbyt wiele postów do semafory\n" #: winerror.mc:951 msgid "Read/WriteProcessMemory partially completed\n" @@ -3249,7 +3241,7 @@ #: winerror.mc:1126 msgid "Notify change request in progress\n" -msgstr "" +msgstr "Powiadom o żądaniu zmiany w postępie\n" #: winerror.mc:1131 msgid "Dependent services are running\n" @@ -3269,7 +3261,7 @@ #: winerror.mc:1151 msgid "Service database locked\n" -msgstr "" +msgstr "Baza danych usługi zablokowana\n" #: winerror.mc:1156 msgid "Service already running\n" @@ -3285,7 +3277,7 @@ #: winerror.mc:1171 msgid "Circular dependency\n" -msgstr "" +msgstr "Kołowa zależność\n" #: winerror.mc:1176 msgid "Service does not exist\n" @@ -3333,7 +3325,7 @@ #: winerror.mc:1231 msgid "Invalid service lock\n" -msgstr "" +msgstr "Nieprawidłowa blokada usługi\n" #: winerror.mc:1236 msgid "Service marked for delete\n" @@ -3725,7 +3717,7 @@ #: winerror.mc:1726 msgid "Session credential conflict\n" -msgstr "" +msgstr "Konflikt danych poufnych sesji\n" #: winerror.mc:1731 msgid "Remote session limit exceeded\n" @@ -3745,7 +3737,7 @@ #: winerror.mc:1751 msgid "File has a user-mapped section\n" -msgstr "" +msgstr "Plik ma sekcję mapowania użytkownika\n" #: winerror.mc:1756 winerror.mc:3741 msgid "Connection refused\n" @@ -3757,11 +3749,11 @@ #: winerror.mc:1766 msgid "Address already associated with transport endpoint\n" -msgstr "" +msgstr "Adres jest już skojarzony z punktem końcowym transportu\n" #: winerror.mc:1771 msgid "Address not associated with transport endpoint\n" -msgstr "" +msgstr "Adres nie jest skojarzony z punktem końcowym transportu\n" #: winerror.mc:1776 msgid "Connection invalid\n" @@ -3905,7 +3897,7 @@ #: winerror.mc:1951 msgid "No impersonation token\n" -msgstr "" +msgstr "Brak bezosobowego tokena\n" #: winerror.mc:1956 msgid "Can't disable mandatory group\n" @@ -4049,7 +4041,7 @@ #: winerror.mc:2131 msgid "Bad impersonation level\n" -msgstr "" +msgstr "Zły poziom bezosobowości\n" #: winerror.mc:2136 msgid "Can't open anonymous security token\n" @@ -4057,7 +4049,7 @@ #: winerror.mc:2141 msgid "Bad validation class\n" -msgstr "" +msgstr "Zła klasa walidacji\n" #: winerror.mc:2146 msgid "Bad token type\n" @@ -4105,7 +4097,7 @@ #: winerror.mc:2201 msgid "Generic access types not mapped\n" -msgstr "" +msgstr "Zwykłe typy dostępu nie są zmapowane\n" #: winerror.mc:2206 msgid "Bad descriptor format\n" @@ -4137,7 +4129,7 @@ #: winerror.mc:2241 msgid "Cannot impersonate\n" -msgstr "" +msgstr "Nie można ubezosobowić\n" #: winerror.mc:2246 msgid "Invalid transaction state\n" @@ -4145,7 +4137,7 @@ #: winerror.mc:2251 msgid "Security DB commit failure\n" -msgstr "" +msgstr "Porażka dokonania bezpieczeństwa w bazie danych\n" #: winerror.mc:2256 msgid "Account is built-in\n" @@ -4197,7 +4189,7 @@ #: winerror.mc:2316 msgid "Internal security DB error\n" -msgstr "" +msgstr "Wewnętrzny błąd bezpieczeństwa bazy danych\n" #: winerror.mc:2321 msgid "Too many context IDs\n" @@ -4353,7 +4345,7 @@ #: winerror.mc:2516 msgid "Invalid edit height\n" -msgstr "" +msgstr "Nieprawidłowa wysokość edycji\n" #: winerror.mc:2521 msgid "DC not found\n" @@ -4417,7 +4409,7 @@ #: winerror.mc:2596 msgid "Screen already locked\n" -msgstr "" +msgstr "Ekran jest już zablokowany\n" #: winerror.mc:2601 msgid "Window handles have different parents\n" @@ -4477,7 +4469,7 @@ #: winerror.mc:2671 msgid "Exceeded commitment limit\n" -msgstr "" +msgstr "Przekroczono ograniczenie dokonań\n" #: winerror.mc:2676 msgid "Menu item not found\n" @@ -4493,7 +4485,7 @@ #: winerror.mc:2691 msgid "Interactive window station required\n" -msgstr "" +msgstr "Wymagana interaktywna stacja okna\n" #: winerror.mc:2696 msgid "Timeout\n" @@ -4685,7 +4677,7 @@ #: winerror.mc:2931 msgid "Invalid string binding\n" -msgstr "" +msgstr "Nieprawidłowe bindowanie ciągu znaków\n" #: winerror.mc:2936 msgid "Wrong kind of binding\n" @@ -4997,7 +4989,7 @@ #: winerror.mc:3326 msgid "Bad stub data\n" -msgstr "" +msgstr "Złe dane zalążka\n" #: winerror.mc:3331 msgid "Invalid user buffer\n" @@ -5009,7 +5001,7 @@ #: winerror.mc:3341 msgid "No trust secret\n" -msgstr "" +msgstr "Brak sekretu zaufania\n" #: winerror.mc:3346 msgid "No trust SAM account\n" @@ -5105,7 +5097,7 @@ #: winerror.mc:3461 msgid "Domain trust information inconsistent\n" -msgstr "" +msgstr "Niespójne informacje zaufania domenie\n" #: winerror.mc:3466 msgid "Server has open handles\n" @@ -5177,7 +5169,7 @@ #: winerror.mc:3551 msgid "Wrong serialising package version\n" -msgstr "" +msgstr "Zła wersja paczki serializującej\n" #: winerror.mc:3556 msgid "Wrong stub version\n" @@ -5581,7 +5573,7 @@ #: oleacc.rc:48 msgid "separator" -msgstr "" +msgstr "separator" #: oleacc.rc:49 msgid "tool bar" @@ -5709,7 +5701,7 @@ #: oleacc.rc:80 msgid "diagram" -msgstr "" +msgstr "diagram" #: oleacc.rc:81 msgid "animation" @@ -5868,7 +5860,7 @@ #: sane.rc:31 msgctxt "unit: pixels" msgid "px" -msgstr "" +msgstr "piks." #: sane.rc:32 msgctxt "unit: bits" @@ -6200,7 +6192,7 @@ #: shdoclc.rc:25 msgid "Wine Internet Explorer" -msgstr "" +msgstr "Wine Internet Explorer" #: shdoclc.rc:30 msgid "&w&bPage &p" @@ -6274,14 +6266,13 @@ msgstr "Właściwości" #: shell32.rc:82 -#, fuzzy msgctxt "recycle bin" msgid "&Restore" -msgstr "&Przywróć" +msgstr "P&rzywróć" #: shell32.rc:83 msgid "&Erase" -msgstr "" +msgstr "&Wymaż" #: shell32.rc:95 msgid "E&xplore" @@ -6305,7 +6296,6 @@ msgstr "Za&kończ" #: shell32.rc:127 -#, fuzzy msgid "&About Control Panel" msgstr "Panel sterowania - i&nformacje" @@ -6395,7 +6385,7 @@ #: shell32.rc:204 msgid "SendTo" -msgstr "" +msgstr "SendTo" #: shell32.rc:205 msgid "Start Menu" @@ -6410,7 +6400,6 @@ msgstr "Moje wideo" #: shell32.rc:208 -#, fuzzy msgctxt "directory" msgid "Desktop" msgstr "Pulpit" @@ -6674,44 +6663,40 @@ "Nie ma przypisanego programu Windowsowego do otwierania tego typu plików." #: shell32.rc:256 -#, fuzzy msgid "Are you sure you wish to permanently delete '%1'?" -msgstr "Czy jesteś pewien, że chcesz usunąć '%1'?" +msgstr "Czy na pewno chcesz trwale usunąć '%1'?" #: shell32.rc:257 -#, fuzzy msgid "Are you sure you wish to permanently delete these %1 items?" -msgstr "Czy jesteś pewien, że chcesz usunąć te %1 pliki?" +msgstr "Czy na pewno chcesz trwale usunąć te %1 elementy?" #: shell32.rc:258 -#, fuzzy msgid "Confirm deletion" -msgstr "Potwierdź usunięcie pliku" +msgstr "Potwierdź usunięcie" #: shell32.rc:259 -#, fuzzy msgid "" "A file already exists at the path %1.\n" "\n" "Do you want to replace it?" msgstr "" -"Plik istnieje.\n" +"Plik już istnieje w ścieżce %1.\n" +"\n" "Czy chcesz go zastąpić?" #: shell32.rc:260 -#, fuzzy msgid "" "A folder already exists at the path %1.\n" "\n" "Do you want to replace it?" msgstr "" -"Plik istnieje.\n" +"Katalog już istnieje w ścieżce %1.\n" +"\n" "Czy chcesz go zastąpić?" #: shell32.rc:261 -#, fuzzy msgid "Confirm overwrite" -msgstr "Potwierdź zastąpienie pliku" +msgstr "Potwierdź zastąpienia" #: shell32.rc:278 msgid "" @@ -6754,32 +6739,29 @@ msgstr "Kosz" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld bajtów" #: shlwapi.rc:28 -#, fuzzy msgctxt "time unit: hours" msgid " hr" msgstr " godz." #: shlwapi.rc:29 -#, fuzzy msgctxt "time unit: minutes" msgid " min" msgstr " min." #: shlwapi.rc:30 -#, fuzzy msgctxt "time unit: seconds" msgid " sec" msgstr " s" #: user32.rc:27 user32.rc:40 taskmgr.rc:138 -#, fuzzy msgctxt "window" msgid "&Restore" -msgstr "&Przywróć" +msgstr "P&rzywróć" #: user32.rc:28 user32.rc:41 msgid "&Move" @@ -6806,13 +6788,12 @@ msgstr "Wine - i&nformacje" #: user32.rc:46 -#, fuzzy msgid "&Close\tCtrl-F4" -msgstr "Zam&knij\tAlt-F4" +msgstr "Zam&knij\tCtrl-F4" #: user32.rc:48 msgid "Nex&t\tCtrl-F6" -msgstr "" +msgstr "Nas&tępny\tCtrl-F6" #: user32.rc:68 regedit.rc:176 winecfg.rc:90 winefile.rc:100 msgid "Error" @@ -7714,8 +7695,9 @@ "Jeszcze niezaimplementowane\n" "\n" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" +#: attrib.rc:28 +#, fuzzy +msgid "%1: File Not Found\n" msgstr "%s : Plik nie znaleziony\n" #: attrib.rc:47 @@ -7900,7 +7882,6 @@ "HELP bez argumentu pokazuje wszystkie wbudowane polecenia CMD.\n" #: cmd.rc:94 -#, fuzzy msgid "" "IF is used to conditionally execute a command.\n" "\n" @@ -7911,15 +7892,15 @@ "In the second form of the command, string1 and string2 must be in double\n" "quotes. The comparison is not case-sensitive.\n" msgstr "" -"IF jest używane do warunkowego wykonywania poleceń\n" +"IF jest używane do warunkowego wykonywania poleceń.\n" "\n" -"Składnia:\tIF [NOT] EXIST nazwa_pliku komenda\n" -"IF [NOT] ciąg_znaków1==ciąg_znaków2 komenda\n" -"IF [NOT] ERRORLEVEL numer komenda\n" -"\n" -"W drugiej formie (ciąg_znaków1==ciąg_znaków2) ciąg znaków musi być zawarty " -"w\n" -"cudzysłowie. Przy porównywaniu pomijana jest wielkość znaków.\n" +"Składnia: IF [NOT] EXIST nazwa_pliku polecenie\n" +" IF [NOT] ciąg_znaków1==ciąg_znaków2 polecenie\n" +" IF [NOT] ERRORLEVEL numer polecenie\n" +"\n" +"W drugiej postaci polecenia, ciąg_znaków1 i ciąg_znaków2 musi zostać zawarty " +"w cudzysłowie\n" +"Porównanie nie uwzględnia wielkości znaków.\n" #: cmd.rc:100 msgid "" @@ -7982,20 +7963,19 @@ "PATH %PATH%;c:\\temp\n" #: cmd.rc:128 -#, fuzzy msgid "" "PAUSE displays a message on the screen asking the user to press a key.\n" "\n" "It is mainly useful in batch files to allow the user to read the output\n" "of a previous command before it scrolls off the screen.\n" msgstr "" -"PAUSE wyświetla informacje 'Naciśnij Enter aby kontynuować' i czeka,\n" -"aż użytkownik naciśnie klawisz Enter. Funkcja ta jest użyteczna w plikach\n" -"typu bat, aby umożliwić użytkownikowi przeczytanie informacji wyświetlonych\n" -"na ekranie.\n" +"PAUSE wyświetla na ekranie prośbę do użytkownika o naciśnięcie klawisza.\n" +"\n" +"Jest to użyteczne w plikach wsadowych, bo pozwala użytkownikowi na odczyt " +"wyjścia\n" +" poprzedniego polecenia przed przewinięciem ekranu.\n" #: cmd.rc:149 -#, fuzzy msgid "" "PROMPT sets the command-line prompt.\n" "\n" @@ -8017,23 +7997,31 @@ "The prompt can also be changed by altering the PROMPT environment variable,\n" "so the command 'SET PROMPT=text' has the same effect as 'PROMPT text'.\n" msgstr "" -"PROMPT ustawia tekst zgłoszenia konsoli.\n" +"PROMPT ustawia tekst zgłoszenia wiersza poleceń.\n" "\n" -"Tekst występujący za komendą (i spacje występujące za nim)\n" -"pojawiają się na początku linii gdy cmd czeka na komendę.\n" +"Ciąg znaków po poleceniu PROMPT (i spacja występująca zaraz za nim)\n" +"pojawiają się na początku wiersza, gdy cmd czeka na wejście.\n" "\n" "Następujące ciągi znaków mają specjalne znaczenie:\n" "\n" -"$$ Znak dolara ($) $_ Znak _ $b Znak |\n" -"$d Data $e Escape $g Znak >\n" -"$l Znak < $n Dysk $p Ścieżka\n" -"$q Znak = $t Czas $v Wersja cmd\n" -"\n" -"Wpisanie PROMPT bez opcji resetuje ustawienia konsoli związane z komendą\n" -"PROMPT, ustawia wyświetlany tekst na ścieżkę i znak >.\n" +"$$ Znak dolara ($) $_ Nowa linia $b Znak kanału " +"(|)\n" +"$d Obecna data $e Escape $g Znak >\n" +"$l Znak < $n Obecny napęd $p Obecna " +"ścieżka\n" +"$q Znak = $t Obecny czas $v " +"Wersja cmd\n" +"\n" +"Zauważ, że wpisanie polecenia PROMPT bez ciagu znaków zgłoszenia zeruje " +"ustawienia zgłoszenia do domyślnych, czyli do obecnego katalogu (co " +"uwzględnia\n" +"obecną literę dystku), po której następuje znak większe niż (>).\n" +"(tak jak polecenie PROMPT $p$g).\n" "(Tak samo jak polecenie PROMPT $p$g).\n" "\n" -"Polecenie 'SET PROMPT=tekst' ma taki sam efekt jak 'PROMPT tekst'\n" +"Zgłoszenie może być także zmienione poprzez zmianę zmiennej środowiskowej\n" +"PROMPT, tak więc polecenie 'SET PROMPT=tekst' ma ten sam efekt co 'PROMPT " +"tekst'.\n" #: cmd.rc:153 msgid "" @@ -8229,7 +8217,6 @@ "lub powłoki, w której uruchomiono cmd.\n" #: cmd.rc:289 -#, fuzzy msgid "" "CMD built-in commands are:\n" "ASSOC\t\tShow or modify file extension associations\n" @@ -8269,10 +8256,12 @@ "\n" "Enter HELP for further information on any of the above commands.\n" msgstr "" -"CMD - wbudowane komendy:\n" +"Wbudowane polecenia CMD to:\n" +"ASSOC\t\tPokazuje lub modyfikuje skojarzenia rozszerzeń plików\n" "ATTRIB\t\tPokazuje lub zmienia atrybuty pliku\n" "CALL\t\tWywołuje plik bat z innego pliku\n" "CD (CHDIR)\tZmienia bieżący katalog\n" +"CHOICE\t\tCzeka na naciśnięcie klawisza z wybieranej listy\n" "CLS\t\tCzyści ekran konsoli\n" "COPY\t\tKopiuje plik\n" "CTTY\t\tZmienia urządzenie wyjścia/wejścia\n" @@ -8280,25 +8269,33 @@ "DEL (ERASE)\tUsuwa plik lub pliki\n" "DIR\t\tWyświetla zawartość katalogu\n" "ECHO\t\tKopiuje tekst na wyjście konsoli\n" +"ENDLOCAL\tKoniec zmiany ustawień regionalnych środowiska w pliku wsadowym\n" +"FTYPE\t\tPokazuje lub modyfikuje polecenia otwarcia skojarzone z typami " +"plików\n" "HELP\t\tWyświetla dokładniejszą pomoc o komendzie\n" "MD (MKDIR)\tTworzy katalog\n" "MORE\t\tWyświetla wyjście strona po stronie\n" "MOVE\t\tPrzenosi katalog lub pliki\n" "PATH\t\tUstawia lub wyświetla ścieżkę przeszukiwania\n" +"PAUSE\t\tWstrzymuje wykonywanie pliku wsadowego\n" "POPD\t\tWraca do katalogu zapamiętanego przez PUSHD\n" "PROMPT\t\tZmienia tekst zgłoszenia\n" "PUSHD\t\tPrzechodzi do nowego katalogu zapamiętując stary\n" "REN (RENAME)\tZmienia nazwę pliku\n" "RD (RMDIR)\tUsuwa katalog\n" "SET\t\tUstawia lub wyświetla zmienne środowiskowe\n" +"SETLOCAL\tPoczątek zmiany ustawień regionalnych środowiska w pliku wsadowym\n" "TIME\t\tUstawia lub wyświetla czas\n" "TITLE\t\tUstawia tytuł okna CMD\n" "TYPE\t\tWyświetla zawartość pliku\n" "VER\t\tWyświetla wersję CMD\n" "VOL\t\tWyświetla etykietę dysku\n" -"EXIT\t\tWyłącza CMD\n" +"XCOPY\t\tKopiuje pliki lub drzewa katalogów z miejsca źródłowego do " +"docelowego\n" +"EXIT\t\tZamyka CMD\n" "\n" -"Wpisz HELP dla dokładniejszych informacji o komendzie\n" +"Wpisz HELP dla dalszych informacji o którymkolwiek z tych " +"poleceń.\n" #: cmd.rc:291 msgid "Are you sure" @@ -8342,6 +8339,10 @@ msgid "Syntax error\n" msgstr "Błąd składni\n" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "%s : Plik nie znaleziony\n" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "Plik pomocy nie istnieje dla %s\n" @@ -8370,7 +8371,7 @@ msgid "Environment variable %s not defined\n" msgstr "Zmienna środowiskowa %s niezdefiniowana\n" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "Nieudane otwarcie '%s'\n" @@ -8422,9 +8423,8 @@ msgstr "Nie znaleziono PATH\n" #: cmd.rc:321 -#, fuzzy msgid "Press any key to continue... " -msgstr "Naciśnij klawisz Enter, aby kontynuować: " +msgstr "Naciśnij jakikolwiek klawisz, aby kontynuować... " #: cmd.rc:322 msgid "Wine Command Prompt" @@ -8444,36 +8444,36 @@ #: dxdiag.rc:27 msgid "DirectX Diagnostic Tool" -msgstr "" +msgstr "Narzędzie diagnostyki DirectX" #: dxdiag.rc:28 msgid "Usage: dxdiag [/whql:off | /whql:on] [/t filename | /x filename]" msgstr "" +"Użycie: dxdiag [/whql:off | /whql:on] [/t nazwa_pliku | /x nazwa_pliku]" #: explorer.rc:28 -#, fuzzy msgid "Wine Explorer" -msgstr "Wine Internet Explorer" +msgstr "Wine Explorer" #: explorer.rc:29 -#, fuzzy msgid "Location:" -msgstr "Położenie" +msgstr "Położenie:" #: hostname.rc:27 msgid "Usage: hostname\n" -msgstr "" +msgstr "Użycie: hostname\n" #: hostname.rc:28 -#, fuzzy msgid "Error: Invalid option '%c'.\n" -msgstr "Błąd: Niewłaściwa nazwa klucza\n" +msgstr "Błąd: Nieprawidłowa opcja '%c'.\n" #: hostname.rc:29 msgid "" "Error: Setting the system hostname is not possible with the hostname " "utility.\n" msgstr "" +"Błąd: Ustawienie nazwy hosta systemu jest niemożliwe przy użyciu narzędzia " +"hostname.\n" #: ipconfig.rc:27 msgid "Usage: ipconfig [ /? | /all ]\n" @@ -8536,7 +8536,6 @@ msgstr "Brama domyślna" #: net.rc:27 -#, fuzzy msgid "" "The syntax of this command is:\n" "\n" @@ -8546,14 +8545,13 @@ "\n" "Where 'command' is one of HELP, START, STOP or USE.\n" msgstr "" -"Składnia tego polecenia:\n" +"Składnia tego polecenia to:\n" "\n" -"NET HELP polecenie\n" +"NET polecenie [argumenty]\n" " -lub-\n" "NET polecenie /HELP\n" "\n" -" Dostępne polecenia:\n" -" NET HELP NET START NET STOP NET USE\n" +"Gdzie 'polecenie' to jedno z HELP, START, STOP lub USE.\n" #: net.rc:28 msgid "" @@ -8564,6 +8562,12 @@ "Displays the list of running services if 'service' is omitted. Otherwise " "'service' is the name of the service to start.\n" msgstr "" +"Składnia tego polecenia to:\n" +"\n" +"NET START [usługa]\n" +"\n" +"Wyświetla listę uruchomionych usług, jeżeli pominięto 'usługa'. W przeciwnym " +"przypadku 'usługa' jest nazwą usługi do uruchomienia.\n" #: net.rc:29 msgid "" @@ -8573,13 +8577,20 @@ "\n" "Where 'service' is the name of the service to stop.\n" msgstr "" +"Składnia tego polecenia to:\n" +"\n" +"NET STOP [usługa]\n" +"\n" +"Gdzie 'usługa' jest nazwą usługi do zatrzymania.\n" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +#, fuzzy +msgid "Stopping dependent service: %1\n" msgstr "Zatrzymuję serwis: %s\n" #: net.rc:31 -msgid "Could not stop service %s\n" +#, fuzzy +msgid "Could not stop service %1\n" msgstr "Nie udało się zatrzymać serwisu %s\n" #: net.rc:32 @@ -8591,27 +8602,33 @@ msgstr "Nie udało się uzyskać uchwytu do serwisu.\n" #: net.rc:34 -msgid "The %s service is starting.\n" +#, fuzzy +msgid "The %1 service is starting.\n" msgstr "Serwis %s jest uruchamiany...\n" #: net.rc:35 -msgid "The %s service was started successfully.\n" +#, fuzzy +msgid "The %1 service was started successfully.\n" msgstr "Serwis %s został pomyślnie uruchamiany.\n" #: net.rc:36 -msgid "The %s service failed to start.\n" +#, fuzzy +msgid "The %1 service failed to start.\n" msgstr "Uruchomienie serwisu %s nie powiodło się.\n" #: net.rc:37 -msgid "The %s service is stopping.\n" +#, fuzzy +msgid "The %1 service is stopping.\n" msgstr "Serwis %s jest zatrzymywany...\n" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +#, fuzzy +msgid "The %1 service was stopped successfully.\n" msgstr "Serwis %s został pomyślnie zatrzymany.\n" #: net.rc:39 -msgid "The %s service failed to stop.\n" +#, fuzzy +msgid "The %1 service failed to stop.\n" msgstr "Zatrzymanie serwisu %s nie powiodło się.\n" #: net.rc:41 @@ -8629,42 +8646,37 @@ "---------------------------------------------------------------\n" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +#, fuzzy +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "%s %s %s Otwarte zasoby: %lu\n" #: net.rc:44 msgid "OK" -msgstr "" +msgstr "OK" #: net.rc:45 -#, fuzzy msgid "Paused" -msgstr "&Wstrzymana" +msgstr "Wstrzymano" #: net.rc:46 -#, fuzzy msgid "Disconnected" -msgstr "Symbol potoku podłączony\n" +msgstr "Rozłączono" #: net.rc:47 -#, fuzzy msgid "A network error occurred" -msgstr "Błąd drukowania." +msgstr "Wystąpił błąd sieci" #: net.rc:48 -#, fuzzy msgid "Connection is being made" -msgstr "Połączenie jest aktywne\n" +msgstr "Połączenie jest nawiązywane" #: net.rc:49 -#, fuzzy msgid "Reconnecting" -msgstr "Łączenie z %s" +msgstr "Ponowne łączenie" #: net.rc:40 -#, fuzzy msgid "The following services are running:\n" -msgstr "Zależne usługi są uruchomione\n" +msgstr "Uruchomione są następujące usługi:\n" #: notepad.rc:27 msgid "&New\tCtrl+N" @@ -8784,12 +8796,11 @@ "Użyj innego edytora do edycji pliku." #: notepad.rc:81 -#, fuzzy msgid "" "You did not enter any text.\n" "Please type something and try again." msgstr "" -"Nie wprowadziłeś żadnego tekstu. \n" +"Nie wprowadzono żadnego tekstu.\n" "Proszę coś wpisać i spróbować ponownie." #: notepad.rc:83 @@ -8861,9 +8872,8 @@ msgstr "&Otwórz bibliotekę typów..." #: oleview.rc:32 -#, fuzzy msgid "&System Configuration" -msgstr "&Konfiguracja systemu..." +msgstr "Konfiguracja &systemu" #: oleview.rc:33 msgid "&Run the Registry Editor" @@ -8886,14 +8896,12 @@ msgstr "" #: oleview.rc:43 -#, fuzzy msgid "&Local server" -msgstr "Błąd lokalny" +msgstr "Serwer &lokalny" #: oleview.rc:44 -#, fuzzy msgid "&Remote server" -msgstr "&Usuń..." +msgstr "Serwer &zdalny" #: oleview.rc:47 msgid "View &Type information" @@ -8968,9 +8976,8 @@ msgstr "wersja 1.0" #: oleview.rc:100 -#, fuzzy msgid "TypeLib files (*.tlb; *.olb; *.dll; *.ocx; *.exe)" -msgstr "Pliki TypeLib (*.tlb;*.olb;*.dll;*.ocx;*.exe)" +msgstr "Pliki TypeLib (*.tlb; *.olb; *.dll; *.ocx; *.exe)" #: oleview.rc:103 msgid "Bind to file via a File Moniker" @@ -9047,14 +9054,12 @@ msgstr "" #: oleview.rc:115 -#, fuzzy msgid "Ask for a local server when calling CoGetClassObject" -msgstr "Użyj flagi CLSCTX_LOCAL_SERVER podczas wywoływania CoGetClassObject" +msgstr "Zapytaj o lokalny serwer przy wywoływaniu CoGetClassObject" #: oleview.rc:116 -#, fuzzy msgid "Ask for a remote server when calling CoGetClassObject" -msgstr "Użyj flagi CLSCTX_LOCAL_SERVER podczas wywoływania CoGetClassObject" +msgstr "Zapytaj o zdalny serwer przy wywoływaniu CoGetClassObject" #: oleview.rc:128 msgid "ObjectClasses" @@ -9153,18 +9158,16 @@ msgstr "&Kopiuj...\tF8" #: progman.rc:35 -#, fuzzy msgid "&Properties\tAlt+Enter" -msgstr "&Właściwości...\tAlt+Enter" +msgstr "&Właściwości\tAlt+Enter" #: progman.rc:37 msgid "&Execute..." msgstr "Urucho&m..." #: progman.rc:39 -#, fuzzy msgid "E&xit Windows" -msgstr "&Zakończ..." +msgstr "&Wyjdź z Windows" #: progman.rc:41 taskmgr.rc:41 winefile.rc:63 winhlp32.rc:44 msgid "&Options" @@ -9594,7 +9597,6 @@ msgstr "Eksportuje zaznaczoną gałąź rejestru do pliku tekstowego" #: start.rc:46 -#, fuzzy msgid "" "Start a program, or open a document in the program normally used for files " "with that suffix.\n" @@ -9618,23 +9620,26 @@ "This is free software, and you are welcome to redistribute it\n" "under certain conditions; run 'start /L' for details.\n" msgstr "" -"Uruchamia program lub otwiera dokument w programie który jest zwykle używany " -"dla tego rozszerzenia.\n" +"Uruchamia program lub otwiera dokument w programie, który jest zwykle " +"używany dla tego rozszerzenia.\n" "Użycie:\n" "start [opcje] nazwa_programu [...]\n" "start [opcje] nazwa_dokumentu\n" "\n" "Opcje:\n" -"/M[inimized] Uruchamia program zminimalizowany.\n" -"/MAX[imized] Uruchamia program zmaksymalizowany.\n" +"/M[inimalizowany] Uruchamia program zminimalizowany.\n" +"/MAX[ymalizowany] Uruchamia program zmaksymalizowany.\n" "/R[estored] Uruchamia program normalnie (bez minimalizacji ani " "maksymalizacji).\n" "/W[ait] Zaczekaj aż program zakończy działanie (i zakończ\n" "\t kodem wyjścia programu).\n" +"/Unix Użyj Uniksowej nazwy pliku i uruchom plik tak jak w eksplorerze " +"windowsa.\n" "/ProgIDOpen Open a document using the following progID.\n" "/L Pokaż licencję użytkownika.\n" +"/? Wyświetl tą pomoc i wyjdź.\n" "\n" -"start.exe wersja 0.2 Copyright (C) 2003, Dan Kegel\n" +"start.exe wersja 0.2 Prawa autorskie (C) 2003, Dan Kegel\n" "Start jest dostarczany BEZ ŻADNEJ GWARANCJI; szczegóły w opcji /L.\n" "To jest wolne oprogramowanie i możesz je rozpowszechniać (pod pewnymi\n" "warunkami); uruchom 'start /L' aby poznać szczegóły.\n" @@ -9875,12 +9880,10 @@ msgstr "&Czasu rzeczywistego" #: taskmgr.rc:160 -#, fuzzy msgid "&Above Normal" msgstr "&Powyżej normalnego" #: taskmgr.rc:164 -#, fuzzy msgid "&Below Normal" msgstr "Poniżej no&rmalnego" @@ -10333,7 +10336,6 @@ msgstr "Dyski" #: winecfg.rc:33 -#, fuzzy msgid "Select the Unix target directory, please." msgstr "Proszę wybrać docelowy katalog Uniksowy." @@ -10379,7 +10381,7 @@ #: winecfg.rc:45 msgid "Folder" -msgstr "" +msgstr "Katalog" #: winecfg.rc:46 msgid "Links to" @@ -10391,22 +10393,19 @@ #: winecfg.rc:87 msgid "Selected driver: %s" -msgstr "" +msgstr "Wybrany sterownik: %s" #: winecfg.rc:88 -#, fuzzy msgid "(None)" -msgstr "Brak" +msgstr "(Brak)" #: winecfg.rc:89 -#, fuzzy msgid "Audio test failed!" -msgstr "Reset dysku twardego nieudany\n" +msgstr "Nieudany test audio!" #: winecfg.rc:91 -#, fuzzy msgid "(System default)" -msgstr "Ścieżka systemowa" +msgstr "(Domyślne systemowe)" #: winecfg.rc:51 msgid "" @@ -10442,12 +10441,11 @@ #: winecfg.rc:58 msgid "Default Settings" -msgstr "Ustawienia standardowe" +msgstr "Ustawienia domyślne" #: winecfg.rc:59 -#, fuzzy msgid "Wine Programs (*.exe; *.exe.so)" -msgstr "Programy Wine (*.exe,*.exe.so)" +msgstr "Programy Wine (*.exe; *.exe.so)" #: winecfg.rc:60 msgid "Use global settings" @@ -10514,7 +10512,6 @@ "ponownym jego utworzeniu!" #: winecfg.rc:80 -#, fuzzy msgctxt "Drive letter" msgid "Letter" msgstr "Litera" @@ -10694,7 +10691,8 @@ msgstr "Wielkość bufora ekranu musi być większa niż wielkość bufora okna." #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "Każdy znak ma szerokość %ld i wysokość %ld punktów" #: wineconsole.rc:35 @@ -10740,25 +10738,21 @@ "Opcje:\n" #: wineconsole.rc:49 -#, fuzzy msgid "" " --backend={user|curses} Choosing user will spawn a new window, curses " "will\n" " try to setup the current terminal as a Wine " "console.\n" msgstr "" -" --backend={user|curses} Wybór 'user' spowoduje wyświetlenie nowego okna, " -"'curses'\n" -" spróbuje przerobić aktualnie używany terminal na " -"konsolę Wine\n" +" --backend={użytkownik|curses} Wybór użytkownika uruchomi nowe okno, " +"curses spróbuje\n" +" ustawić obecny terminal jako konsola Wine.\n" #: wineconsole.rc:50 -#, fuzzy msgid " The Wine program to launch in the console.\n" -msgstr " Program Wine który należy uruchomić\n" +msgstr " Program Wine do uruchomienia w konsoli.\n" #: wineconsole.rc:51 -#, fuzzy msgid "" "\n" "Example:\n" @@ -10769,7 +10763,7 @@ "\n" "Przykład:\n" " wineconsole cmd\n" -"Uruchamia wiersz poleceń Wine w konsoli Wine\n" +"Uruchamia wiersz poleceń Wine w konsoli Wine.\n" "\n" #: winedbg.rc:35 @@ -10869,9 +10863,8 @@ msgstr "&Sąsiadująco w poziomie\tCtrl+F4" #: winefile.rc:87 -#, fuzzy msgid "&About Wine File Manager" -msgstr "Menadżer plików Wine" +msgstr "Menadżer plików Wine - i&nformacje" #: winefile.rc:93 msgid "Applying font settings" @@ -10922,12 +10915,13 @@ msgstr "Prawa dostępu" #: winefile.rc:120 -msgid "%s of %s free" +#, fuzzy +msgid "%1 of %2 free" msgstr "%s z %s wolne" #: winemine.rc:34 msgid "&Game" -msgstr "" +msgstr "&Gra" #: winemine.rc:35 msgid "&New\tF2" @@ -10935,7 +10929,7 @@ #: winemine.rc:37 msgid "Question &Marks" -msgstr "" +msgstr "Znaki &pytające" #: winemine.rc:39 msgid "&Beginner" @@ -11200,9 +11194,8 @@ msgstr "Dokument tekstowy Unicode" #: wordpad.rc:143 -#, fuzzy msgid "Printer files (*.prn)" -msgstr "Pliki drukarki (*.PRN)" +msgstr "Pliki drukarki (*.prn)" #: wordpad.rc:148 msgid "Left" @@ -11257,13 +11250,11 @@ msgstr "Strony" #: wordpad.rc:172 -#, fuzzy msgctxt "unit: centimeter" msgid "cm" msgstr "cm" #: wordpad.rc:173 -#, fuzzy msgctxt "unit: inch" msgid "in" msgstr "cal" @@ -11273,7 +11264,6 @@ msgstr "cal" #: wordpad.rc:175 -#, fuzzy msgctxt "unit: point" msgid "pt" msgstr "punkt" @@ -11344,7 +11334,8 @@ "Niewłaściwa liczba parametrów - uruchom xcopy /? aby wyświetlić pomoc\n" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +#, fuzzy +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "Nieznany parameter '%s' - uruchom xcopy /? aby wyświetlić pomoc\n" #: xcopy.rc:29 @@ -11352,16 +11343,19 @@ msgstr "Naciśnij aby rozpocząć kopiowanie\n" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +#, fuzzy +msgid "%1!d! file(s) would be copied\n" msgstr "%d plik(ów) zostałoby skopiowanych\n" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +#, fuzzy +msgid "%1!d! file(s) copied\n" msgstr "%d plik(ów) skopiowanych\n" #: xcopy.rc:34 +#, fuzzy msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" @@ -11370,19 +11364,28 @@ "(P - plik, K - katalog)\n" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +#, fuzzy +msgid "%1? (Yes|No)\n" msgstr "%s? (Tak|Nie)\n" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +#, fuzzy +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "Zastąpić %s? (Tak|Nie|Wszystkie)\n" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +#, fuzzy +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" msgstr "Kopiowanie '%s' do '%s' nie powiodło się - kod błędu %d\n" +#: xcopy.rc:38 +#, fuzzy +msgid "Failed to open '%1'\n" +msgstr "Nieudane otwarcie '%s'\n" + #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +#, fuzzy +msgid "Failed during reading of '%1'\n" msgstr "Błąd podczas czytania '%s'\n" #: xcopy.rc:43 @@ -11396,7 +11399,6 @@ msgstr "K" #: xcopy.rc:77 -#, fuzzy msgid "" "XCOPY - Copies source files or directory trees to a destination.\n" "\n" @@ -11431,7 +11433,8 @@ "\t\tthan source.\n" "\n" msgstr "" -"XCOPY - kopiuje pliki lub drzewa katalogów\n" +"XCOPY - Kopiuje pliki lub drzewa katalogów z miejsca źródłowego do " +"docelowego\n" "\n" "Składnia:\n" "XCOPY źródło [cel] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U]\n" @@ -11440,26 +11443,26 @@ "Gdzie:\n" "\n" "[/I] Jeżeli \"cel\" nie istnieje i kopiowane są co najmniej dwa pliki,\n" -"\tzakłada, że \"cel\" powien być katalogiem\n" -"[/S] Kopiuje katalogi i podkatalogi\n" -"[/E] Kopiuje katalogi i podkatalogi, łącznie z pustymi\n" -"[/Q] Nie wypisuje nazw plików podczas kopiowania (tryb cichy)\n" -"[/F] Wypisuje pełne ścieżki źródłowe i docelowe podczas kopiowania\n" -"[/L] Jedynie symuluje operację, pokazując pliki, które byłyby kopiowane\n" -"[/W] Prosi o potwierdzenie przed rozpoczęciem kopiowania\n" -"[/T] Tworzy puste katalogi, ale nie kopiuje plików\n" -"[/Y] Zastępuje pliki bez prośby o potwierdzenie\n" -"[/-Y] Zawsze prosi o potwierdzenie przed zastąpieniem pliku\n" -"[/P] Prosi o potwierdzenie przed skopiowaniem każdego pliku\n" -"[/N] Kopiuje używając krótkich nazw plików\n" -"[/U] Kopiuje tylko pliki, które już istnieją w miejscu docelowym\n" -"[/R] Zastępuje pliki tylko do odczytu\n" -"[/H] Kopiuje również pliki ukryte i systemowe\n" -"[/C] Kontynuuje nawet jeżeli podczas kopiowania występiły błędy\n" -"[/A] Kopiuje tylko pliki z atrybutem archiwalny\n" -"[/M] Kopiuje tylko pliki z atrybutem archiwalny i usuwa ten atrybut\n" -"[/D | /D:m-d-y] Kopiuje tylko nowe pliki lub te zmodifikowane po podanej " +"\tzakłada, że \"cel\" powinien być katalogiem.\n" +"[/S] Kopiuje katalogi i podkatalogi.\n" +"[/E] Kopiuje katalogi i podkatalogi, łącznie z pustymi.\n" +"[/Q] Nie wypisuje nazw plików podczas kopiowania (tryb cichy).\n" +"[/F] Wypisuje pełne ścieżki źródłowe i docelowe podczas kopiowania.\n" +"[/L] Jedynie symuluje operację, pokazując pliki, które byłyby kopiowane.\n" +"[/W] Prosi o potwierdzenie przed rozpoczęciem kopiowania.\n" +"[/T] Tworzy puste katalogi, ale nie kopiuje plików.\n" +"[/Y] Zastępuje pliki bez prośby o potwierdzenie.\n" +"[/-Y] Zawsze prosi o potwierdzenie przed zastąpieniem pliku.\n" +"[/P] Prosi o potwierdzenie przed skopiowaniem każdego pliku.\n" +"[/N] Kopiuje używając krótkich nazw plików.\n" +"[/U] Kopiuje tylko pliki, które już istnieją w miejscu docelowym.\n" +"[/R] Zastępuje pliki tylko do odczytu.\n" +"[/H] Kopiuje również pliki ukryte i systemowe.\n" +"[/C] Kontynuuje nawet jeżeli podczas kopiowania wystąpiły błędy.\n" +"[/A] Kopiuje tylko pliki z atrybutem archiwalny.\n" +"[/M] Kopiuje tylko pliki z atrybutem archiwalny i usuwa ten atrybut.\n" +"[/D | /D:m-d-y] Kopiuje tylko nowe pliki lub te zmodyfikowane po podanej " "dacie.\n" "\t\tJeżeli nie podano żadnej daty, to kopiowane są pliki, które są\n" -"\t\tnowsze niż w katalogu docelowym\n" +"\t\tnowsze niż w katalogu docelowym.\n" "\n" diff -Nru wine1.3-1.3.30/po/pt_BR.po wine1.3-1.3.31/po/pt_BR.po --- wine1.3-1.3.30/po/pt_BR.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/pt_BR.po 2011-10-21 18:38:36.000000000 +0000 @@ -119,7 +119,7 @@ msgstr "sem compressão" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "Cancelando..." #: comctl32.rc:39 @@ -7001,7 +7001,8 @@ msgstr "Lixeira" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld bytes" #: shlwapi.rc:28 @@ -7979,8 +7980,9 @@ "Ainda não implementado\n" "\n" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" +#: attrib.rc:28 +#, fuzzy +msgid "%1: File Not Found\n" msgstr "%s : Arquivo Não Encontrado\n" #: attrib.rc:47 @@ -8632,6 +8634,10 @@ msgid "Syntax error\n" msgstr "Erro de sintaxe\n" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "%s : Arquivo Não Encontrado\n" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "Sem ajuda disponível para %s\n" @@ -8660,7 +8666,7 @@ msgid "Environment variable %s not defined\n" msgstr "Variável de ambiente %s não definida\n" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "Falha ao abrir '%s'\n" @@ -8865,11 +8871,13 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +#, fuzzy +msgid "Stopping dependent service: %1\n" msgstr "Parando o serviço dependente: %s\n" #: net.rc:31 -msgid "Could not stop service %s\n" +#, fuzzy +msgid "Could not stop service %1\n" msgstr "Não foi possível parar o serviço %s\n" #: net.rc:32 @@ -8881,27 +8889,33 @@ msgstr "Não foi possível entregar o handle ao serviço.\n" #: net.rc:34 -msgid "The %s service is starting.\n" +#, fuzzy +msgid "The %1 service is starting.\n" msgstr "O serviço %s está iniciando.\n" #: net.rc:35 -msgid "The %s service was started successfully.\n" +#, fuzzy +msgid "The %1 service was started successfully.\n" msgstr "O serviço %s iniciou com sucesso.\n" #: net.rc:36 -msgid "The %s service failed to start.\n" +#, fuzzy +msgid "The %1 service failed to start.\n" msgstr "O serviço %s falhou ao iniciar.\n" #: net.rc:37 -msgid "The %s service is stopping.\n" +#, fuzzy +msgid "The %1 service is stopping.\n" msgstr "O serviço %s está parando.\n" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +#, fuzzy +msgid "The %1 service was stopped successfully.\n" msgstr "O serviço %s parou com sucesso.\n" #: net.rc:39 -msgid "The %s service failed to stop.\n" +#, fuzzy +msgid "The %1 service failed to stop.\n" msgstr "O serviço %s falhou ao parar.\n" #: net.rc:41 @@ -8919,7 +8933,8 @@ "---------------------------------------------------------------\n" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +#, fuzzy +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "%s %s %s Recursos disponíveis: %lu\n" #: net.rc:44 @@ -11071,7 +11086,8 @@ msgstr "Tamanho do buffer de tela deve ser maior ou igual ao da janela" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "Cada caracter tem %ld pixels de largura por %ld pixels de altura" #: wineconsole.rc:35 @@ -11302,7 +11318,8 @@ msgstr "Segurança" #: winefile.rc:120 -msgid "%s of %s free" +#, fuzzy +msgid "%1 of %2 free" msgstr "%s de %s livre" #: winemine.rc:34 @@ -11726,7 +11743,8 @@ msgstr "Número de parâmetros inválido - Use xcopy /? para ajuda\n" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +#, fuzzy +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "Parâmetro inválido '%s' - Use xcopy /? para ajuda\n" #: xcopy.rc:29 @@ -11734,16 +11752,19 @@ msgstr "Pressione para iniciar a cópia\n" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +#, fuzzy +msgid "%1!d! file(s) would be copied\n" msgstr "%d arquivo(s) seriam copiado(s)\n" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +#, fuzzy +msgid "%1!d! file(s) copied\n" msgstr "%d arquivo(s) copiado(s)\n" #: xcopy.rc:34 +#, fuzzy msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" @@ -11752,19 +11773,28 @@ "(A - Arquivo, D - Directório)\n" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +#, fuzzy +msgid "%1? (Yes|No)\n" msgstr "%s? (Sim|Não)\n" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +#, fuzzy +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "Reescrever %s? (Sim|Não|Tudo)\n" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +#, fuzzy +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" msgstr "Falha ao copiar '%s' para '%s' com r/c %d\n" +#: xcopy.rc:38 +#, fuzzy +msgid "Failed to open '%1'\n" +msgstr "Falha ao abrir '%s'\n" + #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +#, fuzzy +msgid "Failed during reading of '%1'\n" msgstr "Falha a ler '%s'\n" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/pt_PT.po wine1.3-1.3.31/po/pt_PT.po --- wine1.3-1.3.30/po/pt_PT.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/pt_PT.po 2011-10-21 18:38:36.000000000 +0000 @@ -124,7 +124,7 @@ msgstr "sem compressão" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "A cancelar..." #: comctl32.rc:39 @@ -7014,7 +7014,8 @@ msgstr "Reciclagem" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld bytes" #: shlwapi.rc:28 @@ -7986,9 +7987,10 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" -msgstr "" +#: attrib.rc:28 +#, fuzzy +msgid "%1: File Not Found\n" +msgstr "Ficheiro não encontrado\n" #: attrib.rc:47 msgid "" @@ -8645,6 +8647,10 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -8673,7 +8679,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "Falhou ao abrir '%s'\n" @@ -8874,11 +8880,13 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +#, fuzzy +msgid "Stopping dependent service: %1\n" msgstr "A parar o serviço dependente: %s\n" #: net.rc:31 -msgid "Could not stop service %s\n" +#, fuzzy +msgid "Could not stop service %1\n" msgstr "Não foi possível parar o serviço %s\n" #: net.rc:32 @@ -8890,27 +8898,33 @@ msgstr "Não foi possível entregar o handle ao serviço.\n" #: net.rc:34 -msgid "The %s service is starting.\n" +#, fuzzy +msgid "The %1 service is starting.\n" msgstr "O serviço %s está a iniciar.\n" #: net.rc:35 -msgid "The %s service was started successfully.\n" +#, fuzzy +msgid "The %1 service was started successfully.\n" msgstr "O serviço %s foi iniciado com sucesso.\n" #: net.rc:36 -msgid "The %s service failed to start.\n" +#, fuzzy +msgid "The %1 service failed to start.\n" msgstr "O serviço %s falhou ao iniciar.\n" #: net.rc:37 -msgid "The %s service is stopping.\n" +#, fuzzy +msgid "The %1 service is stopping.\n" msgstr "O serviço %s está a parar.\n" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +#, fuzzy +msgid "The %1 service was stopped successfully.\n" msgstr "O serviço %s foi parado com sucesso.\n" #: net.rc:39 -msgid "The %s service failed to stop.\n" +#, fuzzy +msgid "The %1 service failed to stop.\n" msgstr "O serviço %s falhou a parar.\n" #: net.rc:41 @@ -8928,7 +8942,8 @@ "---------------------------------------------------------------\n" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +#, fuzzy +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "%s %s %s Recursos disponíveis: %lu\n" #: net.rc:44 @@ -11087,7 +11102,8 @@ msgstr "O tamanho do 'buffer' do ecrã deve ser maior ou igual ao da janela" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "Cada caracter tem %ld pixels de largura por %ld pixels de altura" #: wineconsole.rc:35 @@ -11319,7 +11335,8 @@ msgstr "Segurança" #: winefile.rc:120 -msgid "%s of %s free" +#, fuzzy +msgid "%1 of %2 free" msgstr "%s de %s livre" #: winemine.rc:34 @@ -11743,7 +11760,8 @@ msgstr "Número de parâmetros inválido - Use xcopy /? para ajuda\n" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +#, fuzzy +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "Parâmetro inválido '%s' - Use xcopy /? para ajuda\n" #: xcopy.rc:29 @@ -11751,16 +11769,19 @@ msgstr "Carregue para iniciar cópia\n" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +#, fuzzy +msgid "%1!d! file(s) would be copied\n" msgstr "%d ficheiro(s) seriam copiado(s)\n" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +#, fuzzy +msgid "%1!d! file(s) copied\n" msgstr "%d ficheiro(s) copiado(s)\n" #: xcopy.rc:34 +#, fuzzy msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" @@ -11769,19 +11790,28 @@ "(F - Ficheiro, D - Directório)\n" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +#, fuzzy +msgid "%1? (Yes|No)\n" msgstr "%s? (Yes|No)\n" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +#, fuzzy +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "Reescrever %s? (Yes|No|All)\n" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +#, fuzzy +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" msgstr "Cópia de '%s' para '%s' falhou com r/c %d\n" +#: xcopy.rc:38 +#, fuzzy +msgid "Failed to open '%1'\n" +msgstr "Falhou ao abrir '%s'\n" + #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +#, fuzzy +msgid "Failed during reading of '%1'\n" msgstr "Falhou a ler '%s'\n" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/rm.po wine1.3-1.3.31/po/rm.po --- wine1.3-1.3.30/po/rm.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/rm.po 2011-10-21 18:38:36.000000000 +0000 @@ -114,7 +114,7 @@ msgstr "" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "" #: comctl32.rc:39 @@ -6632,7 +6632,7 @@ msgstr "" #: shlwapi.rc:27 -msgid "%ld bytes" +msgid "%d bytes" msgstr "" #: shlwapi.rc:28 @@ -7464,8 +7464,8 @@ "\n" msgstr "Na implementa" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" +#: attrib.rc:28 +msgid "%1: File Not Found\n" msgstr "" #: attrib.rc:47 @@ -7939,6 +7939,10 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -7967,7 +7971,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "" @@ -8157,11 +8161,11 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" +msgid "Could not stop service %1\n" msgstr "" #: net.rc:32 @@ -8173,27 +8177,27 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" +msgid "The %1 service is starting.\n" msgstr "" #: net.rc:35 -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "" #: net.rc:36 -msgid "The %s service failed to start.\n" +msgid "The %1 service failed to start.\n" msgstr "" #: net.rc:37 -msgid "The %s service is stopping.\n" +msgid "The %1 service is stopping.\n" msgstr "" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "" #: net.rc:39 -msgid "The %s service failed to stop.\n" +msgid "The %1 service failed to stop.\n" msgstr "" #: net.rc:41 @@ -8208,7 +8212,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -10162,7 +10166,7 @@ msgstr "" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "" #: wineconsole.rc:35 @@ -10376,7 +10380,7 @@ msgstr "" #: winefile.rc:120 -msgid "%s of %s free" +msgid "%1 of %2 free" msgstr "" #: winemine.rc:34 @@ -10799,7 +10803,7 @@ msgstr "" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" #: xcopy.rc:29 @@ -10807,34 +10811,38 @@ msgstr "" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" msgstr "" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" msgstr "" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +msgid "%1? (Yes|No)\n" msgstr "" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" msgstr "" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" msgstr "" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/ro.po wine1.3-1.3.31/po/ro.po --- wine1.3-1.3.30/po/ro.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/ro.po 2011-10-21 18:38:36.000000000 +0000 @@ -118,7 +118,7 @@ msgstr "necomprimat" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "Renunț..." #: comctl32.rc:39 @@ -7249,7 +7249,8 @@ msgstr "Gunoi" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld octeți" #: shlwapi.rc:28 @@ -8228,8 +8229,9 @@ "Încă neimplementat\n" "\n" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" +#: attrib.rc:28 +#, fuzzy +msgid "%1: File Not Found\n" msgstr "%s : fișier negăsit\n" #: attrib.rc:47 @@ -8864,6 +8866,10 @@ msgid "Syntax error\n" msgstr "Eroare de sintaxă\n" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "%s : fișier negăsit\n" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "Nu există ajutor pentru %s\n" @@ -8892,7 +8898,7 @@ msgid "Environment variable %s not defined\n" msgstr "Variabila de mediu %s nu este definită\n" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "Deschiderea „%s” a eșuat\n" @@ -9097,11 +9103,13 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +#, fuzzy +msgid "Stopping dependent service: %1\n" msgstr "Se oprește serviciul dependent: %s\n" #: net.rc:31 -msgid "Could not stop service %s\n" +#, fuzzy +msgid "Could not stop service %1\n" msgstr "Serviciul %s nu a putut fi oprit\n" #: net.rc:32 @@ -9113,27 +9121,33 @@ msgstr "Serviciul nu a putut fi accesat.\n" #: net.rc:34 -msgid "The %s service is starting.\n" +#, fuzzy +msgid "The %1 service is starting.\n" msgstr "Serviciul %s pornește.\n" #: net.rc:35 -msgid "The %s service was started successfully.\n" +#, fuzzy +msgid "The %1 service was started successfully.\n" msgstr "Serviciul %s a fost pornit cu succes.\n" #: net.rc:36 -msgid "The %s service failed to start.\n" +#, fuzzy +msgid "The %1 service failed to start.\n" msgstr "Pornirea serviciului %s a eșuat.\n" #: net.rc:37 -msgid "The %s service is stopping.\n" +#, fuzzy +msgid "The %1 service is stopping.\n" msgstr "Serviciul %s se oprește.\n" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +#, fuzzy +msgid "The %1 service was stopped successfully.\n" msgstr "Serviciul %s a fost oprit cu succes.\n" #: net.rc:39 -msgid "The %s service failed to stop.\n" +#, fuzzy +msgid "The %1 service failed to stop.\n" msgstr "Oprirea serviciului %s a eșuat.\n" #: net.rc:41 @@ -9151,7 +9165,8 @@ "---------------------------------------------------------------\n" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +#, fuzzy +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "%s %s %s Resurse deschise: %lu\n" #: net.rc:44 @@ -11303,7 +11318,8 @@ "cea a ferestrei" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "Fiecare caracter are %ld pixeli lățime și %ld pixeli înălțime" #: wineconsole.rc:35 @@ -11538,7 +11554,8 @@ msgstr "Securitate" #: winefile.rc:120 -msgid "%s of %s free" +#, fuzzy +msgid "%1 of %2 free" msgstr "%s din %s liber" #: winemine.rc:34 @@ -11961,7 +11978,8 @@ msgstr "Număr de parametri nevalid - Utilizați xcopy /? pentru ajutor\n" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +#, fuzzy +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "Parametru nevalid „%s” - Utilizați xcopy /? pentru ajutor\n" #: xcopy.rc:29 @@ -11969,16 +11987,19 @@ msgstr "Apăsați pe pentru a începe copierea\n" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +#, fuzzy +msgid "%1!d! file(s) would be copied\n" msgstr "%d fișier(e) ar fi copiat(e)\n" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +#, fuzzy +msgid "%1!d! file(s) copied\n" msgstr "%d fișier(e) copiat(e)\n" #: xcopy.rc:34 +#, fuzzy msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" @@ -11987,19 +12008,28 @@ "(F - Fișier, D - Director)\n" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +#, fuzzy +msgid "%1? (Yes|No)\n" msgstr "%s? (Da|Nu)\n" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +#, fuzzy +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "Se suprascrie %s? (Da|Nu|Toate)\n" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +#, fuzzy +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" msgstr "Copierea „%s” în „%s” a eșuat cu cod de retur %d\n" +#: xcopy.rc:38 +#, fuzzy +msgid "Failed to open '%1'\n" +msgstr "Deschiderea „%s” a eșuat\n" + #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +#, fuzzy +msgid "Failed during reading of '%1'\n" msgstr "Citirea „%s” a eșuat\n" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/ru.po wine1.3-1.3.31/po/ru.po --- wine1.3-1.3.30/po/ru.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/ru.po 2011-10-21 18:38:36.000000000 +0000 @@ -118,7 +118,7 @@ msgstr "без сжатия" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "Отмена..." #: comctl32.rc:39 @@ -6718,7 +6718,8 @@ msgstr "Корзина" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld байт" #: shlwapi.rc:28 @@ -7664,8 +7665,9 @@ "Ещё не выполнено\n" "\n" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" +#: attrib.rc:28 +#, fuzzy +msgid "%1: File Not Found\n" msgstr "%s : Файл не найден\n" #: attrib.rc:47 @@ -8351,6 +8353,10 @@ msgid "Syntax error\n" msgstr "Синтаксическая ошибка\n" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "%s : Файл не найден\n" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "Справка для %s отсутствует\n" @@ -8379,7 +8385,7 @@ msgid "Environment variable %s not defined\n" msgstr "Переменная окружения %s не определена\n" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "Не удалось открыть '%s'\n" @@ -8592,11 +8598,13 @@ "Команда останавливает службу с заданным именем.\n" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +#, fuzzy +msgid "Stopping dependent service: %1\n" msgstr "Остановка зависимой службы: %s\n" #: net.rc:31 -msgid "Could not stop service %s\n" +#, fuzzy +msgid "Could not stop service %1\n" msgstr "Невозможно остановить службу %s\n" #: net.rc:32 @@ -8608,27 +8616,33 @@ msgstr "Невозможно получить доступ к службе.\n" #: net.rc:34 -msgid "The %s service is starting.\n" +#, fuzzy +msgid "The %1 service is starting.\n" msgstr "Запуск службы %s.\n" #: net.rc:35 -msgid "The %s service was started successfully.\n" +#, fuzzy +msgid "The %1 service was started successfully.\n" msgstr "Служба %s успешно запущена.\n" #: net.rc:36 -msgid "The %s service failed to start.\n" +#, fuzzy +msgid "The %1 service failed to start.\n" msgstr "Ошибка при запуске службы %s.\n" #: net.rc:37 -msgid "The %s service is stopping.\n" +#, fuzzy +msgid "The %1 service is stopping.\n" msgstr "Остановка службы %s.\n" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +#, fuzzy +msgid "The %1 service was stopped successfully.\n" msgstr "Служба %s успешно остановлена.\n" #: net.rc:39 -msgid "The %s service failed to stop.\n" +#, fuzzy +msgid "The %1 service failed to stop.\n" msgstr "Ошибка при остановке службы %s.\n" #: net.rc:41 @@ -8646,7 +8660,8 @@ "---------------------------------------------------------------\n" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +#, fuzzy +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "%s %s %s Открытых ресурсов: %lu\n" #: net.rc:44 @@ -10689,7 +10704,8 @@ msgstr "Размер буфера экрана должен быть не менее буфера окна" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "Каждый символ %ld пикселей в ширину и %ld пикселей в высоту" #: wineconsole.rc:35 @@ -10913,7 +10929,8 @@ msgstr "Безопасность" #: winefile.rc:120 -msgid "%s of %s free" +#, fuzzy +msgid "%1 of %2 free" msgstr "%s из %s свободно" #: winemine.rc:34 @@ -11331,7 +11348,8 @@ "подробного описания.\n" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +#, fuzzy +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" "Недопустимый параметр '%s' - попробуйте 'xcopy /?' для получения подробного\n" "описания.\n" @@ -11341,16 +11359,19 @@ msgstr "Нажмите клавишу , чтобы начать копирование.\n" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +#, fuzzy +msgid "%1!d! file(s) would be copied\n" msgstr "%d файл(ов) было бы скопировано.\n" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +#, fuzzy +msgid "%1!d! file(s) copied\n" msgstr "%d файл(ов) скопировано.\n" #: xcopy.rc:34 +#, fuzzy msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" @@ -11358,19 +11379,28 @@ "(F - Файл, D - Папка)\n" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +#, fuzzy +msgid "%1? (Yes|No)\n" msgstr "%s? (Y - Да|N - Нет)\n" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +#, fuzzy +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "Переписать %s? (Y - Да|N - Нет|А - Все)\n" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +#, fuzzy +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" msgstr "При копировании '%s' в '%s' произошла ошибка: %d\n" +#: xcopy.rc:38 +#, fuzzy +msgid "Failed to open '%1'\n" +msgstr "Не удалось открыть '%s'\n" + #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +#, fuzzy +msgid "Failed during reading of '%1'\n" msgstr "При чтении '%s' произошла ошибка\n" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/sk.po wine1.3-1.3.31/po/sk.po --- wine1.3-1.3.30/po/sk.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/sk.po 2011-10-21 18:38:36.000000000 +0000 @@ -116,7 +116,7 @@ msgstr "" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "" #: comctl32.rc:39 @@ -6712,7 +6712,8 @@ msgstr "" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld bajtov" #: shlwapi.rc:28 @@ -7548,9 +7549,9 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 +#: attrib.rc:28 #, fuzzy -msgid "%s: File Not Found\n" +msgid "%1: File Not Found\n" msgstr "Súbor nenájdený" #: attrib.rc:47 @@ -8023,6 +8024,11 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +#, fuzzy +msgid "%s: File Not Found\n" +msgstr "Súbor nenájdený" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -8051,7 +8057,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "" @@ -8241,12 +8247,13 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" -msgstr "" +#, fuzzy +msgid "Could not stop service %1\n" +msgstr "Nemôžem vytvoriť alebo použiť okno." #: net.rc:32 msgid "Could not get handle to service control manager.\n" @@ -8257,28 +8264,32 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" -msgstr "" +#, fuzzy +msgid "The %1 service is starting.\n" +msgstr "Ovládač zariadenia nie je pripravený." #: net.rc:35 -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "" #: net.rc:36 -msgid "The %s service failed to start.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to start.\n" +msgstr "Veľkosť k dispozícii" #: net.rc:37 -msgid "The %s service is stopping.\n" -msgstr "" +#, fuzzy +msgid "The %1 service is stopping.\n" +msgstr "Dvierka tlačiarne sú otvorené; " #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "" #: net.rc:39 -msgid "The %s service failed to stop.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to stop.\n" +msgstr "Veľkosť k dispozícii" #: net.rc:41 msgid "There are no entries in the list.\n" @@ -8292,7 +8303,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -10256,7 +10267,7 @@ msgstr "" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "" #: wineconsole.rc:35 @@ -10476,7 +10487,7 @@ msgstr "" #: winefile.rc:120 -msgid "%s of %s free" +msgid "%1 of %2 free" msgstr "" #: winemine.rc:34 @@ -10896,7 +10907,7 @@ msgstr "" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" #: xcopy.rc:29 @@ -10904,34 +10915,38 @@ msgstr "" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" msgstr "" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" msgstr "" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +msgid "%1? (Yes|No)\n" msgstr "" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" msgstr "" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" msgstr "" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/sl.po wine1.3-1.3.31/po/sl.po --- wine1.3-1.3.30/po/sl.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/sl.po 2011-10-21 18:38:36.000000000 +0000 @@ -121,7 +121,7 @@ msgstr "nestisnjeno" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "Preklicevanje ..." #: comctl32.rc:39 @@ -6765,7 +6765,8 @@ msgstr "Smeti" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld bajtov" #: shlwapi.rc:28 @@ -7709,9 +7710,9 @@ "Ni še podprto\n" "\n" -#: attrib.rc:28 cmd.rc:302 +#: attrib.rc:28 #, fuzzy -msgid "%s: File Not Found\n" +msgid "%1: File Not Found\n" msgstr "%s : datoteke ni mogoče najti\n" #: attrib.rc:47 @@ -8362,6 +8363,11 @@ msgid "Syntax error\n" msgstr "Skladenjska napaka\n" +#: cmd.rc:302 +#, fuzzy +msgid "%s: File Not Found\n" +msgstr "%s : datoteke ni mogoče najti\n" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "Za ukaz %s pomoč ni na voljo\n" @@ -8390,7 +8396,7 @@ msgid "Environment variable %s not defined\n" msgstr "Okoljska spremenljivka %s ni določena\n" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "Napaka med odpiranjem '%s'\n" @@ -8596,11 +8602,13 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +#, fuzzy +msgid "Stopping dependent service: %1\n" msgstr "Zaustavljanje odvisne storitve: %s\n" #: net.rc:31 -msgid "Could not stop service %s\n" +#, fuzzy +msgid "Could not stop service %1\n" msgstr "Zaustavljanje storitve %s ni uspelo\n" #: net.rc:32 @@ -8612,27 +8620,33 @@ msgstr "Storitve ni mogoče obravnavati.\n" #: net.rc:34 -msgid "The %s service is starting.\n" +#, fuzzy +msgid "The %1 service is starting.\n" msgstr "Zaganjanje storitve %s.\n" #: net.rc:35 -msgid "The %s service was started successfully.\n" +#, fuzzy +msgid "The %1 service was started successfully.\n" msgstr "Zagon storitve %s je uspel.\n" #: net.rc:36 -msgid "The %s service failed to start.\n" +#, fuzzy +msgid "The %1 service failed to start.\n" msgstr "Zagon storitve %s ni uspel.\n" #: net.rc:37 -msgid "The %s service is stopping.\n" +#, fuzzy +msgid "The %1 service is stopping.\n" msgstr "Ustavljanje storitve %s.\n" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +#, fuzzy +msgid "The %1 service was stopped successfully.\n" msgstr "Ustavljanje storitve %s je uspelo.\n" #: net.rc:39 -msgid "The %s service failed to stop.\n" +#, fuzzy +msgid "The %1 service failed to stop.\n" msgstr "Ustavljanje storitve %s ni uspelo.\n" #: net.rc:41 @@ -8650,7 +8664,8 @@ "---------------------------------------------------------------\n" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +#, fuzzy +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "%s %s %s Odprta sredstva: %lu\n" #: net.rc:44 @@ -10731,7 +10746,8 @@ "Velikost zaslonskega medpomnilnika mora biti večja ali enaka okenskemu." #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "Vsak znak je širok %ld točk in visok %ld točk" #: wineconsole.rc:35 @@ -10962,7 +10978,8 @@ msgstr "Varnost" #: winefile.rc:120 -msgid "%s of %s free" +#, fuzzy +msgid "%1 of %2 free" msgstr "Prosto: %s od %s" #: winemine.rc:34 @@ -11385,7 +11402,8 @@ msgstr "Neveljavno število parametrov - za pomoč uporabite xcopy /?\n" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +#, fuzzy +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "Neveljaven parameter '%s' - za pomoč uporabite xcopy /?\n" #: xcopy.rc:29 @@ -11393,16 +11411,19 @@ msgstr "Za začetek kopiranja pritisnite \n" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +#, fuzzy +msgid "%1!d! file(s) would be copied\n" msgstr "%d datotek bo bilo prekopiranih\n" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +#, fuzzy +msgid "%1!d! file(s) copied\n" msgstr "Prekopiranih je bilo %d datotek\n" #: xcopy.rc:34 +#, fuzzy msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" @@ -11411,19 +11432,28 @@ "(F - Datoteka, D - Mapa)\n" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +#, fuzzy +msgid "%1? (Yes|No)\n" msgstr "%s? (Da|Ne)\n" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +#, fuzzy +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "Ali želite %s prepisati? (Da|Ne|Vse)\n" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +#, fuzzy +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" msgstr "Kopiranje '%s' v '%s' je spodletelo (koda napake: %d)\n" +#: xcopy.rc:38 +#, fuzzy +msgid "Failed to open '%1'\n" +msgstr "Napaka med odpiranjem '%s'\n" + #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +#, fuzzy +msgid "Failed during reading of '%1'\n" msgstr "Napaka med branjem '%s'\n" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/sr_RS@cyrillic.po wine1.3-1.3.31/po/sr_RS@cyrillic.po --- wine1.3-1.3.30/po/sr_RS@cyrillic.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/sr_RS@cyrillic.po 2011-10-21 18:38:36.000000000 +0000 @@ -122,7 +122,7 @@ msgstr "несажето" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "Отказивање..." #: comctl32.rc:39 @@ -6990,7 +6990,8 @@ msgstr "Смеће" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld бајтова" #: shlwapi.rc:28 @@ -7827,9 +7828,9 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 +#: attrib.rc:28 #, fuzzy -msgid "%s: File Not Found\n" +msgid "%1: File Not Found\n" msgstr "Датотека није пронађена" #: attrib.rc:47 @@ -8302,6 +8303,11 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +#, fuzzy +msgid "%s: File Not Found\n" +msgstr "Датотека није пронађена" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -8330,7 +8336,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "Отварање „%s“ датотеке није успело\n" @@ -8523,11 +8529,11 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" +msgid "Could not stop service %1\n" msgstr "" #: net.rc:32 @@ -8539,28 +8545,31 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" +msgid "The %1 service is starting.\n" msgstr "" #: net.rc:35 -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "" #: net.rc:36 -msgid "The %s service failed to start.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to start.\n" +msgstr "Неисправни акредитиви" #: net.rc:37 -msgid "The %s service is stopping.\n" -msgstr "" +#, fuzzy +msgid "The %1 service is stopping.\n" +msgstr "Улаз на штампачу је отворен; " #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "" #: net.rc:39 -msgid "The %s service failed to stop.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to stop.\n" +msgstr "Неисправни акредитиви" #: net.rc:41 msgid "There are no entries in the list.\n" @@ -8574,7 +8583,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -10642,7 +10651,7 @@ msgstr "" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "" #: wineconsole.rc:35 @@ -10860,7 +10869,7 @@ msgstr "" #: winefile.rc:120 -msgid "%s of %s free" +msgid "%1 of %2 free" msgstr "" #: winemine.rc:34 @@ -11304,7 +11313,8 @@ msgstr "Неисправан број параметара. Користите xcopy /? за помоћ\n" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +#, fuzzy +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "Неисправан параметар „%s“. Користите xcopy /? за помоћ\n" #: xcopy.rc:29 @@ -11312,16 +11322,19 @@ msgstr "Притисните да започнете умножавање\n" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +#, fuzzy +msgid "%1!d! file(s) would be copied\n" msgstr "%d датотека/е ће бити уможено\n" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +#, fuzzy +msgid "%1!d! file(s) copied\n" msgstr "%d датотека/е је умножено\n" #: xcopy.rc:34 +#, fuzzy msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" @@ -11330,19 +11343,28 @@ "(Д - датотека, Ф - фасцикла)\n" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +#, fuzzy +msgid "%1? (Yes|No)\n" msgstr "%s? (Да|Не)\n" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +#, fuzzy +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "Заменити %s? (Да|Не|Све)\n" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +#, fuzzy +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" msgstr "Умножавање „%s“ у „%s“ није успело са r/c %d\n" +#: xcopy.rc:38 +#, fuzzy +msgid "Failed to open '%1'\n" +msgstr "Отварање „%s“ датотеке није успело\n" + #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +#, fuzzy +msgid "Failed during reading of '%1'\n" msgstr "Читање „%s“ датотеке није успело\n" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/sr_RS@latin.po wine1.3-1.3.31/po/sr_RS@latin.po --- wine1.3-1.3.30/po/sr_RS@latin.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/sr_RS@latin.po 2011-10-21 18:38:36.000000000 +0000 @@ -132,7 +132,7 @@ msgstr "nesažeto" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "Otkazivanje..." #: comctl32.rc:39 @@ -7038,7 +7038,8 @@ msgstr "Smeće" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld bajtova" #: shlwapi.rc:28 @@ -7875,9 +7876,9 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 +#: attrib.rc:28 #, fuzzy -msgid "%s: File Not Found\n" +msgid "%1: File Not Found\n" msgstr "Datoteka nije pronađena" #: attrib.rc:47 @@ -8350,6 +8351,11 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +#, fuzzy +msgid "%s: File Not Found\n" +msgstr "Datoteka nije pronađena" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -8378,7 +8384,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "Otvaranje „%s“ datoteke nije uspelo\n" @@ -8571,11 +8577,11 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" +msgid "Could not stop service %1\n" msgstr "" #: net.rc:32 @@ -8587,28 +8593,31 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" +msgid "The %1 service is starting.\n" msgstr "" #: net.rc:35 -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "" #: net.rc:36 -msgid "The %s service failed to start.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to start.\n" +msgstr "Neispravni akreditivi" #: net.rc:37 -msgid "The %s service is stopping.\n" -msgstr "" +#, fuzzy +msgid "The %1 service is stopping.\n" +msgstr "Ulaz na štampaču je otvoren; " #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "" #: net.rc:39 -msgid "The %s service failed to stop.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to stop.\n" +msgstr "Neispravni akreditivi" #: net.rc:41 msgid "There are no entries in the list.\n" @@ -8622,7 +8631,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -10721,7 +10730,7 @@ msgstr "" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "" #: wineconsole.rc:35 @@ -10941,7 +10950,7 @@ msgstr "" #: winefile.rc:120 -msgid "%s of %s free" +msgid "%1 of %2 free" msgstr "" #: winemine.rc:34 @@ -11384,7 +11393,8 @@ msgstr "Neispravan broj parametara. Koristite xcopy /? za pomoć\n" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +#, fuzzy +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "Neispravan parametar „%s“. Koristite xcopy /? za pomoć\n" #: xcopy.rc:29 @@ -11392,16 +11402,19 @@ msgstr "Pritisnite da započnete umnožavanje\n" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +#, fuzzy +msgid "%1!d! file(s) would be copied\n" msgstr "%d datoteka/e će biti umoženo\n" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +#, fuzzy +msgid "%1!d! file(s) copied\n" msgstr "%d datoteka/e je umnoženo\n" #: xcopy.rc:34 +#, fuzzy msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" @@ -11410,19 +11423,28 @@ "(D - datoteka, F - fascikla)\n" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +#, fuzzy +msgid "%1? (Yes|No)\n" msgstr "%s? (Da|Ne)\n" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +#, fuzzy +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "Zameniti %s? (Da|Ne|Sve)\n" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +#, fuzzy +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" msgstr "Umnožavanje „%s“ u „%s“ nije uspelo sa r/c %d\n" +#: xcopy.rc:38 +#, fuzzy +msgid "Failed to open '%1'\n" +msgstr "Otvaranje „%s“ datoteke nije uspelo\n" + #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +#, fuzzy +msgid "Failed during reading of '%1'\n" msgstr "Čitanje „%s“ datoteke nije uspelo\n" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/sv.po wine1.3-1.3.31/po/sv.po --- wine1.3-1.3.30/po/sv.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/sv.po 2011-10-21 18:38:36.000000000 +0000 @@ -120,7 +120,7 @@ msgstr "okomprimerad" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "Avbryter..." #: comctl32.rc:39 @@ -6736,7 +6736,8 @@ msgstr "Papperskorg" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld byte" #: shlwapi.rc:28 @@ -7681,8 +7682,9 @@ "Ännu ej implementerat\n" "\n" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" +#: attrib.rc:28 +#, fuzzy +msgid "%1: File Not Found\n" msgstr "%s : kunde inte hitta filen\n" #: attrib.rc:47 @@ -8325,6 +8327,10 @@ msgid "Syntax error\n" msgstr "Syntaxfel\n" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "%s : kunde inte hitta filen\n" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "Ingen hjälp tillgänglig för %s\n" @@ -8353,7 +8359,7 @@ msgid "Environment variable %s not defined\n" msgstr "Miljövariabeln %s ej definierad\n" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "Misslyckades med att öppna '%s'\n" @@ -8557,11 +8563,13 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +#, fuzzy +msgid "Stopping dependent service: %1\n" msgstr "Stoppar beroende tjänst: %s\n" #: net.rc:31 -msgid "Could not stop service %s\n" +#, fuzzy +msgid "Could not stop service %1\n" msgstr "Kunde inte stoppa tjänst %s\n" #: net.rc:32 @@ -8573,27 +8581,33 @@ msgstr "Kunde inte få en referens till tjänsten.\n" #: net.rc:34 -msgid "The %s service is starting.\n" +#, fuzzy +msgid "The %1 service is starting.\n" msgstr "Tjänsten %s startar.\n" #: net.rc:35 -msgid "The %s service was started successfully.\n" +#, fuzzy +msgid "The %1 service was started successfully.\n" msgstr "Tjänsten %s startades utan problem.\n" #: net.rc:36 -msgid "The %s service failed to start.\n" +#, fuzzy +msgid "The %1 service failed to start.\n" msgstr "Tjänsten %s kunde inte starta.\n" #: net.rc:37 -msgid "The %s service is stopping.\n" +#, fuzzy +msgid "The %1 service is stopping.\n" msgstr "Tjänsten %s stoppas.\n" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +#, fuzzy +msgid "The %1 service was stopped successfully.\n" msgstr "Tjänsten %s har stoppats.\n" #: net.rc:39 -msgid "The %s service failed to stop.\n" +#, fuzzy +msgid "The %1 service failed to stop.\n" msgstr "Tjänsten %s kunde inte stoppas.\n" #: net.rc:41 @@ -8611,7 +8625,8 @@ "---------------------------------------------------------------\n" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +#, fuzzy +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "%s %s %s Öppna resurser: %lu\n" #: net.rc:44 @@ -10676,7 +10691,8 @@ msgstr "" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "Varje bokstav är %ld bildpunkter bred och %ld bildpunkter hög" #: wineconsole.rc:35 @@ -10906,7 +10922,8 @@ msgstr "Säkerhet" #: winefile.rc:120 -msgid "%s of %s free" +#, fuzzy +msgid "%1 of %2 free" msgstr "%s av %s ledigt" #: winemine.rc:34 @@ -11325,7 +11342,8 @@ msgstr "Ogiltigt antal parametrar - Använd xcopy /? för hjälp\n" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +#, fuzzy +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "Ogiltig parameter '%s' - Använd xcopy /? för hjälp\n" #: xcopy.rc:29 @@ -11333,16 +11351,19 @@ msgstr "Tryck för att börja kopiera\n" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +#, fuzzy +msgid "%1!d! file(s) would be copied\n" msgstr "%d fil(er) skulle kopieras\n" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +#, fuzzy +msgid "%1!d! file(s) copied\n" msgstr "%d fil(er) kopierade\n" #: xcopy.rc:34 +#, fuzzy msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" @@ -11351,19 +11372,28 @@ "(F - Fil, K - Katalog)\n" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +#, fuzzy +msgid "%1? (Yes|No)\n" msgstr "%s? (Ja|Nej)\n" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +#, fuzzy +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "Skriv över %s? (Ja|Nej|Alla)\n" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +#, fuzzy +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" msgstr "Kunde inte kopiera '%s' till '%s'; misslyckades med r/c %d\n" +#: xcopy.rc:38 +#, fuzzy +msgid "Failed to open '%1'\n" +msgstr "Misslyckades med att öppna '%s'\n" + #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +#, fuzzy +msgid "Failed during reading of '%1'\n" msgstr "Kunde inte läsa '%s'\n" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/te.po wine1.3-1.3.31/po/te.po --- wine1.3-1.3.30/po/te.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/te.po 2011-10-21 18:38:36.000000000 +0000 @@ -113,7 +113,7 @@ msgstr "" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "" #: comctl32.rc:39 @@ -6600,7 +6600,7 @@ msgstr "" #: shlwapi.rc:27 -msgid "%ld bytes" +msgid "%d bytes" msgstr "" #: shlwapi.rc:28 @@ -7431,8 +7431,8 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" +#: attrib.rc:28 +msgid "%1: File Not Found\n" msgstr "" #: attrib.rc:47 @@ -7905,6 +7905,10 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -7933,7 +7937,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "" @@ -8122,11 +8126,11 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" +msgid "Could not stop service %1\n" msgstr "" #: net.rc:32 @@ -8138,27 +8142,27 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" +msgid "The %1 service is starting.\n" msgstr "" #: net.rc:35 -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "" #: net.rc:36 -msgid "The %s service failed to start.\n" +msgid "The %1 service failed to start.\n" msgstr "" #: net.rc:37 -msgid "The %s service is stopping.\n" +msgid "The %1 service is stopping.\n" msgstr "" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "" #: net.rc:39 -msgid "The %s service failed to stop.\n" +msgid "The %1 service failed to stop.\n" msgstr "" #: net.rc:41 @@ -8173,7 +8177,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -10115,7 +10119,7 @@ msgstr "" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "" #: wineconsole.rc:35 @@ -10328,7 +10332,7 @@ msgstr "" #: winefile.rc:120 -msgid "%s of %s free" +msgid "%1 of %2 free" msgstr "" #: winemine.rc:34 @@ -10743,7 +10747,7 @@ msgstr "" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" #: xcopy.rc:29 @@ -10751,34 +10755,38 @@ msgstr "" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" msgstr "" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" msgstr "" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +msgid "%1? (Yes|No)\n" msgstr "" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" msgstr "" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" msgstr "" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/th.po wine1.3-1.3.31/po/th.po --- wine1.3-1.3.30/po/th.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/th.po 2011-10-21 18:38:36.000000000 +0000 @@ -113,7 +113,7 @@ msgstr "" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "" #: comctl32.rc:39 @@ -6702,7 +6702,7 @@ msgstr "" #: shlwapi.rc:27 -msgid "%ld bytes" +msgid "%d bytes" msgstr "" #: shlwapi.rc:28 @@ -7534,9 +7534,9 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 +#: attrib.rc:28 #, fuzzy -msgid "%s: File Not Found\n" +msgid "%1: File Not Found\n" msgstr "ไม่พบแฟ้ม" #: attrib.rc:47 @@ -8014,6 +8014,11 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +#, fuzzy +msgid "%s: File Not Found\n" +msgstr "ไม่พบแฟ้ม" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -8042,7 +8047,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "" @@ -8232,11 +8237,11 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" +msgid "Could not stop service %1\n" msgstr "" #: net.rc:32 @@ -8248,28 +8253,30 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" +msgid "The %1 service is starting.\n" msgstr "" #: net.rc:35 -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "" #: net.rc:36 -msgid "The %s service failed to start.\n" +msgid "The %1 service failed to start.\n" msgstr "" #: net.rc:37 -msgid "The %s service is stopping.\n" -msgstr "" +#, fuzzy +msgid "The %1 service is stopping.\n" +msgstr "ประตูเครื่องพิมพ์เปิด; " #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "" #: net.rc:39 -msgid "The %s service failed to stop.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to stop.\n" +msgstr "ประตูเครื่องพิมพ์เปิด; " #: net.rc:41 msgid "There are no entries in the list.\n" @@ -8283,7 +8290,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -10260,7 +10267,7 @@ msgstr "" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "" #: wineconsole.rc:35 @@ -10476,7 +10483,7 @@ msgstr "" #: winefile.rc:120 -msgid "%s of %s free" +msgid "%1 of %2 free" msgstr "" #: winemine.rc:34 @@ -10905,7 +10912,7 @@ msgstr "" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" #: xcopy.rc:29 @@ -10913,34 +10920,38 @@ msgstr "" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" msgstr "" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" msgstr "" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +msgid "%1? (Yes|No)\n" msgstr "" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" msgstr "" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" msgstr "" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/tr.po wine1.3-1.3.31/po/tr.po --- wine1.3-1.3.30/po/tr.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/tr.po 2011-10-21 18:38:36.000000000 +0000 @@ -122,8 +122,8 @@ msgstr "sıkıştırılmamış" #: browseui.rc:25 -msgid "Cancelling..." -msgstr "" +msgid "Canceling..." +msgstr "Kuruluyor..." #: comctl32.rc:39 msgid "Separator" @@ -7011,7 +7011,7 @@ msgstr "Çöp" #: shlwapi.rc:27 -msgid "%ld bytes" +msgid "%d bytes" msgstr "" #: shlwapi.rc:28 @@ -7960,9 +7960,10 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" -msgstr "" +#: attrib.rc:28 +#, fuzzy +msgid "%1: File Not Found\n" +msgstr "Dosya bulunamadı" #: attrib.rc:47 msgid "" @@ -8609,6 +8610,10 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -8637,7 +8642,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "" @@ -8829,12 +8834,13 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" -msgstr "" +#, fuzzy +msgid "Could not stop service %1\n" +msgstr "Pencere oluşturulamıyor veya kullanılamıyor." #: net.rc:32 msgid "Could not get handle to service control manager.\n" @@ -8845,28 +8851,32 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" -msgstr "" +#, fuzzy +msgid "The %1 service is starting.\n" +msgstr "Aygıt sürücüsü hazır değil." #: net.rc:35 -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "" #: net.rc:36 -msgid "The %s service failed to start.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to start.\n" +msgstr "Geçersiz Belgeler" #: net.rc:37 -msgid "The %s service is stopping.\n" -msgstr "" +#, fuzzy +msgid "The %1 service is stopping.\n" +msgstr "Yazıcı kapısı açık; " #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "" #: net.rc:39 -msgid "The %s service failed to stop.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to stop.\n" +msgstr "Geçersiz Belgeler" #: net.rc:41 msgid "There are no entries in the list.\n" @@ -8880,7 +8890,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -10993,7 +11003,8 @@ msgstr "Ekran tamponu en az pencereninki kadar büyük olmalıdır" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "Her karakter %ld piksel genişliğinde ve %ld piksel yüksekliğinde" #: wineconsole.rc:35 @@ -11206,7 +11217,8 @@ msgstr "Güvenlik" #: winefile.rc:120 -msgid "%s of %s free" +#, fuzzy +msgid "%1 of %2 free" msgstr "%s / %s boş" #: winemine.rc:34 @@ -11640,7 +11652,7 @@ msgstr "" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" #: xcopy.rc:29 @@ -11648,34 +11660,38 @@ msgstr "" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" msgstr "" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" msgstr "" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +msgid "%1? (Yes|No)\n" msgstr "" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" msgstr "" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" msgstr "" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/uk.po wine1.3-1.3.31/po/uk.po --- wine1.3-1.3.30/po/uk.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/uk.po 2011-10-21 18:38:36.000000000 +0000 @@ -117,7 +117,7 @@ msgstr "без стиснення" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "Скасування..." #: comctl32.rc:39 @@ -6734,7 +6734,8 @@ msgstr "Кошик" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld байт" #: shlwapi.rc:28 @@ -7682,8 +7683,9 @@ "Ще не реалізовано\n" "\n" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" +#: attrib.rc:28 +#, fuzzy +msgid "%1: File Not Found\n" msgstr "%s : Файл не знайдено\n" #: attrib.rc:47 @@ -8319,6 +8321,10 @@ msgid "Syntax error\n" msgstr "Синтаксична помилка\n" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "%s : Файл не знайдено\n" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "Немає довідки для %s\n" @@ -8347,7 +8353,7 @@ msgid "Environment variable %s not defined\n" msgstr "Змінна оточення %s не визначена\n" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "Не вдалось відкрити '%s'\n" @@ -8553,11 +8559,13 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +#, fuzzy +msgid "Stopping dependent service: %1\n" msgstr "Зупинка залежної служби: %s\n" #: net.rc:31 -msgid "Could not stop service %s\n" +#, fuzzy +msgid "Could not stop service %1\n" msgstr "Неможливо зупинити службу %s\n" #: net.rc:32 @@ -8569,27 +8577,33 @@ msgstr "Неможливо отримати доступ до служби.\n" #: net.rc:34 -msgid "The %s service is starting.\n" +#, fuzzy +msgid "The %1 service is starting.\n" msgstr "Запуск служби %s .\n" #: net.rc:35 -msgid "The %s service was started successfully.\n" +#, fuzzy +msgid "The %1 service was started successfully.\n" msgstr "Служба %s успішно запущена.\n" #: net.rc:36 -msgid "The %s service failed to start.\n" +#, fuzzy +msgid "The %1 service failed to start.\n" msgstr "Помилка запуску служби %s .\n" #: net.rc:37 -msgid "The %s service is stopping.\n" +#, fuzzy +msgid "The %1 service is stopping.\n" msgstr "Зупинка служби %s .\n" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +#, fuzzy +msgid "The %1 service was stopped successfully.\n" msgstr "Служба %s успішно зупинена.\n" #: net.rc:39 -msgid "The %s service failed to stop.\n" +#, fuzzy +msgid "The %1 service failed to stop.\n" msgstr "Помилка зупинки служби %s .\n" #: net.rc:41 @@ -8607,7 +8621,8 @@ "---------------------------------------------------------------\n" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +#, fuzzy +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "%s %s %s Відкритих ресурсів: %lu\n" #: net.rc:44 @@ -10662,7 +10677,8 @@ msgstr "Розмір буфера екрану повинен бути не менший буфера вікна" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "Кожен символ має %ld пікселів в ширину і %ld пікселів в висоту" #: wineconsole.rc:35 @@ -10889,7 +10905,8 @@ msgstr "Безпека" #: winefile.rc:120 -msgid "%s of %s free" +#, fuzzy +msgid "%1 of %2 free" msgstr "%s з %s вільно" #: winemine.rc:34 @@ -11308,7 +11325,8 @@ msgstr "Невірна кількість параметрів - Введіть xcopy /? для довідки\n" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +#, fuzzy +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "Невірний параметр '%s' - Введіть xcopy /? для довідки\n" #: xcopy.rc:29 @@ -11316,16 +11334,19 @@ msgstr "Натисніть щоб почати копіювання\n" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +#, fuzzy +msgid "%1!d! file(s) would be copied\n" msgstr "%d файл(ів) буде скопійовано\n" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +#, fuzzy +msgid "%1!d! file(s) copied\n" msgstr "%d файл(ів) скопійовано\n" #: xcopy.rc:34 +#, fuzzy msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" @@ -11333,19 +11354,28 @@ "(F - Файл, D - Директорія)\n" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" -msgstr "" +#, fuzzy +msgid "%1? (Yes|No)\n" +msgstr "Переписати %s? (Yes|No|All)\n" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +#, fuzzy +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "Переписати %s? (Yes|No|All)\n" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +#, fuzzy +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" msgstr "Під час копіювання '%s' в '%s' сталась помилка r/c %d\n" +#: xcopy.rc:38 +#, fuzzy +msgid "Failed to open '%1'\n" +msgstr "Не вдалось відкрити '%s'\n" + #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +#, fuzzy +msgid "Failed during reading of '%1'\n" msgstr "Помилка читання '%s'\n" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/wa.po wine1.3-1.3.31/po/wa.po --- wine1.3-1.3.30/po/wa.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/wa.po 2011-10-21 18:38:36.000000000 +0000 @@ -114,7 +114,7 @@ msgstr "" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "" #: comctl32.rc:39 @@ -6659,7 +6659,7 @@ msgstr "" #: shlwapi.rc:27 -msgid "%ld bytes" +msgid "%d bytes" msgstr "" #: shlwapi.rc:28 @@ -7493,9 +7493,9 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 +#: attrib.rc:28 #, fuzzy -msgid "%s: File Not Found\n" +msgid "%1: File Not Found\n" msgstr "'%s' pout nén esse trové." #: attrib.rc:47 @@ -7973,6 +7973,11 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +#, fuzzy +msgid "%s: File Not Found\n" +msgstr "'%s' pout nén esse trové." + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -8001,7 +8006,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "" @@ -8191,11 +8196,11 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" +msgid "Could not stop service %1\n" msgstr "" #: net.rc:32 @@ -8207,27 +8212,27 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" +msgid "The %1 service is starting.\n" msgstr "" #: net.rc:35 -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "" #: net.rc:36 -msgid "The %s service failed to start.\n" +msgid "The %1 service failed to start.\n" msgstr "" #: net.rc:37 -msgid "The %s service is stopping.\n" +msgid "The %1 service is stopping.\n" msgstr "" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "" #: net.rc:39 -msgid "The %s service failed to stop.\n" +msgid "The %1 service failed to stop.\n" msgstr "" #: net.rc:41 @@ -8242,7 +8247,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -10216,7 +10221,7 @@ msgstr "" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "" #: wineconsole.rc:35 @@ -10435,7 +10440,7 @@ msgstr "" #: winefile.rc:120 -msgid "%s of %s free" +msgid "%1 of %2 free" msgstr "" #: winemine.rc:34 @@ -10866,7 +10871,7 @@ msgstr "" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" #: xcopy.rc:29 @@ -10874,34 +10879,38 @@ msgstr "" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" msgstr "" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" msgstr "" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +msgid "%1? (Yes|No)\n" msgstr "" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" msgstr "" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" msgstr "" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/wine.pot wine1.3-1.3.31/po/wine.pot --- wine1.3-1.3.30/po/wine.pot 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/wine.pot 2011-10-21 18:38:36.000000000 +0000 @@ -110,7 +110,7 @@ msgstr "" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "" #: comctl32.rc:39 @@ -6578,7 +6578,7 @@ msgstr "" #: shlwapi.rc:27 -msgid "%ld bytes" +msgid "%d bytes" msgstr "" #: shlwapi.rc:28 @@ -7408,8 +7408,8 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 -msgid "%s: File Not Found\n" +#: attrib.rc:28 +msgid "%1: File Not Found\n" msgstr "" #: attrib.rc:47 @@ -7881,6 +7881,10 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +msgid "%s: File Not Found\n" +msgstr "" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -7909,7 +7913,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "" @@ -8098,11 +8102,11 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" +msgid "Could not stop service %1\n" msgstr "" #: net.rc:32 @@ -8114,27 +8118,27 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" +msgid "The %1 service is starting.\n" msgstr "" #: net.rc:35 -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "" #: net.rc:36 -msgid "The %s service failed to start.\n" +msgid "The %1 service failed to start.\n" msgstr "" #: net.rc:37 -msgid "The %s service is stopping.\n" +msgid "The %1 service is stopping.\n" msgstr "" #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "" #: net.rc:39 -msgid "The %s service failed to stop.\n" +msgid "The %1 service failed to stop.\n" msgstr "" #: net.rc:41 @@ -8149,7 +8153,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -10087,7 +10091,7 @@ msgstr "" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "" #: wineconsole.rc:35 @@ -10295,7 +10299,7 @@ msgstr "" #: winefile.rc:120 -msgid "%s of %s free" +msgid "%1 of %2 free" msgstr "" #: winemine.rc:34 @@ -10708,7 +10712,7 @@ msgstr "" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" #: xcopy.rc:29 @@ -10716,34 +10720,38 @@ msgstr "" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" msgstr "" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" msgstr "" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +msgid "%1? (Yes|No)\n" msgstr "" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" msgstr "" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" msgstr "" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/zh_CN.po wine1.3-1.3.31/po/zh_CN.po --- wine1.3-1.3.30/po/zh_CN.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/zh_CN.po 2011-10-21 18:38:36.000000000 +0000 @@ -115,7 +115,7 @@ msgstr "未压缩" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "正在取消..." #: comctl32.rc:39 @@ -6937,7 +6937,8 @@ msgstr "" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld 字节" #: shlwapi.rc:28 @@ -7777,9 +7778,9 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 +#: attrib.rc:28 #, fuzzy -msgid "%s: File Not Found\n" +msgid "%1: File Not Found\n" msgstr "找不到文件\n" #: attrib.rc:47 @@ -8257,6 +8258,11 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +#, fuzzy +msgid "%s: File Not Found\n" +msgstr "找不到文件\n" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -8285,7 +8291,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "" @@ -8476,12 +8482,13 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" -msgstr "" +#, fuzzy +msgid "Could not stop service %1\n" +msgstr "不能打开文件。" #: net.rc:32 msgid "Could not get handle to service control manager.\n" @@ -8492,28 +8499,31 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" +msgid "The %1 service is starting.\n" msgstr "" #: net.rc:35 -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "" #: net.rc:36 -msgid "The %s service failed to start.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to start.\n" +msgstr "剩余空间" #: net.rc:37 -msgid "The %s service is stopping.\n" -msgstr "" +#, fuzzy +msgid "The %1 service is stopping.\n" +msgstr "打印机盖是打开的; " #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "" #: net.rc:39 -msgid "The %s service failed to stop.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to stop.\n" +msgstr "剩余空间" #: net.rc:41 msgid "There are no entries in the list.\n" @@ -8527,7 +8537,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -10584,7 +10594,8 @@ msgstr "屏幕缓冲区大小必须不小于窗口" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "每个字符都是 %ld 像素宽,%ld 像素高" #: wineconsole.rc:35 @@ -10822,7 +10833,7 @@ msgstr "安全(&S)" #: winefile.rc:120 -msgid "%s of %s free" +msgid "%1 of %2 free" msgstr "" #: winemine.rc:34 @@ -11243,7 +11254,7 @@ msgstr "" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" #: xcopy.rc:29 @@ -11251,34 +11262,38 @@ msgstr "" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" msgstr "" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" msgstr "" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +msgid "%1? (Yes|No)\n" msgstr "" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" msgstr "" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" msgstr "" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/po/zh_TW.po wine1.3-1.3.31/po/zh_TW.po --- wine1.3-1.3.30/po/zh_TW.po 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/po/zh_TW.po 2011-10-21 18:38:36.000000000 +0000 @@ -118,7 +118,7 @@ msgstr "未壓縮" #: browseui.rc:25 -msgid "Cancelling..." +msgid "Canceling..." msgstr "正在取消..." #: comctl32.rc:39 @@ -6969,7 +6969,8 @@ msgstr "" #: shlwapi.rc:27 -msgid "%ld bytes" +#, fuzzy +msgid "%d bytes" msgstr "%ld 字節" #: shlwapi.rc:28 @@ -7818,9 +7819,9 @@ "\n" msgstr "" -#: attrib.rc:28 cmd.rc:302 +#: attrib.rc:28 #, fuzzy -msgid "%s: File Not Found\n" +msgid "%1: File Not Found\n" msgstr "找不到檔案" #: attrib.rc:47 @@ -8298,6 +8299,11 @@ msgid "Syntax error\n" msgstr "" +#: cmd.rc:302 +#, fuzzy +msgid "%s: File Not Found\n" +msgstr "找不到檔案" + #: cmd.rc:303 msgid "No help available for %s\n" msgstr "" @@ -8326,7 +8332,7 @@ msgid "Environment variable %s not defined\n" msgstr "" -#: cmd.rc:310 xcopy.rc:38 +#: cmd.rc:310 msgid "Failed to open '%s'\n" msgstr "" @@ -8517,12 +8523,13 @@ msgstr "" #: net.rc:30 -msgid "Stopping dependent service: %s\n" +msgid "Stopping dependent service: %1\n" msgstr "" #: net.rc:31 -msgid "Could not stop service %s\n" -msgstr "" +#, fuzzy +msgid "Could not stop service %1\n" +msgstr "不能開啟檔案." #: net.rc:32 msgid "Could not get handle to service control manager.\n" @@ -8533,28 +8540,31 @@ msgstr "" #: net.rc:34 -msgid "The %s service is starting.\n" +msgid "The %1 service is starting.\n" msgstr "" #: net.rc:35 -msgid "The %s service was started successfully.\n" +msgid "The %1 service was started successfully.\n" msgstr "" #: net.rc:36 -msgid "The %s service failed to start.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to start.\n" +msgstr "剩餘空間" #: net.rc:37 -msgid "The %s service is stopping.\n" -msgstr "" +#, fuzzy +msgid "The %1 service is stopping.\n" +msgstr "印表機蓋是打開的; " #: net.rc:38 -msgid "The %s service was stopped successfully.\n" +msgid "The %1 service was stopped successfully.\n" msgstr "" #: net.rc:39 -msgid "The %s service failed to stop.\n" -msgstr "" +#, fuzzy +msgid "The %1 service failed to stop.\n" +msgstr "剩餘空間" #: net.rc:41 msgid "There are no entries in the list.\n" @@ -8568,7 +8578,7 @@ msgstr "" #: net.rc:43 -msgid "%s %s %s Open resources: %lu\n" +msgid "%1 %2 %3 Open resources: %4!u!\n" msgstr "" #: net.rc:44 @@ -10644,7 +10654,8 @@ msgstr "螢幕緩存大小必須大於或等於視窗緩存" #: wineconsole.rc:34 -msgid "Each character is %ld pixels wide on %ld pixels high" +#, fuzzy +msgid "Each character is %1!u! pixels wide on %2!u! pixels high" msgstr "每個字都是 %ld 個像素寬,%ld 個像素高" #: wineconsole.rc:35 @@ -10865,7 +10876,7 @@ msgstr "安全(&S)" #: winefile.rc:120 -msgid "%s of %s free" +msgid "%1 of %2 free" msgstr "" #: winemine.rc:34 @@ -11289,7 +11300,7 @@ msgstr "" #: xcopy.rc:28 -msgid "Invalid parameter '%s' - Use xcopy /? for help\n" +msgid "Invalid parameter '%1' - Use xcopy /? for help\n" msgstr "" #: xcopy.rc:29 @@ -11297,34 +11308,38 @@ msgstr "" #: xcopy.rc:30 -msgid "%d file(s) would be copied\n" +msgid "%1!d! file(s) would be copied\n" msgstr "" #: xcopy.rc:31 -msgid "%d file(s) copied\n" +msgid "%1!d! file(s) copied\n" msgstr "" #: xcopy.rc:34 msgid "" -"Is '%s' a filename or directory\n" +"Is '%1' a filename or directory\n" "on the target?\n" "(F - File, D - Directory)\n" msgstr "" #: xcopy.rc:35 -msgid "%s? (Yes|No)\n" +msgid "%1? (Yes|No)\n" msgstr "" #: xcopy.rc:36 -msgid "Overwrite %s? (Yes|No|All)\n" +msgid "Overwrite %1? (Yes|No|All)\n" msgstr "" #: xcopy.rc:37 -msgid "Copying of '%s' to '%s' failed with r/c %d\n" +msgid "Copying of '%1' to '%2' failed with r/c %3!d!\n" +msgstr "" + +#: xcopy.rc:38 +msgid "Failed to open '%1'\n" msgstr "" #: xcopy.rc:39 -msgid "Failed during reading of '%s'\n" +msgid "Failed during reading of '%1'\n" msgstr "" #: xcopy.rc:43 diff -Nru wine1.3-1.3.30/programs/attrib/attrib.c wine1.3-1.3.31/programs/attrib/attrib.c --- wine1.3-1.3.30/programs/attrib/attrib.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/attrib/attrib.c 2011-10-21 18:38:36.000000000 +0000 @@ -45,7 +45,7 @@ * and hence required WriteConsoleW to output it, however if file i/o is * redirected, it needs to be WriteFile'd using OEM (not ANSI) format * ========================================================================= */ -static int ATTRIB_wprintf(const WCHAR *format, ...) { +static int __cdecl ATTRIB_wprintf(const WCHAR *format, ...) { static WCHAR *output_bufW = NULL; static char *output_bufA = NULL; @@ -53,7 +53,7 @@ static BOOL traceOutput = FALSE; #define MAX_WRITECONSOLE_SIZE 65535 - va_list parms; + __ms_va_list parms; DWORD nOut; int len; DWORD res = 0; @@ -71,11 +71,13 @@ return 0; } - va_start(parms, format); - len = vsnprintfW(output_bufW, MAX_WRITECONSOLE_SIZE/sizeof(WCHAR), format, parms); - va_end(parms); - if (len < 0) { - WINE_FIXME("String too long.\n"); + __ms_va_start(parms, format); + SetLastError(NO_ERROR); + len = FormatMessageW(FORMAT_MESSAGE_FROM_STRING, format, 0, 0, output_bufW, + MAX_WRITECONSOLE_SIZE/sizeof(*output_bufW), &parms); + __ms_va_end(parms); + if (len == 0 && GetLastError() != NO_ERROR) { + WINE_FIXME("Could not format string: le=%u, fmt=%s\n", GetLastError(), wine_dbgstr_w(format)); return 0; } @@ -178,7 +180,7 @@ fd.dwFileAttributes |= FILE_ATTRIBUTE_NORMAL; SetFileAttributesW(name, fd.dwFileAttributes); } else { - static const WCHAR fmt[] = {'%','s',' ',' ',' ','%','s','\n','\0'}; + static const WCHAR fmt[] = {'%','1',' ',' ',' ','%','2','\n','\0'}; if (fd.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) { flags[0] = 'H'; } diff -Nru wine1.3-1.3.30/programs/attrib/attrib.rc wine1.3-1.3.31/programs/attrib/attrib.rc --- wine1.3-1.3.30/programs/attrib/attrib.rc 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/attrib/attrib.rc 2011-10-21 18:38:36.000000000 +0000 @@ -25,7 +25,7 @@ STRINGTABLE { STRING_NYI, "Not Yet Implemented\n\n" - STRING_FILENOTFOUND, "%s: File Not Found\n" + STRING_FILENOTFOUND, "%1: File Not Found\n" STRING_HELP, "ATTRIB - Displays or changes file attributes.\n\ \n\ diff -Nru wine1.3-1.3.30/programs/cmd/builtins.c wine1.3-1.3.31/programs/cmd/builtins.c --- wine1.3-1.3.30/programs/cmd/builtins.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/cmd/builtins.c 2011-10-21 18:38:36.000000000 +0000 @@ -1418,7 +1418,8 @@ * Push a directory onto the stack */ -void WCMD_pushd (WCHAR *command) { +void WCMD_pushd (const WCHAR *command) +{ struct env_stack *curdir; WCHAR *thisdir; static const WCHAR parmD[] = {'/','D','\0'}; @@ -1554,8 +1555,8 @@ * Move a file, directory tree or wildcarded set of files. */ -void WCMD_move (void) { - +void WCMD_move (void) +{ int status; WIN32_FIND_DATAW fd; HANDLE hff; @@ -1594,6 +1595,7 @@ WCHAR dest[MAX_PATH]; WCHAR src[MAX_PATH]; DWORD attribs; + BOOL ok = TRUE; WINE_TRACE("Processing file '%s'\n", wine_dbgstr_w(fd.cFileName)); @@ -1617,60 +1619,50 @@ WINE_TRACE("Source '%s'\n", wine_dbgstr_w(src)); WINE_TRACE("Dest '%s'\n", wine_dbgstr_w(dest)); - /* Check if file is read only, otherwise move it */ - attribs = GetFileAttributesW(src); - if ((attribs != INVALID_FILE_ATTRIBUTES) && - (attribs & FILE_ATTRIBUTE_READONLY)) { - SetLastError(ERROR_ACCESS_DENIED); - status = 0; - } else { - BOOL ok = TRUE; - - /* If destination exists, prompt unless /Y supplied */ - if (GetFileAttributesW(dest) != INVALID_FILE_ATTRIBUTES) { - BOOL force = FALSE; - WCHAR copycmd[MAXSTRING]; - int len; - - /* /-Y has the highest priority, then /Y and finally the COPYCMD env. variable */ - if (strstrW (quals, parmNoY)) - force = FALSE; - else if (strstrW (quals, parmY)) - force = TRUE; - else { - static const WCHAR copyCmdW[] = {'C','O','P','Y','C','M','D','\0'}; - len = GetEnvironmentVariableW(copyCmdW, copycmd, sizeof(copycmd)/sizeof(WCHAR)); - force = (len && len < (sizeof(copycmd)/sizeof(WCHAR)) - && ! lstrcmpiW (copycmd, parmY)); - } - - /* Prompt if overwriting */ - if (!force) { - WCHAR question[MAXSTRING]; - WCHAR yesChar[10]; - - strcpyW(yesChar, WCMD_LoadMessage(WCMD_YES)); - - /* Ask for confirmation */ - wsprintfW(question, WCMD_LoadMessage(WCMD_OVERWRITE), dest); - ok = WCMD_ask_confirm(question, FALSE, NULL); + /* If destination exists, prompt unless /Y supplied */ + if (GetFileAttributesW(dest) != INVALID_FILE_ATTRIBUTES) { + BOOL force = FALSE; + WCHAR copycmd[MAXSTRING]; + int len; + + /* /-Y has the highest priority, then /Y and finally the COPYCMD env. variable */ + if (strstrW (quals, parmNoY)) + force = FALSE; + else if (strstrW (quals, parmY)) + force = TRUE; + else { + static const WCHAR copyCmdW[] = {'C','O','P','Y','C','M','D','\0'}; + len = GetEnvironmentVariableW(copyCmdW, copycmd, sizeof(copycmd)/sizeof(WCHAR)); + force = (len && len < (sizeof(copycmd)/sizeof(WCHAR)) + && ! lstrcmpiW (copycmd, parmY)); + } - /* So delete the destination prior to the move */ - if (ok) { - if (!DeleteFileW(dest)) { - WCMD_print_error (); - errorlevel = 1; - ok = FALSE; - } + /* Prompt if overwriting */ + if (!force) { + WCHAR question[MAXSTRING]; + WCHAR yesChar[10]; + + strcpyW(yesChar, WCMD_LoadMessage(WCMD_YES)); + + /* Ask for confirmation */ + wsprintfW(question, WCMD_LoadMessage(WCMD_OVERWRITE), dest); + ok = WCMD_ask_confirm(question, FALSE, NULL); + + /* So delete the destination prior to the move */ + if (ok) { + if (!DeleteFileW(dest)) { + WCMD_print_error (); + errorlevel = 1; + ok = FALSE; } } } + } - if (ok) { - status = MoveFileW(src, dest); - } else { - status = 1; /* Anything other than 0 to prevent error msg below */ - } + if (ok) { + status = MoveFileW(src, dest); + } else { + status = 1; /* Anything other than 0 to prevent error msg below */ } if (!status) { @@ -1777,8 +1769,8 @@ * Rename a file. */ -void WCMD_rename (void) { - +void WCMD_rename (void) +{ int status; HANDLE hff; WIN32_FIND_DATAW fd; @@ -1788,7 +1780,6 @@ WCHAR dir[MAX_PATH]; WCHAR fname[MAX_PATH]; WCHAR ext[MAX_PATH]; - DWORD attribs; errorlevel = 0; @@ -1862,15 +1853,7 @@ WINE_TRACE("Source '%s'\n", wine_dbgstr_w(src)); WINE_TRACE("Dest '%s'\n", wine_dbgstr_w(dest)); - /* Check if file is read only, otherwise move it */ - attribs = GetFileAttributesW(src); - if ((attribs != INVALID_FILE_ATTRIBUTES) && - (attribs & FILE_ATTRIBUTE_READONLY)) { - SetLastError(ERROR_ACCESS_DENIED); - status = 0; - } else { - status = MoveFileW(src, dest); - } + status = MoveFileW(src, dest); if (!status) { WCMD_print_error (); @@ -2247,7 +2230,7 @@ s += 2; while (*s && (*s==' ' || *s=='\t')) s++; if (*s=='\"') - WCMD_opt_s_strip_quotes(s); + WCMD_strip_quotes(s); /* If no parameter, or no '=' sign, return an error */ if (!(*s) || ((p = strchrW (s, '=')) == NULL )) { @@ -2273,7 +2256,7 @@ DWORD gle; if (*s=='\"') - WCMD_opt_s_strip_quotes(s); + WCMD_strip_quotes(s); p = strchrW (s, '='); if (p == NULL) { env = GetEnvironmentStringsW(); diff -Nru wine1.3-1.3.30/programs/cmd/tests/test_builtins.cmd wine1.3-1.3.31/programs/cmd/tests/test_builtins.cmd --- wine1.3-1.3.30/programs/cmd/tests/test_builtins.cmd 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/cmd/tests/test_builtins.cmd 2011-10-21 18:38:36.000000000 +0000 @@ -899,6 +899,32 @@ ren foo foo mkdir baz ren foo baz\abc +echo ... rename read-only files ... +echo > file1 +attrib +r file1 +ren file1 file2 +if not exist file1 ( + if exist file2 ( + echo read-only file renamed + ) +) else ( + echo read-only file not renamed! +) +echo ... rename directories ... +mkdir rep1 +ren rep1 rep2 +if not exist rep1 ( + if exist rep2 ( + echo dir renamed + ) +) +attrib +r rep2 +ren rep2 rep1 +if not exist rep2 ( + if exist rep1 ( + echo read-only dir renamed + ) +) echo ... rename in other directory ... if not exist baz\abc ( echo rename impossible in other directory @@ -909,6 +935,87 @@ ) cd .. & rd /s/q foobar +echo ------------ Testing move ------------ +mkdir foobar & cd foobar +echo ... file move ... +echo >foo +move foo bar > nul 2>&1 +if not exist foo ( + if exist bar ( + echo file move succeeded + ) +) +echo bar>bar +echo baz> baz +move /Y bar baz > nul 2>&1 +if not exist bar ( + if exist baz ( + echo file move with overwrite succeeded + ) +) else ( + echo file overwrite impossible! + del bar +) +type baz + +attrib +r baz +move baz bazro > nul 2>&1 +if not exist baz ( + if exist bazro ( + echo read-only files are moveable + move bazro baz > nul 2>&1 + ) +) else ( + echo read-only file not moved! +) +attrib -r baz +mkdir rep +move baz rep > nul 2>&1 +if not exist baz ( + if exist rep\baz ( + echo file moved in subdirectory + ) +) +call :setError 0 +move rep\baz . > nul 2>&1 +move /Y baz baz > nul 2>&1 +if errorlevel 1 ( + echo moving a file to itself should be a no-op! +) else ( + echo moving a file to itself is a no-op +) +echo ErrorLevel: %ErrorLevel% +call :setError 0 +del baz +echo ... directory move ... +mkdir foo\bar +mkdir baz +echo baz2>baz\baz2 +move baz foo\bar > nul 2>&1 +if not exist baz ( + if exist foo\bar\baz\baz2 ( + echo simple directory move succeeded + ) +) +call :setError 0 +mkdir baz +move baz baz > nul 2>&1 +echo moving a directory to itself gives error; errlevel %ErrorLevel% +echo ...... dir in dir move ...... +rd /s/q foo +mkdir foo bar +echo foo2>foo\foo2 +echo bar2>bar\bar2 +move foo bar > nul 2>&1 +if not exist foo ( + if exist bar ( + dir /b /ad bar + dir /b /a-d bar + dir /b bar\foo + ) +) +cd .. & rd /s/q foobar + echo ------------ Testing mkdir ------------ call :setError 0 echo ... md and mkdir are synonymous ... diff -Nru wine1.3-1.3.30/programs/cmd/tests/test_builtins.cmd.exp wine1.3-1.3.31/programs/cmd/tests/test_builtins.cmd.exp --- wine1.3-1.3.30/programs/cmd/tests/test_builtins.cmd.exp 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/cmd/tests/test_builtins.cmd.exp 2011-10-21 18:38:36.000000000 +0000 @@ -601,9 +601,30 @@ ... name collision ... foo bar +... rename read-only files ... +read-only file renamed +... rename directories ... +dir renamed +read-only dir renamed ... rename in other directory ... @todo_wine@rename impossible in other directory @todo_wine@original file still present +------------ Testing move ------------ +... file move ... +file move succeeded +@todo_wine@file move with overwrite succeeded@or_broken@file overwrite impossible! +@todo_wine@bar@or_broken@baz +read-only files are moveable +file moved in subdirectory +@todo_wine@moving a file to itself is a no-op@or_broken@moving a file to itself should be a no-op! +@todo_wine@ErrorLevel: 0@or_broken@ErrorLevel: 1 +... directory move ... +simple directory move succeeded +moving a directory to itself gives error; errlevel 1 +...... dir in dir move ...... +foo +bar2 +foo2 ------------ Testing mkdir ------------ ... md and mkdir are synonymous ... 0 diff -Nru wine1.3-1.3.30/programs/cmd/wcmd.h wine1.3-1.3.31/programs/cmd/wcmd.h --- wine1.3-1.3.30/programs/cmd/wcmd.h 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/cmd/wcmd.h 2011-10-21 18:38:36.000000000 +0000 @@ -79,7 +79,7 @@ void WCMD_pause (void); void WCMD_popd (void); void WCMD_print_error (void); -void WCMD_pushd (WCHAR *); +void WCMD_pushd (const WCHAR *command); void WCMD_remove_dir (WCHAR *command); void WCMD_rename (void); void WCMD_run_program (WCHAR *command, int called); @@ -108,7 +108,7 @@ void WCMD_HandleTildaModifiers(WCHAR **start, const WCHAR *forVariable, const WCHAR *forValue, BOOL justFors); void WCMD_splitpath(const WCHAR* path, WCHAR* drv, WCHAR* dir, WCHAR* name, WCHAR* ext); -void WCMD_opt_s_strip_quotes(WCHAR *cmd); +void WCMD_strip_quotes(WCHAR *cmd); WCHAR *WCMD_LoadMessage(UINT id); WCHAR *WCMD_strdupW(const WCHAR *input); void WCMD_strsubstW(WCHAR *start, const WCHAR* next, const WCHAR* insert, int len); diff -Nru wine1.3-1.3.30/programs/cmd/wcmdmain.c wine1.3-1.3.31/programs/cmd/wcmdmain.c --- wine1.3-1.3.30/programs/cmd/wcmdmain.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/cmd/wcmdmain.c 2011-10-21 18:38:36.000000000 +0000 @@ -506,11 +506,11 @@ } /************************************************************************* - * WCMD_opt_s_strip_quotes + * WCMD_strip_quotes * * Remove first and last quote WCHARacters, preserving all other text */ -void WCMD_opt_s_strip_quotes(WCHAR *cmd) { +void WCMD_strip_quotes(WCHAR *cmd) { WCHAR *src = cmd + 1, *dest = cmd, *lastq = NULL; while((*dest=*src) != '\0') { if (*src=='\"') @@ -1204,7 +1204,7 @@ if ((opt_c || opt_k) && !opt_s && !status && GetLastError()==ERROR_FILE_NOT_FOUND && command[0]=='\"') { /* strip first and last quote WCHARacters and try again */ - WCMD_opt_s_strip_quotes(command); + WCMD_strip_quotes(command); opt_s=1; WCMD_run_program(command, called); return; @@ -2478,7 +2478,7 @@ /* strip first and last quote characters if opt_s; check for invalid * executable is done later */ if (opt_s && *cmd=='\"') - WCMD_opt_s_strip_quotes(cmd); + WCMD_strip_quotes(cmd); } if (opt_c) { diff -Nru wine1.3-1.3.30/programs/iexplore/main.c wine1.3-1.3.31/programs/iexplore/main.c --- wine1.3-1.3.30/programs/iexplore/main.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/iexplore/main.c 2011-10-21 18:38:36.000000000 +0000 @@ -25,7 +25,7 @@ #include "wine/unicode.h" #include "wine/debug.h" -extern DWORD WINAPI IEWinMain(LPSTR, int); +extern DWORD WINAPI IEWinMain(const WCHAR*, int); static BOOL check_native_ie(void) { @@ -68,13 +68,15 @@ return FAILED(hres); } -int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE prev, LPSTR cmdline, int show) +int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE prev, WCHAR *cmdline, int show) { + static const WCHAR regserverW[] = {'r','e','g','s','e','r','v','e','r',0}; + static const WCHAR unregserverW[] = {'u','n','r','e','g','s','e','r','v','e','r',0}; if(*cmdline == '-' || *cmdline == '/') { - if(!strcasecmp(cmdline+1, "regserver")) + if(!strcmpiW(cmdline+1, regserverW)) return register_iexplore(TRUE); - if(!strcasecmp(cmdline+1, "unregserver")) + if(!strcmpiW(cmdline+1, unregserverW)) return register_iexplore(FALSE); } diff -Nru wine1.3-1.3.30/programs/iexplore/Makefile.in wine1.3-1.3.31/programs/iexplore/Makefile.in --- wine1.3-1.3.30/programs/iexplore/Makefile.in 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/iexplore/Makefile.in 2011-10-21 18:38:36.000000000 +0000 @@ -1,6 +1,6 @@ EXTRADEFS = -DWINE_NO_UNICODE_MACROS MODULE = iexplore.exe -APPMODE = -mwindows +APPMODE = -mwindows -municode IMPORTS = ieframe DELAYIMPORTS = advpack version diff -Nru wine1.3-1.3.30/programs/net/net.c wine1.3-1.3.31/programs/net/net.c --- wine1.3-1.3.30/programs/net/net.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/net/net.c 2011-10-21 18:38:36.000000000 +0000 @@ -55,38 +55,40 @@ return count; } -static int output_vprintf(const WCHAR* fmt, va_list va_args) +static int output_vprintf(const WCHAR* fmt, __ms_va_list va_args) { WCHAR str[8192]; int len; - len = vsnprintfW(str, sizeof(str)/sizeof(*str), fmt, va_args); - if (len < 0) - WINE_FIXME("String too long.\n"); + SetLastError(NO_ERROR); + len = FormatMessageW(FORMAT_MESSAGE_FROM_STRING, fmt, 0, 0, str, + sizeof(str)/sizeof(*str), &va_args); + if (len == 0 && GetLastError() != NO_ERROR) + WINE_FIXME("Could not format string: le=%u, fmt=%s\n", GetLastError(), wine_dbgstr_w(fmt)); else output_write(str, len); return 0; } -static int output_printf(const WCHAR* fmt, ...) +static int __cdecl output_printf(const WCHAR* fmt, ...) { - va_list arguments; + __ms_va_list arguments; - va_start(arguments, fmt); + __ms_va_start(arguments, fmt); output_vprintf(fmt, arguments); - va_end(arguments); + __ms_va_end(arguments); return 0; } -static int output_string(int msg, ...) +static int __cdecl output_string(int msg, ...) { WCHAR fmt[8192]; - va_list arguments; + __ms_va_list arguments; LoadStringW(GetModuleHandleW(NULL), msg, fmt, sizeof(fmt)/sizeof(fmt[0])); - va_start(arguments, msg); + __ms_va_start(arguments, msg); output_vprintf(fmt, arguments); - va_end(arguments); + __ms_va_end(arguments); return 0; } @@ -156,7 +158,7 @@ static BOOL net_enum_services(void) { - static const WCHAR runningW[]={' ',' ',' ',' ','%','s','\n',0}; + static const WCHAR runningW[]={' ',' ',' ',' ','%','1','\n',0}; SC_HANDLE SCManager; LPENUM_SERVICE_STATUS_PROCESSW services; DWORD size, i, count, resume; diff -Nru wine1.3-1.3.30/programs/net/net.rc wine1.3-1.3.31/programs/net/net.rc --- wine1.3-1.3.30/programs/net/net.rc 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/net/net.rc 2011-10-21 18:38:36.000000000 +0000 @@ -27,20 +27,20 @@ STRING_USAGE, "The syntax of this command is:\n\nNET command [arguments]\n -or-\nNET command /HELP\n\nWhere 'command' is one of HELP, START, STOP or USE.\n" STRING_START_USAGE, "The syntax of this command is:\n\nNET START [service]\n\nDisplays the list of running services if 'service' is omitted. Otherwise 'service' is the name of the service to start.\n" STRING_STOP_USAGE, "The syntax of this command is:\n\nNET STOP service\n\nWhere 'service' is the name of the service to stop.\n" - STRING_STOP_DEP, "Stopping dependent service: %s\n" - STRING_CANT_STOP, "Could not stop service %s\n" + STRING_STOP_DEP, "Stopping dependent service: %1\n" + STRING_CANT_STOP, "Could not stop service %1\n" STRING_NO_SCM, "Could not get handle to service control manager.\n" STRING_NO_SVCHANDLE, "Could not get handle to service.\n" - STRING_START_SVC, "The %s service is starting.\n" - STRING_START_SVC_SUCCESS, "The %s service was started successfully.\n" - STRING_START_SVC_FAIL, "The %s service failed to start.\n" - STRING_STOP_SVC, "The %s service is stopping.\n" - STRING_STOP_SVC_SUCCESS, "The %s service was stopped successfully.\n" - STRING_STOP_SVC_FAIL, "The %s service failed to stop.\n" + STRING_START_SVC, "The %1 service is starting.\n" + STRING_START_SVC_SUCCESS, "The %1 service was started successfully.\n" + STRING_START_SVC_FAIL, "The %1 service failed to start.\n" + STRING_STOP_SVC, "The %1 service is stopping.\n" + STRING_STOP_SVC_SUCCESS, "The %1 service was stopped successfully.\n" + STRING_STOP_SVC_FAIL, "The %1 service failed to stop.\n" STRING_RUNNING_HEADER, "The following services are running:\n" STRING_NO_ENTRIES, "There are no entries in the list.\n" STRING_USE_HEADER, "\nStatus Local Remote\n---------------------------------------------------------------\n" - STRING_USE_ENTRY, "%s %s %s Open resources: %lu\n" + STRING_USE_ENTRY, "%1 %2 %3 Open resources: %4!u!\n" STRING_OK, "OK" STRING_PAUSED, "Paused" STRING_SESSLOST, "Disconnected" diff -Nru wine1.3-1.3.30/programs/winecfg/appdefaults.c wine1.3-1.3.31/programs/winecfg/appdefaults.c --- wine1.3-1.3.30/programs/winecfg/appdefaults.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/winecfg/appdefaults.c 2011-10-21 18:38:36.000000000 +0000 @@ -51,7 +51,7 @@ { { "win2008r2", "Windows 2008 R2", 6, 1, 0x1DB1,VER_PLATFORM_WIN32_NT, "Service Pack 1", 1, 0, "ServerNT"}, { "win7", "Windows 7", 6, 1, 0x1DB1,VER_PLATFORM_WIN32_NT, "Service Pack 1", 1, 0, "WinNT"}, - { "win2008", "Windows 2008", 6, 0, 0x1771,VER_PLATFORM_WIN32_NT, "Service Pack 1", 0, 0, "ServerNT"}, + { "win2008", "Windows 2008", 6, 0, 0x1772,VER_PLATFORM_WIN32_NT, "Service Pack 2", 0, 0, "ServerNT"}, { "vista", "Windows Vista", 6, 0, 0x1772,VER_PLATFORM_WIN32_NT, "Service Pack 2", 2, 0, "WinNT"}, { "win2003", "Windows 2003", 5, 2, 0xECE, VER_PLATFORM_WIN32_NT, "Service Pack 2", 2, 0, "ServerNT"}, { "winxp", "Windows XP", 5, 1, 0xA28, VER_PLATFORM_WIN32_NT, "Service Pack 3", 3, 0, "WinNT"}, diff -Nru wine1.3-1.3.30/programs/winecfg/audio.c wine1.3-1.3.31/programs/winecfg/audio.c --- wine1.3-1.3.30/programs/winecfg/audio.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/winecfg/audio.c 2011-10-21 18:38:36.000000000 +0000 @@ -371,6 +371,8 @@ } break; } + break; + case WM_SHOWWINDOW: set_window_title(hDlg); break; diff -Nru wine1.3-1.3.30/programs/winecfg/Ca.rc wine1.3-1.3.31/programs/winecfg/Ca.rc --- wine1.3-1.3.30/programs/winecfg/Ca.rc 1970-01-01 00:00:00.000000000 +0000 +++ wine1.3-1.3.31/programs/winecfg/Ca.rc 2011-10-21 18:38:36.000000000 +0000 @@ -0,0 +1,203 @@ +/* + * WineCfg resources + * Catalan Language Support + * + * 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" /* Needed for the PACKAGE_STRING definition */ +#include "resource.h" + +LANGUAGE LANG_CATALAN, SUBLANG_DEFAULT + +IDD_ABOUTCFG DIALOGEX 0, 0, 260, 220 +STYLE WS_CHILD +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "", IDC_ABT_PANEL, "STATIC", SS_OWNERDRAW, 0, 0, 260, 140 + LTEXT PACKAGE_NAME,IDC_ABT_TITLE_TEXT,105,30,55,30 + LTEXT PACKAGE_VERSION,IDC_ABT_PANEL_TEXT,160,43,140,8 + CONTROL "",IDC_ABT_WEB_LINK,"SysLink", LWS_TRANSPARENT, 105,53,106,8 + LTEXT "Aquest programari s programari lliure; podeu redistribuir i/o modificar-lo sota els termes de la Llicncia Pblica General Menor GNU com publicada per la Free Software Foundation; o la versi 2.1 de la Llicncia, o (a la seva elecci) qualsevol versi posterior.", + IDC_ABT_LICENSE_TEXT,105,64,145,60 + GROUPBOX " Informaci de Registraci de Windows ", IDC_STATIC, 15, 155, 230, 55 + LTEXT "Pr&opietari:", IDC_STATIC, 22, 171, 40, 20 + EDITTEXT IDC_ABT_OWNER, 75, 171, 160, 13, ES_AUTOHSCROLL | WS_TABSTOP + LTEXT "Organit&zaci:", IDC_STATIC, 22, 185, 50, 20 + EDITTEXT IDC_ABT_ORG, 75, 185, 160, 13, ES_AUTOHSCROLL | WS_TABSTOP +END + +IDD_APPCFG DIALOG 0, 0, 260, 220 +STYLE WS_CHILD | WS_DISABLED +FONT 8, "MS Shell Dlg" +BEGIN + GROUPBOX " Configuraci de les Aplicacions ",IDC_STATIC, 8,4,244,210 + LTEXT "Wine pot imitar versions de Windows diferents per a cada aplicaci. Aquesta pestanya es enllaa a les pestanyes Biblioteques i Grfics per permetre-vos canviar la configuraci del sistema o d'una aplicaci en aquestes pestanyes tamb.", + IDC_STATIC,15,20,227,40 + CONTROL "Aplicacions",IDC_APP_LISTVIEW,"SysListView32",WS_BORDER | WS_TABSTOP | LVS_LIST | LVS_SINGLESEL | LVS_SHOWSELALWAYS, + 15,60,230,110 + PUSHBUTTON "&Afegeix aplicaci...",IDC_APP_ADDAPP, 90,174,75,14 + PUSHBUTTON "T&reure aplicaci",IDC_APP_REMOVEAPP, 170,174,75,14 + LTEXT "Versi de &Windows:",IDC_STATIC,17,196,63,8 + COMBOBOX IDC_WINVER,83,194,163,56,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP +END + +IDD_GRAPHCFG DIALOG 0, 0, 260, 220 +STYLE WS_CHILD | WS_DISABLED +FONT 8, "MS Shell Dlg" +BEGIN + GROUPBOX " Ajustaments de Finestra ",IDC_STATIC,8,4,244,84 + CONTROL "Captura automticament el &ratol en les finestres de pantalla completa",IDC_FULLSCREEN_GRAB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,20,230,8 + CONTROL "Permet que el gestor de finestres &decori les finestres",IDC_ENABLE_DECORATED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,32,230,8 + CONTROL "&Emula un escriptori virtual",IDC_ENABLE_DESKTOP,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,15,56,230,8 + LTEXT "&Mida d'escriptori:",IDC_DESKTOP_SIZE,15,70,44,8,WS_DISABLED + LTEXT "X",IDC_DESKTOP_BY,109,70,8,8,WS_DISABLED + EDITTEXT IDC_DESKTOP_WIDTH,64,68,40,12,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED + EDITTEXT IDC_DESKTOP_HEIGHT,117,68,40,12,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED + + GROUPBOX " Direct3D ",IDC_STATIC,8,95,244,49 + LTEXT "Shader de &Vrtexs: ",IDC_STATIC,15,110,80,32 + COMBOBOX IDC_D3D_VSHADER_MODE,100,108,145,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "Permet Shader de &Pxels (si compatible amb el maquinari)",IDC_D3D_PSHADER_MODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,126,230,10 + + GROUPBOX " &Resoluci de la Pantalla ",IDC_STATIC,8,151,244,63 + 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 "Aquest s un text de mostra en Tahoma de 10 punts",IDC_RES_FONT_PREVIEW,15,180,230,28 +END + +IDD_DLLCFG DIALOG 0, 0, 260, 220 +STYLE WS_CHILD | WS_DISABLED +FONT 8, "MS Shell Dlg" +BEGIN + GROUPBOX " Reemplaament DLL ",IDC_STATIC,8,4,244,210 + LTEXT "Es pot especificar que una biblioteca d'enlla dinmic sigui o interna (proporcionada per Wine) o nativa (treta de Windows o proporcionada per l'aplicaci)." + ,IDC_STATIC,16,16,220,32 + LTEXT "&Nou reemplaament per la biblioteca:",IDC_STATIC,16,58,150,8 + COMBOBOX IDC_DLLCOMBO,16,68,140,14,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP | CBS_SORT | CBS_LOWERCASE + PUSHBUTTON "&Afegeix",IDC_DLLS_ADDDLL, 164,68,82,13 + LTEXT "&Reemplaaments Existents:",IDC_STATIC,16,86,100,8 + LISTBOX IDC_DLLS_LIST,16,96,140,112,WS_BORDER | WS_TABSTOP | WS_VSCROLL + PUSHBUTTON "&Edita...",IDC_DLLS_EDITDLL,164,96,82,14 + PUSHBUTTON "&Treu",IDC_DLLS_REMOVEDLL,164,114,82,14 +END + +IDD_LOADORDER DIALOG 80, 90, 150, 92 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "Editar Reemplaament" +FONT 8, "MS Shell Dlg" +BEGIN + GROUPBOX " Ordre de Crrega ",IDC_STATIC,8,4,134,66 + CONTROL "&Interna (Wine)",IDC_RAD_BUILTIN,"Button", BS_AUTORADIOBUTTON | WS_GROUP,16,14,115,10 + CONTROL "&Nativa (Windows)",IDC_RAD_NATIVE,"Button", BS_AUTORADIOBUTTON,16,24,115,10 + CONTROL "In&terna, desprs Nativa",IDC_RAD_BUILTIN_NATIVE,"Button", BS_AUTORADIOBUTTON,16,34,115,10 + CONTROL "Nati&va, desprs Interna",IDC_RAD_NATIVE_BUILTIN,"Button", BS_AUTORADIOBUTTON,16,44,115,10 + CONTROL "&Deshabilitada",IDC_RAD_DISABLE,"Button", BS_AUTORADIOBUTTON,16,54,115,10 + DEFPUSHBUTTON "D'acord",IDOK,8,74,45,14,WS_GROUP + PUSHBUTTON "Cancella",IDCANCEL,57,74,45,14,WS_GROUP +END + +IDD_DRIVECHOOSE DIALOG 60, 70, 200, 60 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "Seleccioneu la Lletra de la Unitat" +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDC_DRIVESA2Z,15,10,75,230,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "D'acord",IDOK,135,10,45,14,WS_GROUP + PUSHBUTTON "Cancella",IDCANCEL,135,30,45,14,WS_GROUP +END + +IDD_DRIVECFG DIALOG 0, 0, 260, 220 +STYLE WS_CHILD | WS_DISABLED +FONT 8, "MS Shell Dlg" +BEGIN + GROUPBOX " &Mapes d'unitat ",IDC_STATIC,8,4,244,195 + LTEXT "S'ha fallat en connectar el gestor de muntatge, la configuraci d'unitat no es pot editor.", IDC_STATIC_MOUNTMGR_ERROR, 15,30,190,76 + CONTROL "Vista de llista",IDC_LIST_DRIVES,"SysListView32",LVS_REPORT | LVS_AUTOARRANGE | LVS_ALIGNLEFT | + LVS_SINGLESEL | WS_BORDER | WS_TABSTOP, 15,18,232,76 + PUSHBUTTON "&Afegeix...",IDC_BUTTON_ADD,15,98,37,14 + PUSHBUTTON "&Treu",IDC_BUTTON_REMOVE,56,98,37,14 + PUSHBUTTON "Auto&detecta",IDC_BUTTON_AUTODETECT,197,98,49,14 + + /* editing drive details */ + LTEXT "&Ruta:",IDC_STATIC_PATH,15,123,20,9 + EDITTEXT IDC_EDIT_PATH,50,120,151,13,ES_AUTOHSCROLL | WS_TABSTOP + PUSHBUTTON "&Navega...",IDC_BUTTON_BROWSE_PATH,206,120,40,13 + + LTEXT "&Tipus:",IDC_STATIC_TYPE,15,138,30,10 + COMBOBOX IDC_COMBO_TYPE,50,135,105,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Mostra &Avanat",IDC_BUTTON_SHOW_HIDE_ADVANCED,186,135,60,13 + + LTEXT "Dispositi&u:",IDC_STATIC_DEVICE,15,153,31,9 + EDITTEXT IDC_EDIT_DEVICE,50,150,151,13,ES_AUTOHSCROLL | WS_TABSTOP + PUSHBUTTON "Na&vega...",IDC_BUTTON_BROWSE_DEVICE,206,150,40,13 + + LTEXT "&Etiqueta:",IDC_STATIC_LABEL,15,168,28,12 + EDITTEXT IDC_EDIT_LABEL,50,165,75,13,ES_AUTOHSCROLL | WS_TABSTOP + + LTEXT "Sri&e:",IDC_STATIC_SERIAL,15,183,26,12 + EDITTEXT IDC_EDIT_SERIAL,50,180,75,13,ES_AUTOHSCROLL | WS_TABSTOP + + CONTROL "Mostra els fitxers de &punt",IDC_SHOW_DOT_FILES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,205,230,8 +END + +IDD_AUDIOCFG DIALOG 0, 0, 260, 220 +STYLE WS_CHILD | WS_DISABLED +FONT 8, "MS Shell Dlg" +BEGIN + GROUPBOX " Diagnstics de Controlador ",IDC_STATIC,8,4,244,27 + LTEXT "",IDC_AUDIO_DRIVER,18,16,230,8 + GROUPBOX " Predetermiats ",IDC_STATIC,8,33,244,76 + LTEXT "Dispositiu de sortida:",IDC_STATIC,18,45,230,8 + LTEXT "Dispositiu de sortida de veu:",IDC_STATIC,18,61,230,8 + LTEXT "Dispositiu d'entrada:",IDC_STATIC,18,77,230,8 + LTEXT "Dispositiu d'entrada de veu:",IDC_STATIC,18,93,230,8 + COMBOBOX IDC_AUDIOOUT_DEVICE,110,43,135,14,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_VOICEOUT_DEVICE,110,59,135,14,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_AUDIOIN_DEVICE,110,75,135,14,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_VOICEIN_DEVICE,110,91,135,14,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "&Prova el So",IDC_AUDIO_TEST,8,113,59,14 +END + +IDD_DESKTOP_INTEGRATION DIALOG 0, 0, 260, 220 +STYLE WS_CHILD | WS_DISABLED +FONT 8, "MS Shell Dlg" +BEGIN + GROUPBOX " Aparena ",IDC_STATIC,8,4,244,106 + LTEXT "&Tema:",IDC_STATIC,15,16,130,8 + COMBOBOX IDC_THEME_THEMECOMBO,15,24,130,14,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "&Installa tema...",IDC_THEME_INSTALL,152,23,93,14 + LTEXT "&Color:",IDC_THEME_COLORTEXT,15,40,112,8 + COMBOBOX IDC_THEME_COLORCOMBO,15,48,112,14,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "&Mida:",IDC_THEME_SIZETEXT,135,40,110,8 + COMBOBOX IDC_THEME_SIZECOMBO,135,48,110,14,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "&Element:",IDC_STATIC,15,64,112,8 + COMBOBOX IDC_SYSPARAM_COMBO,15,74,112,120,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | CBS_SORT + LTEXT "C&olor:",IDC_SYSPARAM_COLOR_TEXT,135,64,25,8,WS_DISABLED + PUSHBUTTON "",IDC_SYSPARAM_COLOR,135,74,25,13,WS_DISABLED | BS_OWNERDRAW + LTEXT "Mi&da:",IDC_SYSPARAM_SIZE_TEXT,166,64,30,8,WS_DISABLED + EDITTEXT IDC_SYSPARAM_SIZE,166,74,23,13,ES_AUTOHSCROLL | WS_TABSTOP | WS_DISABLED + CONTROL "",IDC_SYSPARAM_SIZE_UD,UPDOWN_CLASS,UDS_SETBUDDYINT | WS_DISABLED,187,74,15,13 + PUSHBUTTON "&Font...",IDC_SYSPARAM_FONT,208,74,37,13,WS_DISABLED + GROUPBOX " Car&petas ",IDC_STATIC,8,114,244,100 + CONTROL "Vista de llista",IDC_LIST_SFPATHS,"SysListView32",LVS_REPORT | LVS_AUTOARRANGE | LVS_ALIGNLEFT | + LVS_SINGLESEL | WS_BORDER | WS_TABSTOP, 15,126,230,64 + CONTROL "En&llaa a:",IDC_LINK_SFPATH,"Button",BS_AUTOCHECKBOX|WS_TABSTOP|WS_DISABLED,15,195,50,13 + EDITTEXT IDC_EDIT_SFPATH,65,195,125,13,ES_AUTOHSCROLL|WS_TABSTOP|WS_DISABLED + PUSHBUTTON "&Navega...",IDC_BROWSE_SFPATH,195,195,50,13,WS_DISABLED +END diff -Nru wine1.3-1.3.30/programs/winecfg/En.rc wine1.3-1.3.31/programs/winecfg/En.rc --- wine1.3-1.3.30/programs/winecfg/En.rc 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/winecfg/En.rc 2011-10-21 18:38:36.000000000 +0000 @@ -208,6 +208,23 @@ LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL +IDD_ABOUTCFG DIALOGEX 0, 0, 260, 220 +STYLE WS_CHILD +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "", IDC_ABT_PANEL, "STATIC", SS_OWNERDRAW, 0, 0, 260, 140 + LTEXT PACKAGE_NAME,IDC_ABT_TITLE_TEXT,105,30,55,30 + LTEXT PACKAGE_VERSION,IDC_ABT_PANEL_TEXT,160,43,140,8 + CONTROL "",IDC_ABT_WEB_LINK,"SysLink", LWS_TRANSPARENT, 105,53,106,8 + LTEXT "This program 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.", + IDC_ABT_LICENSE_TEXT,105,64,145,60 + GROUPBOX " Windows Registration Information ", IDC_STATIC, 15, 155, 230, 55 + LTEXT "&Owner:", IDC_STATIC, 22, 171, 40, 20 + EDITTEXT IDC_ABT_OWNER, 75, 171, 160, 13, ES_AUTOHSCROLL | WS_TABSTOP + LTEXT "Organi&sation:", IDC_STATIC, 22, 185, 50, 20 + EDITTEXT IDC_ABT_ORG, 75, 185, 160, 13, ES_AUTOHSCROLL | WS_TABSTOP +END + IDD_DESKTOP_INTEGRATION DIALOG 0, 0, 260, 220 STYLE WS_CHILD | WS_DISABLED FONT 8, "MS Shell Dlg" diff -Nru wine1.3-1.3.30/programs/winecfg/It.rc wine1.3-1.3.31/programs/winecfg/It.rc --- wine1.3-1.3.30/programs/winecfg/It.rc 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/winecfg/It.rc 2011-10-21 18:38:36.000000000 +0000 @@ -3,7 +3,7 @@ * Italian Language Support * * Copyright 2004 Ivan Leo Pioti - * Copyright 2009 Luca Bennati + * Copyright 2009,2011 Luca Bennati * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -66,7 +66,7 @@ FONT 8, "MS Shell Dlg" BEGIN GROUPBOX " Impostazioni delle finestre ",IDC_STATIC,8,4,244,84 - CONTROL "Automatically capture the &mouse in full-screen windows",IDC_FULLSCREEN_GRAB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,20,230,8 + CONTROL "Cattura automaticamente il &mouse nelle finestre a schermo pieno",IDC_FULLSCREEN_GRAB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,20,230,8 CONTROL "Permetti al gestore delle finestre di &decorare le finestre",IDC_ENABLE_DECORATED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,32,230,8 CONTROL "Permetti al &gestore delle finestre di controllare le finestre",IDC_ENABLE_MANAGED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,44,230,8 CONTROL "&Emula un desktop virtuale",IDC_ENABLE_DESKTOP,"Button", @@ -115,7 +115,7 @@ CONTROL "In&tegrata poi nativa",IDC_RAD_BUILTIN_NATIVE,"Button", BS_AUTORADIOBUTTON,16,34,75,10 CONTROL "N&ativa poi integrata",IDC_RAD_NATIVE_BUILTIN,"Button", BS_AUTORADIOBUTTON,16,44,75,10 CONTROL "&Disabilita",IDC_RAD_DISABLE,"Button", BS_AUTORADIOBUTTON,16,54,75,10 - DEFPUSHBUTTON "OK",IDOK,8,74,45,14,WS_GROUP + DEFPUSHBUTTON "Ok",IDOK,8,74,45,14,WS_GROUP PUSHBUTTON "Annulla",IDCANCEL,57,74,45,14,WS_GROUP END @@ -125,7 +125,7 @@ FONT 8, "MS Shell Dlg" BEGIN COMBOBOX IDC_DRIVESA2Z,15,10,75,230,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - DEFPUSHBUTTON "OK",IDOK,105,10,45,14,WS_GROUP + DEFPUSHBUTTON "Ok",IDOK,105,10,45,14,WS_GROUP PUSHBUTTON "Annulla",IDCANCEL,105,30,45,14,WS_GROUP END @@ -166,13 +166,13 @@ STYLE WS_CHILD | WS_DISABLED FONT 8, "MS Shell Dlg" BEGIN - GROUPBOX " Driver Diagnostics ",IDC_STATIC,8,4,244,27 + GROUPBOX " Diagnostica del driver ",IDC_STATIC,8,4,244,27 LTEXT "",IDC_AUDIO_DRIVER,18,16,230,8 - GROUPBOX " Defaults ",IDC_STATIC,8,33,244,76 - LTEXT "Output device:",IDC_STATIC,18,45,230,8 - LTEXT "Voice output device:",IDC_STATIC,18,61,230,8 - LTEXT "Input device:",IDC_STATIC,18,77,230,8 - LTEXT "Voice input device:",IDC_STATIC,18,93,230,8 + GROUPBOX " Valori predefiniti ",IDC_STATIC,8,33,244,76 + LTEXT "Unità output:",IDC_STATIC,18,45,230,8 + LTEXT "Unità output voce:",IDC_STATIC,18,61,230,8 + LTEXT "Unità input:",IDC_STATIC,18,77,230,8 + LTEXT "Unità input voce:",IDC_STATIC,18,93,230,8 COMBOBOX IDC_AUDIOOUT_DEVICE,110,43,135,14,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_VOICEOUT_DEVICE,110,59,135,14,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_AUDIOIN_DEVICE,110,75,135,14,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP diff -Nru wine1.3-1.3.30/programs/winecfg/Makefile.in wine1.3-1.3.31/programs/winecfg/Makefile.in --- wine1.3-1.3.30/programs/winecfg/Makefile.in 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/winecfg/Makefile.in 2011-10-21 18:38:36.000000000 +0000 @@ -17,6 +17,7 @@ RC_SRCS = \ Bg.rc \ + Ca.rc \ Cs.rc \ Da.rc \ De.rc \ diff -Nru wine1.3-1.3.30/programs/winecfg/Pl.rc wine1.3-1.3.31/programs/winecfg/Pl.rc --- wine1.3-1.3.30/programs/winecfg/Pl.rc 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/winecfg/Pl.rc 2011-10-21 18:38:36.000000000 +0000 @@ -66,7 +66,7 @@ FONT 8, "MS Shell Dlg" BEGIN GROUPBOX " Ustawienia okna ",IDC_STATIC,8,4,244,92 - CONTROL "Automatically capture the &mouse in full-screen windows",IDC_FULLSCREEN_GRAB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,20,230,16 + CONTROL "Automatycznie przechyw &mysz w oknach penoekranowych",IDC_FULLSCREEN_GRAB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,20,230,16 CONTROL "Pozwl menederowi okien &dekorowa okna",IDC_ENABLE_DECORATED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,40,230,8 CONTROL "Pozwl menederowi okien &zarzdza oknami Wine",IDC_ENABLE_MANAGED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,52,230,8 CONTROL "Emuluj wirtualny &pulpit",IDC_ENABLE_DESKTOP,"Button", @@ -93,7 +93,7 @@ FONT 8, "MS Shell Dlg" BEGIN GROUPBOX " Reguy bibliotek DLL ",IDC_STATIC,8,4,244,210 - LTEXT "Dla kadej biblioteki DLL mona zdecydowa czy naley uy wersji wbudowanej (dostarczonej z Wine) czy zewntrznej (wzitej z Windows lub dostarczonej wraz z aplikacj)." + LTEXT "Dla kadej biblioteki DLL mona zdecydowa czy naley uy wersji wbudowanej (dostarczonej z Wine) czy natywnej (wzitej z Windows lub dostarczonej wraz z aplikacj)." ,IDC_STATIC,16,16,220,32 LTEXT "Nowa regua dla biblioteki:",IDC_STATIC,16,58,100,8 COMBOBOX IDC_DLLCOMBO,16,68,140,14,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP | CBS_SORT | CBS_LOWERCASE @@ -111,9 +111,9 @@ BEGIN GROUPBOX " Biblioteka ",IDC_STATIC,8,4,134,66 CONTROL "Tylko &wbudowana (Wine)",IDC_RAD_BUILTIN,"Button", BS_AUTORADIOBUTTON | WS_GROUP,16,14,115,10 - CONTROL "Tylko &zewntrzna (Windows)",IDC_RAD_NATIVE,"Button", BS_AUTORADIOBUTTON,16,24,115,10 + CONTROL "Tylko &natywna (Windows)",IDC_RAD_NATIVE,"Button", BS_AUTORADIOBUTTON,16,24,115,10 CONTROL "Preferuj w&budowan",IDC_RAD_BUILTIN_NATIVE,"Button", BS_AUTORADIOBUTTON,16,34,115,10 - CONTROL "Preferuj z&ewntrzn",IDC_RAD_NATIVE_BUILTIN,"Button", BS_AUTORADIOBUTTON,16,44,115,10 + CONTROL "Preferuj n&atywn",IDC_RAD_NATIVE_BUILTIN,"Button", BS_AUTORADIOBUTTON,16,44,115,10 CONTROL "&Wycz bibliotek",IDC_RAD_DISABLE,"Button", BS_AUTORADIOBUTTON,16,54,115,10 DEFPUSHBUTTON "&OK",IDOK,18,74,45,14,WS_GROUP PUSHBUTTON "&Anuluj",IDCANCEL,87,74,45,14,WS_GROUP @@ -166,13 +166,13 @@ STYLE WS_CHILD | WS_DISABLED FONT 8, "MS Shell Dlg" BEGIN - GROUPBOX " Driver Diagnostics ",IDC_STATIC,8,4,244,27 + GROUPBOX " Diagnostyka sterownika ",IDC_STATIC,8,4,244,27 LTEXT "",IDC_AUDIO_DRIVER,18,16,230,8 - GROUPBOX " Defaults ",IDC_STATIC,8,33,244,76 - LTEXT "Output device:",IDC_STATIC,18,45,230,8 - LTEXT "Voice output device:",IDC_STATIC,18,61,230,8 - LTEXT "Input device:",IDC_STATIC,18,77,230,8 - LTEXT "Voice input device:",IDC_STATIC,18,93,230,8 + GROUPBOX " Domylne ",IDC_STATIC,8,33,244,76 + LTEXT "Urzdzenie wyjciowe:",IDC_STATIC,18,45,230,8 + LTEXT "Urzdzenie wyjciowe gosu:",IDC_STATIC,18,61,230,8 + LTEXT "Urzdzenie wejciowe:",IDC_STATIC,18,77,230,8 + LTEXT "Urzdzenie wejciowe gosu:",IDC_STATIC,18,93,230,8 COMBOBOX IDC_AUDIOOUT_DEVICE,110,43,135,14,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_VOICEOUT_DEVICE,110,59,135,14,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_AUDIOIN_DEVICE,110,75,135,14,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP diff -Nru wine1.3-1.3.30/programs/wineconsole/dialog.c wine1.3-1.3.31/programs/wineconsole/dialog.c --- wine1.3-1.3.30/programs/wineconsole/dialog.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/wineconsole/dialog.c 2011-10-21 18:38:36.000000000 +0000 @@ -415,6 +415,7 @@ int font_idx, size_idx; WCHAR buf[256]; WCHAR fmt[128]; + DWORD_PTR args[2]; LOGFONTW lf; HFONT hFont, hOldFont; struct config_data config; @@ -439,7 +440,10 @@ if (hOldFont) DeleteObject(hOldFont); LoadStringW(GetModuleHandleW(NULL), IDS_FNT_DISPLAY, fmt, sizeof(fmt) / sizeof(fmt[0])); - wsprintfW(buf, fmt, config.cell_width, config.cell_height); + args[0] = config.cell_width; + args[1] = config.cell_height; + FormatMessageW(FORMAT_MESSAGE_FROM_STRING|FORMAT_MESSAGE_ARGUMENT_ARRAY, + fmt, 0, 0, buf, sizeof(buf)/sizeof(*buf), (__ms_va_list*)args); SendDlgItemMessageW(di->hDlg, IDC_FNT_FONT_INFO, WM_SETTEXT, 0, (LPARAM)buf); diff -Nru wine1.3-1.3.30/programs/wineconsole/wineconsole.rc wine1.3-1.3.31/programs/wineconsole/wineconsole.rc --- wine1.3-1.3.30/programs/wineconsole/wineconsole.rc 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/wineconsole/wineconsole.rc 2011-10-21 18:38:36.000000000 +0000 @@ -31,7 +31,7 @@ IDS_SELECTALL, "&Select all" IDS_SCROLL, "Sc&roll" IDS_SEARCH, "S&earch" -IDS_FNT_DISPLAY, "Each character is %ld pixels wide on %ld pixels high" +IDS_FNT_DISPLAY, "Each character is %1!u! pixels wide on %2!u! pixels high" IDS_FNT_PREVIEW, "This is a test" IDS_DLG_TIT_DEFAULT, "Setup - Default settings" IDS_DLG_TIT_CURRENT, "Setup - Current settings" diff -Nru wine1.3-1.3.30/programs/winefile/winefile.c wine1.3-1.3.31/programs/winefile/winefile.c --- wine1.3-1.3.30/programs/winefile/winefile.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/winefile/winefile.c 2011-10-21 18:38:36.000000000 +0000 @@ -2774,9 +2774,14 @@ WCHAR fmt[64], b1[64], b2[64], buffer[BUFFER_LEN]; if (GetDiskFreeSpaceExW(NULL, &ulFreeBytesToCaller, &ulTotalBytes, &ulFreeBytes)) { + DWORD_PTR args[2]; format_bytes(b1, ulFreeBytesToCaller.QuadPart); format_bytes(b2, ulTotalBytes.QuadPart); - wsprintfW(buffer, RS(fmt,IDS_FREE_SPACE_FMT), b1, b2); + args[0] = (DWORD_PTR)b1; + args[1] = (DWORD_PTR)b2; + FormatMessageW(FORMAT_MESSAGE_FROM_STRING|FORMAT_MESSAGE_ARGUMENT_ARRAY, + RS(fmt,IDS_FREE_SPACE_FMT), 0, 0, buffer, + sizeof(buffer)/sizeof(*buffer), (__ms_va_list*)args); } else lstrcpyW(buffer, sQMarks); diff -Nru wine1.3-1.3.30/programs/winefile/winefile.rc wine1.3-1.3.31/programs/winefile/winefile.rc --- wine1.3-1.3.30/programs/winefile/winefile.rc 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/winefile/winefile.rc 2011-10-21 18:38:36.000000000 +0000 @@ -117,7 +117,7 @@ IDS_COL_ATTR "Attributes" IDS_COL_SEC "Security" - IDS_FREE_SPACE_FMT "%s of %s free" + IDS_FREE_SPACE_FMT "%1 of %2 free" } LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL diff -Nru wine1.3-1.3.30/programs/wscript/tests/rsrc.rc wine1.3-1.3.31/programs/wscript/tests/rsrc.rc --- wine1.3-1.3.30/programs/wscript/tests/rsrc.rc 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/wscript/tests/rsrc.rc 2011-10-21 18:38:36.000000000 +0000 @@ -18,3 +18,6 @@ /* @makedep: run.js */ run.js TESTSCRIPT "run.js" + +/* @makedep: run.vbs */ +run.vbs TESTSCRIPT "run.vbs" diff -Nru wine1.3-1.3.30/programs/wscript/tests/run.c wine1.3-1.3.31/programs/wscript/tests/run.c --- wine1.3-1.3.30/programs/wscript/tests/run.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/wscript/tests/run.c 2011-10-21 18:38:36.000000000 +0000 @@ -170,16 +170,28 @@ WORD wFlags, DISPPARAMS *pdp, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) { switch(dispIdMember) { - case DISPID_TESTOBJ_OK: + case DISPID_TESTOBJ_OK: { + VARIANT *expr, *msg; + ok(wFlags == INVOKE_FUNC, "wFlags = %x\n", wFlags); ok(pdp->cArgs == 2, "cArgs = %d\n", pdp->cArgs); ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs); - ok(V_VT(pdp->rgvarg) == VT_BSTR, "V_VT(psp->rgvargs) = %d\n", V_VT(pdp->rgvarg)); - ok(V_VT(pdp->rgvarg+1) == VT_BOOL, "V_VT(psp->rgvargs+1) = %d\n", V_VT(pdp->rgvarg)); - ok(V_BOOL(pdp->rgvarg+1), "%s: %s\n", script_name, wine_dbgstr_w(V_BSTR(pdp->rgvarg))); + + expr = pdp->rgvarg+1; + if(V_VT(expr) == (VT_VARIANT|VT_BYREF)) + expr = V_VARIANTREF(expr); + + msg = pdp->rgvarg; + if(V_VT(msg) == (VT_VARIANT|VT_BYREF)) + msg = V_VARIANTREF(msg); + + ok(V_VT(msg) == VT_BSTR, "V_VT(psp->rgvargs) = %d\n", V_VT(msg)); + ok(V_VT(expr) == VT_BOOL, "V_VT(psp->rgvargs+1) = %d\n", V_VT(expr)); + ok(V_BOOL(expr), "%s: %s\n", script_name, wine_dbgstr_w(V_BSTR(msg))); if(pVarResult) V_VT(pVarResult) = VT_EMPTY; break; + } case DISPID_TESTOBJ_TRACE: ok(wFlags == INVOKE_FUNC, "wFlags = %x\n", wFlags); ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs); diff -Nru wine1.3-1.3.30/programs/wscript/tests/run.vbs wine1.3-1.3.31/programs/wscript/tests/run.vbs --- wine1.3-1.3.30/programs/wscript/tests/run.vbs 1970-01-01 00:00:00.000000000 +0000 +++ wine1.3-1.3.31/programs/wscript/tests/run.vbs 2011-10-21 18:38:36.000000000 +0000 @@ -0,0 +1,30 @@ +' +' Copyright 2011 Jacek Caban for CodeWeavers +' +' 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 +' + +Option Explicit + +Dim winetest +Set winetest = CreateObject("Wine.Test") + +Sub ok(expr, msg) + Call winetest.ok(expr, msg) +End Sub + +Call ok(WScript is WSH, "WScript is not WSH") + +Call winetest.reportSuccess() diff -Nru wine1.3-1.3.30/programs/xcopy/xcopy.c wine1.3-1.3.31/programs/xcopy/xcopy.c --- wine1.3-1.3.30/programs/xcopy/xcopy.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/xcopy/xcopy.c 2011-10-21 18:38:36.000000000 +0000 @@ -48,22 +48,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(xcopy); -/* Prototypes */ -static int XCOPY_ParseCommandLine(WCHAR *suppliedsource, - WCHAR *supplieddestination, DWORD *flags); -static int XCOPY_ProcessSourceParm(WCHAR *suppliedsource, WCHAR *stem, - WCHAR *spec, DWORD flags); -static int XCOPY_ProcessDestParm(WCHAR *supplieddestination, WCHAR *stem, - WCHAR *spec, WCHAR *srcspec, DWORD flags); -static int XCOPY_DoCopy(WCHAR *srcstem, WCHAR *srcspec, - WCHAR *deststem, WCHAR *destspec, - DWORD flags); -static BOOL XCOPY_CreateDirectory(const WCHAR* path); -static BOOL XCOPY_ProcessExcludeList(WCHAR* parms); -static BOOL XCOPY_ProcessExcludeFile(WCHAR* filename, WCHAR* endOfName); -static WCHAR *XCOPY_LoadMessage(UINT id); -static void XCOPY_FailMessage(DWORD err); -static int XCOPY_wprintf(const WCHAR *format, ...); /* Typedefs */ typedef struct _EXCLUDELIST @@ -82,8 +66,6 @@ static const WCHAR wchr_dot[] = {'.', 0}; static const WCHAR wchr_dotdot[] = {'.', '.', 0}; -/* Constants (Mostly for widechars) */ - /* To minimize stack usage during recursion, some temporary variables made global */ @@ -92,490 +74,262 @@ /* ========================================================================= - main - Main entrypoint for the xcopy command - - Processes the args, and drives the actual copying - ========================================================================= */ -int wmain (int argc, WCHAR *argvW[]) -{ - int rc = 0; - WCHAR suppliedsource[MAX_PATH] = {0}; /* As supplied on the cmd line */ - WCHAR supplieddestination[MAX_PATH] = {0}; - WCHAR sourcestem[MAX_PATH] = {0}; /* Stem of source */ - WCHAR sourcespec[MAX_PATH] = {0}; /* Filespec of source */ - WCHAR destinationstem[MAX_PATH] = {0}; /* Stem of destination */ - WCHAR destinationspec[MAX_PATH] = {0}; /* Filespec of destination */ - WCHAR copyCmd[MAXSTRING]; /* COPYCMD env var */ - DWORD flags = 0; /* Option flags */ - const WCHAR PROMPTSTR1[] = {'/', 'Y', 0}; - const WCHAR PROMPTSTR2[] = {'/', 'y', 0}; - const WCHAR COPYCMD[] = {'C', 'O', 'P', 'Y', 'C', 'M', 'D', 0}; + * Load a string from the resource file, handling any error + * Returns string retrieved from resource file + * ========================================================================= */ +static WCHAR *XCOPY_LoadMessage(UINT id) { + static WCHAR msg[MAXSTRING]; + const WCHAR failedMsg[] = {'F', 'a', 'i', 'l', 'e', 'd', '!', 0}; - /* Preinitialize flags based on COPYCMD */ - if (GetEnvironmentVariableW(COPYCMD, copyCmd, MAXSTRING)) { - if (wcsstr(copyCmd, PROMPTSTR1) != NULL || - wcsstr(copyCmd, PROMPTSTR2) != NULL) { - flags |= OPT_NOPROMPT; - } + if (!LoadStringW(GetModuleHandleW(NULL), id, msg, sizeof(msg)/sizeof(WCHAR))) { + WINE_FIXME("LoadString failed with %d\n", GetLastError()); + lstrcpyW(msg, failedMsg); } + return msg; +} - /* FIXME: On UNIX, files starting with a '.' are treated as hidden under - wine, but on windows these can be normal files. At least one installer - uses files such as .packlist and (validly) expects them to be copied. - Under wine, if we do not copy hidden files by default then they get - lose */ - flags |= OPT_COPYHIDSYS; +/* ========================================================================= + * Output a formatted unicode string. Ideally this will go to the console + * and hence required WriteConsoleW to output it, however if file i/o is + * redirected, it needs to be WriteFile'd using OEM (not ANSI) format + * ========================================================================= */ +static int __cdecl XCOPY_wprintf(const WCHAR *format, ...) { + + static WCHAR *output_bufW = NULL; + static char *output_bufA = NULL; + static BOOL toConsole = TRUE; + static BOOL traceOutput = FALSE; +#define MAX_WRITECONSOLE_SIZE 65535 + + __ms_va_list parms; + DWORD nOut; + int len; + DWORD res = 0; /* - * Parse the command line + * Allocate buffer to use when writing to console + * Note: Not freed - memory will be allocated once and released when + * xcopy ends */ - if ((rc = XCOPY_ParseCommandLine(suppliedsource, supplieddestination, - &flags)) != RC_OK) { - if (rc == RC_HELP) - return RC_OK; - else - return rc; - } - /* Trace out the supplied information */ - WINE_TRACE("Supplied parameters:\n"); - WINE_TRACE("Source : '%s'\n", wine_dbgstr_w(suppliedsource)); - WINE_TRACE("Destination : '%s'\n", wine_dbgstr_w(supplieddestination)); - - /* Extract required information from source specification */ - rc = XCOPY_ProcessSourceParm(suppliedsource, sourcestem, sourcespec, flags); - if (rc != RC_OK) return rc; + if (!output_bufW) output_bufW = HeapAlloc(GetProcessHeap(), 0, + MAX_WRITECONSOLE_SIZE); + if (!output_bufW) { + WINE_FIXME("Out of memory - could not allocate 2 x 64K buffers\n"); + return 0; + } - /* Extract required information from destination specification */ - rc = XCOPY_ProcessDestParm(supplieddestination, destinationstem, - destinationspec, sourcespec, flags); - if (rc != RC_OK) return rc; + __ms_va_start(parms, format); + SetLastError(NO_ERROR); + len = FormatMessageW(FORMAT_MESSAGE_FROM_STRING, format, 0, 0, output_bufW, + MAX_WRITECONSOLE_SIZE/sizeof(*output_bufW), &parms); + __ms_va_end(parms); + if (len == 0 && GetLastError() != NO_ERROR) { + WINE_FIXME("Could not format string: le=%u, fmt=%s\n", GetLastError(), wine_dbgstr_w(format)); + return 0; + } - /* Trace out the resulting information */ - WINE_TRACE("Resolved parameters:\n"); - WINE_TRACE("Source Stem : '%s'\n", wine_dbgstr_w(sourcestem)); - WINE_TRACE("Source Spec : '%s'\n", wine_dbgstr_w(sourcespec)); - WINE_TRACE("Dest Stem : '%s'\n", wine_dbgstr_w(destinationstem)); - WINE_TRACE("Dest Spec : '%s'\n", wine_dbgstr_w(destinationspec)); + /* Try to write as unicode whenever we think it's a console */ + if (toConsole) { + res = WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), + output_bufW, len, &nOut, NULL); + } - /* Pause if necessary */ - if (flags & OPT_PAUSE) { - DWORD count; - char pausestr[10]; + /* If writing to console has failed (ever) we assume it's file + i/o so convert to OEM codepage and output */ + if (!res) { + BOOL usedDefaultChar = FALSE; + DWORD convertedChars; - XCOPY_wprintf(XCOPY_LoadMessage(STRING_PAUSE)); - ReadFile (GetStdHandle(STD_INPUT_HANDLE), pausestr, sizeof(pausestr), - &count, NULL); - } + toConsole = FALSE; - /* Now do the hard work... */ - rc = XCOPY_DoCopy(sourcestem, sourcespec, - destinationstem, destinationspec, - flags); + /* + * Allocate buffer to use when writing to file. Not freed, as above + */ + if (!output_bufA) output_bufA = HeapAlloc(GetProcessHeap(), 0, + MAX_WRITECONSOLE_SIZE); + if (!output_bufA) { + WINE_FIXME("Out of memory - could not allocate 2 x 64K buffers\n"); + return 0; + } - /* Clear up exclude list allocated memory */ - while (excludeList) { - EXCLUDELIST *pos = excludeList; - excludeList = excludeList -> next; - HeapFree(GetProcessHeap(), 0, pos->name); - HeapFree(GetProcessHeap(), 0, pos); + /* Convert to OEM, then output */ + convertedChars = WideCharToMultiByte(GetConsoleOutputCP(), 0, output_bufW, + len, output_bufA, MAX_WRITECONSOLE_SIZE, + "?", &usedDefaultChar); + WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), output_bufA, convertedChars, + &nOut, FALSE); } - /* Finished - print trailer and exit */ - if (flags & OPT_SIMULATE) { - XCOPY_wprintf(XCOPY_LoadMessage(STRING_SIMCOPY), filesCopied); - } else if (!(flags & OPT_NOCOPY)) { - XCOPY_wprintf(XCOPY_LoadMessage(STRING_COPY), filesCopied); + /* Trace whether screen or console */ + if (!traceOutput) { + WINE_TRACE("Writing to console? (%d)\n", toConsole); + traceOutput = TRUE; } - if (rc == RC_OK && filesCopied == 0) rc = RC_NOFILES; - return rc; - + return nOut; } /* ========================================================================= - XCOPY_ParseCommandLine - Parses the command line - ========================================================================= */ -static BOOL is_whitespace(WCHAR c) -{ - return c == ' ' || c == '\t'; -} - -static WCHAR *skip_whitespace(WCHAR *p) -{ - for (; *p && is_whitespace(*p); p++); - return p; -} + * Load a string for a system error and writes it to the screen + * Returns string retrieved from resource file + * ========================================================================= */ +static void XCOPY_FailMessage(DWORD err) { + LPWSTR lpMsgBuf; + int status; -/* Windows XCOPY uses a simplified command line parsing algorithm - that lacks the escaped-quote logic of build_argv(), because - literal double quotes are illegal in any of its arguments. - Example: 'XCOPY "c:\DIR A" "c:DIR B\"' is OK. */ -static int find_end_of_word(const WCHAR *word, WCHAR **end) -{ - BOOL in_quotes = 0; - const WCHAR *ptr = word; - for (;;) { - for (; *ptr != '\0' && *ptr != '"' && - (in_quotes || !is_whitespace(*ptr)); ptr++); - if (*ptr == '"') { - in_quotes = !in_quotes; - ptr++; - } - /* Odd number of double quotes is illegal for XCOPY */ - if (in_quotes && *ptr == '\0') - return RC_INITERROR; - if (*ptr == '\0' || (!in_quotes && is_whitespace(*ptr))) - break; + status = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM, + NULL, err, 0, + (LPWSTR) &lpMsgBuf, 0, NULL); + if (!status) { + WINE_FIXME("FIXME: Cannot display message for error %d, status %d\n", + err, GetLastError()); + } else { + const WCHAR infostr[] = {'%', '1', '\n', 0}; + XCOPY_wprintf(infostr, lpMsgBuf); + LocalFree ((HLOCAL)lpMsgBuf); } - *end = (WCHAR*)ptr; - return RC_OK; } -/* Remove all double quotes from a word */ -static void strip_quotes(WCHAR *word, WCHAR **end) -{ - WCHAR *rp, *wp; - for (rp = word, wp = word; *rp != '\0'; rp++) { - if (*rp == '"') - continue; - if (wp < rp) - *wp = *rp; - wp++; - } - *wp = '\0'; - *end = wp; -} -static int XCOPY_ParseCommandLine(WCHAR *suppliedsource, - WCHAR *supplieddestination, DWORD *pflags) +/* ========================================================================= + * Routine copied from cmd.exe md command - + * This works recursively. so creating dir1\dir2\dir3 will create dir1 and + * dir2 if they do not already exist. + * ========================================================================= */ +static BOOL XCOPY_CreateDirectory(const WCHAR* path) { - const WCHAR EXCLUDE[] = {'E', 'X', 'C', 'L', 'U', 'D', 'E', ':', 0}; - DWORD flags = *pflags; - WCHAR *cmdline, *word, *end, *next; - int rc = RC_INITERROR; + int len; + WCHAR *new_path; + BOOL ret = TRUE; - cmdline = _wcsdup(GetCommandLineW()); - if (cmdline == NULL) - return rc; + new_path = HeapAlloc(GetProcessHeap(),0, sizeof(WCHAR) * (lstrlenW(path)+1)); + lstrcpyW(new_path,path); - /* Skip first arg, which is the program name */ - if ((rc = find_end_of_word(cmdline, &word)) != RC_OK) - goto out; - word = skip_whitespace(word); + while ((len = lstrlenW(new_path)) && new_path[len - 1] == '\\') + new_path[len - 1] = 0; - while (*word) + while (!CreateDirectoryW(new_path,NULL)) { - WCHAR first; - if ((rc = find_end_of_word(word, &end)) != RC_OK) - goto out; + WCHAR *slash; + DWORD last_error = GetLastError(); + if (last_error == ERROR_ALREADY_EXISTS) + break; - next = skip_whitespace(end); - first = word[0]; - *end = '\0'; - strip_quotes(word, &end); - WINE_TRACE("Processing Arg: '%s'\n", wine_dbgstr_w(word)); - - /* First non-switch parameter is source, second is destination */ - if (first != '/') { - if (suppliedsource[0] == 0x00) { - lstrcpyW(suppliedsource, word); - } else if (supplieddestination[0] == 0x00) { - lstrcpyW(supplieddestination, word); - } else { - XCOPY_wprintf(XCOPY_LoadMessage(STRING_INVPARMS)); - goto out; - } - } else { - /* Process all the switch options - Note: Windows docs say /P prompts when dest is created - but tests show it is done for each src file - regardless of the destination */ - switch (toupper(word[1])) { - case 'I': flags |= OPT_ASSUMEDIR; break; - case 'S': flags |= OPT_RECURSIVE; break; - case 'Q': flags |= OPT_QUIET; break; - case 'F': flags |= OPT_FULL; break; - case 'L': flags |= OPT_SIMULATE; break; - case 'W': flags |= OPT_PAUSE; break; - case 'T': flags |= OPT_NOCOPY | OPT_RECURSIVE; break; - case 'Y': flags |= OPT_NOPROMPT; break; - case 'N': flags |= OPT_SHORTNAME; break; - case 'U': flags |= OPT_MUSTEXIST; break; - case 'R': flags |= OPT_REPLACEREAD; break; - case 'H': flags |= OPT_COPYHIDSYS; break; - case 'C': flags |= OPT_IGNOREERRORS; break; - case 'P': flags |= OPT_SRCPROMPT; break; - case 'A': flags |= OPT_ARCHIVEONLY; break; - case 'M': flags |= OPT_ARCHIVEONLY | - OPT_REMOVEARCH; break; - - /* E can be /E or /EXCLUDE */ - case 'E': if (CompareStringW(LOCALE_USER_DEFAULT, - NORM_IGNORECASE | SORT_STRINGSORT, - &word[1], 8, - EXCLUDE, -1) == 2) { - if (XCOPY_ProcessExcludeList(&word[9])) { - XCOPY_FailMessage(ERROR_INVALID_PARAMETER); - goto out; - } else flags |= OPT_EXCLUDELIST; - } else flags |= OPT_EMPTYDIR | OPT_RECURSIVE; - break; - - /* D can be /D or /D: */ - case 'D': if (word[2]==':' && isdigit(word[3])) { - SYSTEMTIME st; - WCHAR *pos = &word[3]; - BOOL isError = FALSE; - memset(&st, 0x00, sizeof(st)); - - /* Parse the arg : Month */ - st.wMonth = _wtol(pos); - while (*pos && isdigit(*pos)) pos++; - if (*pos++ != '-') isError = TRUE; - - /* Parse the arg : Day */ - if (!isError) { - st.wDay = _wtol(pos); - while (*pos && isdigit(*pos)) pos++; - if (*pos++ != '-') isError = TRUE; - } - - /* Parse the arg : Day */ - if (!isError) { - st.wYear = _wtol(pos); - while (*pos && isdigit(*pos)) pos++; - if (st.wYear < 100) st.wYear+=2000; - } - - if (!isError && SystemTimeToFileTime(&st, &dateRange)) { - SYSTEMTIME st; - WCHAR datestring[32], timestring[32]; - - flags |= OPT_DATERANGE; - - /* Debug info: */ - FileTimeToSystemTime (&dateRange, &st); - GetDateFormatW(0, DATE_SHORTDATE, &st, NULL, datestring, - sizeof(datestring)/sizeof(WCHAR)); - GetTimeFormatW(0, TIME_NOSECONDS, &st, - NULL, timestring, sizeof(timestring)/sizeof(WCHAR)); - - WINE_TRACE("Date being used is: %s %s\n", - wine_dbgstr_w(datestring), wine_dbgstr_w(timestring)); - } else { - XCOPY_FailMessage(ERROR_INVALID_PARAMETER); - goto out; - } - } else { - flags |= OPT_DATENEWER; - } - break; - - case '-': if (toupper(word[2])=='Y') - flags &= ~OPT_NOPROMPT; break; - case '?': XCOPY_wprintf(XCOPY_LoadMessage(STRING_HELP)); - rc = RC_HELP; - goto out; - default: - WINE_TRACE("Unhandled parameter '%s'\n", wine_dbgstr_w(word)); - XCOPY_wprintf(XCOPY_LoadMessage(STRING_INVPARM), word); - goto out; - } + if (last_error != ERROR_PATH_NOT_FOUND) + { + ret = FALSE; + break; } - word = next; - } - - /* Default the destination if not supplied */ - if (supplieddestination[0] == 0x00) - lstrcpyW(supplieddestination, wchr_dot); - - *pflags = flags; - rc = RC_OK; - - out: - free(cmdline); - return rc; -} - - -/* ========================================================================= - XCOPY_ProcessSourceParm - Takes the supplied source parameter, and - converts it into a stem and a filespec - ========================================================================= */ -static int XCOPY_ProcessSourceParm(WCHAR *suppliedsource, WCHAR *stem, - WCHAR *spec, DWORD flags) -{ - WCHAR actualsource[MAX_PATH]; - WCHAR *starPos; - WCHAR *questPos; - DWORD attribs; - - /* - * Validate the source, expanding to full path ensuring it exists - */ - if (GetFullPathNameW(suppliedsource, MAX_PATH, actualsource, NULL) == 0) { - WINE_FIXME("Unexpected failure expanding source path (%d)\n", GetLastError()); - return RC_INITERROR; - } - - /* If full names required, convert to using the full path */ - if (flags & OPT_FULL) { - lstrcpyW(suppliedsource, actualsource); - } - - /* - * Work out the stem of the source - */ - - /* If a directory is supplied, use that as-is (either fully or - partially qualified) - If a filename is supplied + a directory or drive path, use that - as-is - Otherwise - If no directory or path specified, add eg. C: - stem is Drive/Directory is bit up to last \ (or first :) - spec is bit after that */ - - starPos = wcschr(suppliedsource, '*'); - questPos = wcschr(suppliedsource, '?'); - if (starPos || questPos) { - attribs = 0x00; /* Ensures skips invalid or directory check below */ - } else { - attribs = GetFileAttributesW(actualsource); - } - if (attribs == INVALID_FILE_ATTRIBUTES) { - XCOPY_FailMessage(GetLastError()); - return RC_INITERROR; - - /* Directory: - stem should be exactly as supplied plus a '\', unless it was - eg. C: in which case no slash required */ - } else if (attribs & FILE_ATTRIBUTE_DIRECTORY) { - WCHAR lastChar; - - WINE_TRACE("Directory supplied\n"); - lstrcpyW(stem, suppliedsource); - lastChar = stem[lstrlenW(stem)-1]; - if (lastChar != '\\' && lastChar != ':') { - lstrcatW(stem, wchr_slash); + if (!(slash = wcsrchr(new_path,'\\')) && ! (slash = wcsrchr(new_path,'/'))) + { + ret = FALSE; + break; } - lstrcpyW(spec, wchr_star); - /* File or wildcard search: - stem should be: - Up to and including last slash if directory path supplied - If c:filename supplied, just the c: - Otherwise stem should be the current drive letter + ':' */ - } else { - WCHAR *lastDir; - - WINE_TRACE("Filename supplied\n"); - lastDir = wcsrchr(suppliedsource, '\\'); - - if (lastDir) { - lstrcpyW(stem, suppliedsource); - stem[(lastDir-suppliedsource) + 1] = 0x00; - lstrcpyW(spec, (lastDir+1)); - } else if (suppliedsource[1] == ':') { - lstrcpyW(stem, suppliedsource); - stem[2] = 0x00; - lstrcpyW(spec, suppliedsource+2); - } else { - WCHAR curdir[MAXSTRING]; - GetCurrentDirectoryW(sizeof(curdir)/sizeof(WCHAR), curdir); - stem[0] = curdir[0]; - stem[1] = curdir[1]; - stem[2] = 0x00; - lstrcpyW(spec, suppliedsource); + len = slash - new_path; + new_path[len] = 0; + if (!XCOPY_CreateDirectory(new_path)) + { + ret = FALSE; + break; } + new_path[len] = '\\'; } - - return RC_OK; + HeapFree(GetProcessHeap(),0,new_path); + return ret; } /* ========================================================================= - XCOPY_ProcessDestParm - Takes the supplied destination parameter, and - converts it into a stem - ========================================================================= */ -static int XCOPY_ProcessDestParm(WCHAR *supplieddestination, WCHAR *stem, WCHAR *spec, - WCHAR *srcspec, DWORD flags) -{ - WCHAR actualdestination[MAX_PATH]; - DWORD attribs; - BOOL isDir = FALSE; + * Process a single file from the /EXCLUDE: file list, building up a list + * of substrings to avoid copying + * Returns TRUE on any failure + * ========================================================================= */ +static BOOL XCOPY_ProcessExcludeFile(WCHAR* filename, WCHAR* endOfName) { - /* - * Validate the source, expanding to full path ensuring it exists - */ - if (GetFullPathNameW(supplieddestination, MAX_PATH, actualdestination, NULL) == 0) { - WINE_FIXME("Unexpected failure expanding source path (%d)\n", GetLastError()); - return RC_INITERROR; + WCHAR endChar = *endOfName; + WCHAR buffer[MAXSTRING]; + FILE *inFile = NULL; + const WCHAR readTextMode[] = {'r', 't', 0}; + + /* Null terminate the filename (temporarily updates the filename hence + parms not const) */ + *endOfName = 0x00; + + /* Open the file */ + inFile = _wfopen(filename, readTextMode); + if (inFile == NULL) { + XCOPY_wprintf(XCOPY_LoadMessage(STRING_OPENFAIL), filename); + *endOfName = endChar; + return TRUE; } - /* Destination is either a directory or a file */ - attribs = GetFileAttributesW(actualdestination); + /* Process line by line */ + while (fgetws(buffer, sizeof(buffer)/sizeof(WCHAR), inFile) != NULL) { + EXCLUDELIST *thisEntry; + int length = lstrlenW(buffer); - if (attribs == INVALID_FILE_ATTRIBUTES) { + /* Strip CRLF */ + buffer[length-1] = 0x00; - /* If /I supplied and wildcard copy, assume directory */ - /* Also if destination ends with backslash */ - if ((flags & OPT_ASSUMEDIR && - (wcschr(srcspec, '?') || wcschr(srcspec, '*'))) || - (supplieddestination[lstrlenW(supplieddestination)-1] == '\\')) { + /* If more than CRLF */ + if (length > 1) { + thisEntry = HeapAlloc(GetProcessHeap(), 0, sizeof(EXCLUDELIST)); + thisEntry->next = excludeList; + excludeList = thisEntry; + thisEntry->name = HeapAlloc(GetProcessHeap(), 0, + (length * sizeof(WCHAR))+1); + lstrcpyW(thisEntry->name, buffer); + CharUpperBuffW(thisEntry->name, length); + WINE_TRACE("Read line : '%s'\n", wine_dbgstr_w(thisEntry->name)); + } + } - isDir = TRUE; + /* See if EOF or error occurred */ + if (!feof(inFile)) { + XCOPY_wprintf(XCOPY_LoadMessage(STRING_READFAIL), filename); + *endOfName = endChar; + return TRUE; + } - } else { - DWORD count; - char answer[10] = ""; - WCHAR fileChar[2]; - WCHAR dirChar[2]; + /* Revert the input string to original form, and cleanup + return */ + *endOfName = endChar; + fclose(inFile); + return FALSE; +} - /* Read the F and D characters from the resource file */ - wcscpy(fileChar, XCOPY_LoadMessage(STRING_FILE_CHAR)); - wcscpy(dirChar, XCOPY_LoadMessage(STRING_DIR_CHAR)); +/* ========================================================================= + * Process the /EXCLUDE: file list, building up a list of substrings to + * avoid copying + * Returns TRUE on any failure + * ========================================================================= */ +static BOOL XCOPY_ProcessExcludeList(WCHAR* parms) { - while (answer[0] != fileChar[0] && answer[0] != dirChar[0]) { - XCOPY_wprintf(XCOPY_LoadMessage(STRING_QISDIR), supplieddestination); + WCHAR *filenameStart = parms; - ReadFile(GetStdHandle(STD_INPUT_HANDLE), answer, sizeof(answer), &count, NULL); - WINE_TRACE("User answer %c\n", answer[0]); + WINE_TRACE("/EXCLUDE parms: '%s'\n", wine_dbgstr_w(parms)); + excludeList = NULL; - answer[0] = toupper(answer[0]); - } + while (*parms && *parms != ' ' && *parms != '/') { - if (answer[0] == dirChar[0]) { - isDir = TRUE; - } else { - isDir = FALSE; + /* If found '+' then process the file found so far */ + if (*parms == '+') { + if (XCOPY_ProcessExcludeFile(filenameStart, parms)) { + return TRUE; } + filenameStart = parms+1; } - } else { - isDir = (attribs & FILE_ATTRIBUTE_DIRECTORY); + parms++; } - if (isDir) { - lstrcpyW(stem, actualdestination); - *spec = 0x00; - - /* Ensure ends with a '\' */ - if (stem[lstrlenW(stem)-1] != '\\') { - lstrcatW(stem, wchr_slash); + if (filenameStart != parms) { + if (XCOPY_ProcessExcludeFile(filenameStart, parms)) { + return TRUE; } - - } else { - WCHAR drive[MAX_PATH]; - WCHAR dir[MAX_PATH]; - WCHAR fname[MAX_PATH]; - WCHAR ext[MAX_PATH]; - _wsplitpath(actualdestination, drive, dir, fname, ext); - lstrcpyW(stem, drive); - lstrcatW(stem, dir); - lstrcpyW(spec, fname); - lstrcatW(spec, ext); } - return RC_OK; + + return FALSE; } /* ========================================================================= @@ -782,12 +536,12 @@ if (flags & OPT_QUIET) { /* Skip message */ } else if (flags & OPT_FULL) { - const WCHAR infostr[] = {'%', 's', ' ', '-', '>', ' ', - '%', 's', '\n', 0}; + const WCHAR infostr[] = {'%', '1', ' ', '-', '>', ' ', + '%', '2', '\n', 0}; XCOPY_wprintf(infostr, copyFrom, copyTo); } else { - const WCHAR infostr[] = {'%', 's', '\n', 0}; + const WCHAR infostr[] = {'%', '1', '\n', 0}; XCOPY_wprintf(infostr, copyFrom); } @@ -839,303 +593,536 @@ findres = TRUE; WINE_TRACE("Processing subdirs with spec: %s\n", wine_dbgstr_w(inputpath)); - h = FindFirstFileW(inputpath, finddata); - while (h != INVALID_HANDLE_VALUE && findres) { + h = FindFirstFileW(inputpath, finddata); + while (h != INVALID_HANDLE_VALUE && findres) { + + /* Only looking for dirs */ + if ((finddata->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && + (lstrcmpW(finddata->cFileName, wchr_dot) != 0) && + (lstrcmpW(finddata->cFileName, wchr_dotdot) != 0)) { + + WINE_TRACE("Handling subdir: %s\n", wine_dbgstr_w(finddata->cFileName)); + + /* Make up recursive information */ + lstrcpyW(inputpath, srcstem); + lstrcatW(inputpath, finddata->cFileName); + lstrcatW(inputpath, wchr_slash); + + lstrcpyW(outputpath, deststem); + if (*destspec == 0x00) { + lstrcatW(outputpath, finddata->cFileName); + + /* If /E is supplied, create the directory now */ + if ((flags & OPT_EMPTYDIR) && + !(flags & OPT_SIMULATE)) + XCOPY_CreateDirectory(outputpath); + + lstrcatW(outputpath, wchr_slash); + } + + XCOPY_DoCopy(inputpath, srcspec, outputpath, destspec, flags); + } + + /* Find next one */ + findres = FindNextFileW(h, finddata); + } + } + +cleanup: + + /* free up memory */ + HeapFree(GetProcessHeap(), 0, finddata); + HeapFree(GetProcessHeap(), 0, inputpath); + HeapFree(GetProcessHeap(), 0, outputpath); + + return ret; +} + + +/* ========================================================================= + XCOPY_ParseCommandLine - Parses the command line + ========================================================================= */ +static BOOL is_whitespace(WCHAR c) +{ + return c == ' ' || c == '\t'; +} + +static WCHAR *skip_whitespace(WCHAR *p) +{ + for (; *p && is_whitespace(*p); p++); + return p; +} + +/* Windows XCOPY uses a simplified command line parsing algorithm + that lacks the escaped-quote logic of build_argv(), because + literal double quotes are illegal in any of its arguments. + Example: 'XCOPY "c:\DIR A" "c:DIR B\"' is OK. */ +static int find_end_of_word(const WCHAR *word, WCHAR **end) +{ + BOOL in_quotes = 0; + const WCHAR *ptr = word; + for (;;) { + for (; *ptr != '\0' && *ptr != '"' && + (in_quotes || !is_whitespace(*ptr)); ptr++); + if (*ptr == '"') { + in_quotes = !in_quotes; + ptr++; + } + /* Odd number of double quotes is illegal for XCOPY */ + if (in_quotes && *ptr == '\0') + return RC_INITERROR; + if (*ptr == '\0' || (!in_quotes && is_whitespace(*ptr))) + break; + } + *end = (WCHAR*)ptr; + return RC_OK; +} + +/* Remove all double quotes from a word */ +static void strip_quotes(WCHAR *word, WCHAR **end) +{ + WCHAR *rp, *wp; + for (rp = word, wp = word; *rp != '\0'; rp++) { + if (*rp == '"') + continue; + if (wp < rp) + *wp = *rp; + wp++; + } + *wp = '\0'; + *end = wp; +} + +static int XCOPY_ParseCommandLine(WCHAR *suppliedsource, + WCHAR *supplieddestination, DWORD *pflags) +{ + const WCHAR EXCLUDE[] = {'E', 'X', 'C', 'L', 'U', 'D', 'E', ':', 0}; + DWORD flags = *pflags; + WCHAR *cmdline, *word, *end, *next; + int rc = RC_INITERROR; + + cmdline = _wcsdup(GetCommandLineW()); + if (cmdline == NULL) + return rc; + + /* Skip first arg, which is the program name */ + if ((rc = find_end_of_word(cmdline, &word)) != RC_OK) + goto out; + word = skip_whitespace(word); + + while (*word) + { + WCHAR first; + if ((rc = find_end_of_word(word, &end)) != RC_OK) + goto out; + + next = skip_whitespace(end); + first = word[0]; + *end = '\0'; + strip_quotes(word, &end); + WINE_TRACE("Processing Arg: '%s'\n", wine_dbgstr_w(word)); + + /* First non-switch parameter is source, second is destination */ + if (first != '/') { + if (suppliedsource[0] == 0x00) { + lstrcpyW(suppliedsource, word); + } else if (supplieddestination[0] == 0x00) { + lstrcpyW(supplieddestination, word); + } else { + XCOPY_wprintf(XCOPY_LoadMessage(STRING_INVPARMS)); + goto out; + } + } else { + /* Process all the switch options + Note: Windows docs say /P prompts when dest is created + but tests show it is done for each src file + regardless of the destination */ + switch (toupper(word[1])) { + case 'I': flags |= OPT_ASSUMEDIR; break; + case 'S': flags |= OPT_RECURSIVE; break; + case 'Q': flags |= OPT_QUIET; break; + case 'F': flags |= OPT_FULL; break; + case 'L': flags |= OPT_SIMULATE; break; + case 'W': flags |= OPT_PAUSE; break; + case 'T': flags |= OPT_NOCOPY | OPT_RECURSIVE; break; + case 'Y': flags |= OPT_NOPROMPT; break; + case 'N': flags |= OPT_SHORTNAME; break; + case 'U': flags |= OPT_MUSTEXIST; break; + case 'R': flags |= OPT_REPLACEREAD; break; + case 'H': flags |= OPT_COPYHIDSYS; break; + case 'C': flags |= OPT_IGNOREERRORS; break; + case 'P': flags |= OPT_SRCPROMPT; break; + case 'A': flags |= OPT_ARCHIVEONLY; break; + case 'M': flags |= OPT_ARCHIVEONLY | + OPT_REMOVEARCH; break; + + /* E can be /E or /EXCLUDE */ + case 'E': if (CompareStringW(LOCALE_USER_DEFAULT, + NORM_IGNORECASE | SORT_STRINGSORT, + &word[1], 8, + EXCLUDE, -1) == 2) { + if (XCOPY_ProcessExcludeList(&word[9])) { + XCOPY_FailMessage(ERROR_INVALID_PARAMETER); + goto out; + } else flags |= OPT_EXCLUDELIST; + } else flags |= OPT_EMPTYDIR | OPT_RECURSIVE; + break; + + /* D can be /D or /D: */ + case 'D': if (word[2]==':' && isdigit(word[3])) { + SYSTEMTIME st; + WCHAR *pos = &word[3]; + BOOL isError = FALSE; + memset(&st, 0x00, sizeof(st)); - /* Only looking for dirs */ - if ((finddata->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && - (lstrcmpW(finddata->cFileName, wchr_dot) != 0) && - (lstrcmpW(finddata->cFileName, wchr_dotdot) != 0)) { + /* Parse the arg : Month */ + st.wMonth = _wtol(pos); + while (*pos && isdigit(*pos)) pos++; + if (*pos++ != '-') isError = TRUE; - WINE_TRACE("Handling subdir: %s\n", wine_dbgstr_w(finddata->cFileName)); + /* Parse the arg : Day */ + if (!isError) { + st.wDay = _wtol(pos); + while (*pos && isdigit(*pos)) pos++; + if (*pos++ != '-') isError = TRUE; + } - /* Make up recursive information */ - lstrcpyW(inputpath, srcstem); - lstrcatW(inputpath, finddata->cFileName); - lstrcatW(inputpath, wchr_slash); + /* Parse the arg : Day */ + if (!isError) { + st.wYear = _wtol(pos); + while (*pos && isdigit(*pos)) pos++; + if (st.wYear < 100) st.wYear+=2000; + } - lstrcpyW(outputpath, deststem); - if (*destspec == 0x00) { - lstrcatW(outputpath, finddata->cFileName); + if (!isError && SystemTimeToFileTime(&st, &dateRange)) { + SYSTEMTIME st; + WCHAR datestring[32], timestring[32]; - /* If /E is supplied, create the directory now */ - if ((flags & OPT_EMPTYDIR) && - !(flags & OPT_SIMULATE)) - XCOPY_CreateDirectory(outputpath); + flags |= OPT_DATERANGE; - lstrcatW(outputpath, wchr_slash); - } + /* Debug info: */ + FileTimeToSystemTime (&dateRange, &st); + GetDateFormatW(0, DATE_SHORTDATE, &st, NULL, datestring, + sizeof(datestring)/sizeof(WCHAR)); + GetTimeFormatW(0, TIME_NOSECONDS, &st, + NULL, timestring, sizeof(timestring)/sizeof(WCHAR)); - XCOPY_DoCopy(inputpath, srcspec, outputpath, destspec, flags); - } + WINE_TRACE("Date being used is: %s %s\n", + wine_dbgstr_w(datestring), wine_dbgstr_w(timestring)); + } else { + XCOPY_FailMessage(ERROR_INVALID_PARAMETER); + goto out; + } + } else { + flags |= OPT_DATENEWER; + } + break; - /* Find next one */ - findres = FindNextFileW(h, finddata); + case '-': if (toupper(word[2])=='Y') + flags &= ~OPT_NOPROMPT; break; + case '?': XCOPY_wprintf(XCOPY_LoadMessage(STRING_HELP)); + rc = RC_HELP; + goto out; + default: + WINE_TRACE("Unhandled parameter '%s'\n", wine_dbgstr_w(word)); + XCOPY_wprintf(XCOPY_LoadMessage(STRING_INVPARM), word); + goto out; + } } + word = next; } -cleanup: + /* Default the destination if not supplied */ + if (supplieddestination[0] == 0x00) + lstrcpyW(supplieddestination, wchr_dot); - /* free up memory */ - HeapFree(GetProcessHeap(), 0, finddata); - HeapFree(GetProcessHeap(), 0, inputpath); - HeapFree(GetProcessHeap(), 0, outputpath); + *pflags = flags; + rc = RC_OK; - return ret; + out: + free(cmdline); + return rc; } + /* ========================================================================= - * Routine copied from cmd.exe md command - - * This works recursively. so creating dir1\dir2\dir3 will create dir1 and - * dir2 if they do not already exist. - * ========================================================================= */ -static BOOL XCOPY_CreateDirectory(const WCHAR* path) + XCOPY_ProcessSourceParm - Takes the supplied source parameter, and + converts it into a stem and a filespec + ========================================================================= */ +static int XCOPY_ProcessSourceParm(WCHAR *suppliedsource, WCHAR *stem, + WCHAR *spec, DWORD flags) { - int len; - WCHAR *new_path; - BOOL ret = TRUE; - - new_path = HeapAlloc(GetProcessHeap(),0, sizeof(WCHAR) * (lstrlenW(path)+1)); - lstrcpyW(new_path,path); + WCHAR actualsource[MAX_PATH]; + WCHAR *starPos; + WCHAR *questPos; + DWORD attribs; - while ((len = lstrlenW(new_path)) && new_path[len - 1] == '\\') - new_path[len - 1] = 0; + /* + * Validate the source, expanding to full path ensuring it exists + */ + if (GetFullPathNameW(suppliedsource, MAX_PATH, actualsource, NULL) == 0) { + WINE_FIXME("Unexpected failure expanding source path (%d)\n", GetLastError()); + return RC_INITERROR; + } - while (!CreateDirectoryW(new_path,NULL)) - { - WCHAR *slash; - DWORD last_error = GetLastError(); - if (last_error == ERROR_ALREADY_EXISTS) - break; + /* If full names required, convert to using the full path */ + if (flags & OPT_FULL) { + lstrcpyW(suppliedsource, actualsource); + } - if (last_error != ERROR_PATH_NOT_FOUND) - { - ret = FALSE; - break; - } + /* + * Work out the stem of the source + */ - if (!(slash = wcsrchr(new_path,'\\')) && ! (slash = wcsrchr(new_path,'/'))) - { - ret = FALSE; - break; - } + /* If a directory is supplied, use that as-is (either fully or + partially qualified) + If a filename is supplied + a directory or drive path, use that + as-is + Otherwise + If no directory or path specified, add eg. C: + stem is Drive/Directory is bit up to last \ (or first :) + spec is bit after that */ - len = slash - new_path; - new_path[len] = 0; - if (!XCOPY_CreateDirectory(new_path)) - { - ret = FALSE; - break; - } - new_path[len] = '\\'; + starPos = wcschr(suppliedsource, '*'); + questPos = wcschr(suppliedsource, '?'); + if (starPos || questPos) { + attribs = 0x00; /* Ensures skips invalid or directory check below */ + } else { + attribs = GetFileAttributesW(actualsource); } - HeapFree(GetProcessHeap(),0,new_path); - return ret; -} -/* ========================================================================= - * Process the /EXCLUDE: file list, building up a list of substrings to - * avoid copying - * Returns TRUE on any failure - * ========================================================================= */ -static BOOL XCOPY_ProcessExcludeList(WCHAR* parms) { + if (attribs == INVALID_FILE_ATTRIBUTES) { + XCOPY_FailMessage(GetLastError()); + return RC_INITERROR; - WCHAR *filenameStart = parms; + /* Directory: + stem should be exactly as supplied plus a '\', unless it was + eg. C: in which case no slash required */ + } else if (attribs & FILE_ATTRIBUTE_DIRECTORY) { + WCHAR lastChar; - WINE_TRACE("/EXCLUDE parms: '%s'\n", wine_dbgstr_w(parms)); - excludeList = NULL; + WINE_TRACE("Directory supplied\n"); + lstrcpyW(stem, suppliedsource); + lastChar = stem[lstrlenW(stem)-1]; + if (lastChar != '\\' && lastChar != ':') { + lstrcatW(stem, wchr_slash); + } + lstrcpyW(spec, wchr_star); - while (*parms && *parms != ' ' && *parms != '/') { + /* File or wildcard search: + stem should be: + Up to and including last slash if directory path supplied + If c:filename supplied, just the c: + Otherwise stem should be the current drive letter + ':' */ + } else { + WCHAR *lastDir; - /* If found '+' then process the file found so far */ - if (*parms == '+') { - if (XCOPY_ProcessExcludeFile(filenameStart, parms)) { - return TRUE; - } - filenameStart = parms+1; - } - parms++; - } + WINE_TRACE("Filename supplied\n"); + lastDir = wcsrchr(suppliedsource, '\\'); - if (filenameStart != parms) { - if (XCOPY_ProcessExcludeFile(filenameStart, parms)) { - return TRUE; + if (lastDir) { + lstrcpyW(stem, suppliedsource); + stem[(lastDir-suppliedsource) + 1] = 0x00; + lstrcpyW(spec, (lastDir+1)); + } else if (suppliedsource[1] == ':') { + lstrcpyW(stem, suppliedsource); + stem[2] = 0x00; + lstrcpyW(spec, suppliedsource+2); + } else { + WCHAR curdir[MAXSTRING]; + GetCurrentDirectoryW(sizeof(curdir)/sizeof(WCHAR), curdir); + stem[0] = curdir[0]; + stem[1] = curdir[1]; + stem[2] = 0x00; + lstrcpyW(spec, suppliedsource); } } - return FALSE; + return RC_OK; } /* ========================================================================= - * Process a single file from the /EXCLUDE: file list, building up a list - * of substrings to avoid copying - * Returns TRUE on any failure - * ========================================================================= */ -static BOOL XCOPY_ProcessExcludeFile(WCHAR* filename, WCHAR* endOfName) { + XCOPY_ProcessDestParm - Takes the supplied destination parameter, and + converts it into a stem + ========================================================================= */ +static int XCOPY_ProcessDestParm(WCHAR *supplieddestination, WCHAR *stem, WCHAR *spec, + WCHAR *srcspec, DWORD flags) +{ + WCHAR actualdestination[MAX_PATH]; + DWORD attribs; + BOOL isDir = FALSE; - WCHAR endChar = *endOfName; - WCHAR buffer[MAXSTRING]; - FILE *inFile = NULL; - const WCHAR readTextMode[] = {'r', 't', 0}; + /* + * Validate the source, expanding to full path ensuring it exists + */ + if (GetFullPathNameW(supplieddestination, MAX_PATH, actualdestination, NULL) == 0) { + WINE_FIXME("Unexpected failure expanding source path (%d)\n", GetLastError()); + return RC_INITERROR; + } - /* Null terminate the filename (temporarily updates the filename hence - parms not const) */ - *endOfName = 0x00; + /* Destination is either a directory or a file */ + attribs = GetFileAttributesW(actualdestination); - /* Open the file */ - inFile = _wfopen(filename, readTextMode); - if (inFile == NULL) { - XCOPY_wprintf(XCOPY_LoadMessage(STRING_OPENFAIL), filename); - *endOfName = endChar; - return TRUE; - } + if (attribs == INVALID_FILE_ATTRIBUTES) { - /* Process line by line */ - while (fgetws(buffer, sizeof(buffer)/sizeof(WCHAR), inFile) != NULL) { - EXCLUDELIST *thisEntry; - int length = lstrlenW(buffer); + /* If /I supplied and wildcard copy, assume directory */ + /* Also if destination ends with backslash */ + if ((flags & OPT_ASSUMEDIR && + (wcschr(srcspec, '?') || wcschr(srcspec, '*'))) || + (supplieddestination[lstrlenW(supplieddestination)-1] == '\\')) { - /* Strip CRLF */ - buffer[length-1] = 0x00; + isDir = TRUE; - /* If more than CRLF */ - if (length > 1) { - thisEntry = HeapAlloc(GetProcessHeap(), 0, sizeof(EXCLUDELIST)); - thisEntry->next = excludeList; - excludeList = thisEntry; - thisEntry->name = HeapAlloc(GetProcessHeap(), 0, - (length * sizeof(WCHAR))+1); - lstrcpyW(thisEntry->name, buffer); - CharUpperBuffW(thisEntry->name, length); - WINE_TRACE("Read line : '%s'\n", wine_dbgstr_w(thisEntry->name)); - } - } + } else { + DWORD count; + char answer[10] = ""; + WCHAR fileChar[2]; + WCHAR dirChar[2]; - /* See if EOF or error occurred */ - if (!feof(inFile)) { - XCOPY_wprintf(XCOPY_LoadMessage(STRING_READFAIL), filename); - *endOfName = endChar; - return TRUE; - } + /* Read the F and D characters from the resource file */ + wcscpy(fileChar, XCOPY_LoadMessage(STRING_FILE_CHAR)); + wcscpy(dirChar, XCOPY_LoadMessage(STRING_DIR_CHAR)); - /* Revert the input string to original form, and cleanup + return */ - *endOfName = endChar; - fclose(inFile); - return FALSE; -} + while (answer[0] != fileChar[0] && answer[0] != dirChar[0]) { + XCOPY_wprintf(XCOPY_LoadMessage(STRING_QISDIR), supplieddestination); -/* ========================================================================= - * Load a string from the resource file, handling any error - * Returns string retrieved from resource file - * ========================================================================= */ -static WCHAR *XCOPY_LoadMessage(UINT id) { - static WCHAR msg[MAXSTRING]; - const WCHAR failedMsg[] = {'F', 'a', 'i', 'l', 'e', 'd', '!', 0}; + ReadFile(GetStdHandle(STD_INPUT_HANDLE), answer, sizeof(answer), &count, NULL); + WINE_TRACE("User answer %c\n", answer[0]); - if (!LoadStringW(GetModuleHandleW(NULL), id, msg, sizeof(msg)/sizeof(WCHAR))) { - WINE_FIXME("LoadString failed with %d\n", GetLastError()); - lstrcpyW(msg, failedMsg); + answer[0] = toupper(answer[0]); + } + + if (answer[0] == dirChar[0]) { + isDir = TRUE; + } else { + isDir = FALSE; + } + } + } else { + isDir = (attribs & FILE_ATTRIBUTE_DIRECTORY); } - return msg; -} -/* ========================================================================= - * Load a string for a system error and writes it to the screen - * Returns string retrieved from resource file - * ========================================================================= */ -static void XCOPY_FailMessage(DWORD err) { - LPWSTR lpMsgBuf; - int status; + if (isDir) { + lstrcpyW(stem, actualdestination); + *spec = 0x00; + + /* Ensure ends with a '\' */ + if (stem[lstrlenW(stem)-1] != '\\') { + lstrcatW(stem, wchr_slash); + } - status = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | - FORMAT_MESSAGE_FROM_SYSTEM, - NULL, err, 0, - (LPWSTR) &lpMsgBuf, 0, NULL); - if (!status) { - WINE_FIXME("FIXME: Cannot display message for error %d, status %d\n", - err, GetLastError()); } else { - const WCHAR infostr[] = {'%', 's', '\n', 0}; - XCOPY_wprintf(infostr, lpMsgBuf); - LocalFree ((HLOCAL)lpMsgBuf); + WCHAR drive[MAX_PATH]; + WCHAR dir[MAX_PATH]; + WCHAR fname[MAX_PATH]; + WCHAR ext[MAX_PATH]; + _wsplitpath(actualdestination, drive, dir, fname, ext); + lstrcpyW(stem, drive); + lstrcatW(stem, dir); + lstrcpyW(spec, fname); + lstrcatW(spec, ext); } + return RC_OK; } + /* ========================================================================= - * Output a formatted unicode string. Ideally this will go to the console - * and hence required WriteConsoleW to output it, however if file i/o is - * redirected, it needs to be WriteFile'd using OEM (not ANSI) format - * ========================================================================= */ -int XCOPY_wprintf(const WCHAR *format, ...) { + main - Main entrypoint for the xcopy command - static WCHAR *output_bufW = NULL; - static char *output_bufA = NULL; - static BOOL toConsole = TRUE; - static BOOL traceOutput = FALSE; -#define MAX_WRITECONSOLE_SIZE 65535 + Processes the args, and drives the actual copying + ========================================================================= */ +int wmain (int argc, WCHAR *argvW[]) +{ + int rc = 0; + WCHAR suppliedsource[MAX_PATH] = {0}; /* As supplied on the cmd line */ + WCHAR supplieddestination[MAX_PATH] = {0}; + WCHAR sourcestem[MAX_PATH] = {0}; /* Stem of source */ + WCHAR sourcespec[MAX_PATH] = {0}; /* Filespec of source */ + WCHAR destinationstem[MAX_PATH] = {0}; /* Stem of destination */ + WCHAR destinationspec[MAX_PATH] = {0}; /* Filespec of destination */ + WCHAR copyCmd[MAXSTRING]; /* COPYCMD env var */ + DWORD flags = 0; /* Option flags */ + const WCHAR PROMPTSTR1[] = {'/', 'Y', 0}; + const WCHAR PROMPTSTR2[] = {'/', 'y', 0}; + const WCHAR COPYCMD[] = {'C', 'O', 'P', 'Y', 'C', 'M', 'D', 0}; - va_list parms; - DWORD nOut; - int len; - DWORD res = 0; + /* Preinitialize flags based on COPYCMD */ + if (GetEnvironmentVariableW(COPYCMD, copyCmd, MAXSTRING)) { + if (wcsstr(copyCmd, PROMPTSTR1) != NULL || + wcsstr(copyCmd, PROMPTSTR2) != NULL) { + flags |= OPT_NOPROMPT; + } + } + + /* FIXME: On UNIX, files starting with a '.' are treated as hidden under + wine, but on windows these can be normal files. At least one installer + uses files such as .packlist and (validly) expects them to be copied. + Under wine, if we do not copy hidden files by default then they get + lose */ + flags |= OPT_COPYHIDSYS; /* - * Allocate buffer to use when writing to console - * Note: Not freed - memory will be allocated once and released when - * xcopy ends + * Parse the command line */ - - if (!output_bufW) output_bufW = HeapAlloc(GetProcessHeap(), 0, - MAX_WRITECONSOLE_SIZE); - if (!output_bufW) { - WINE_FIXME("Out of memory - could not allocate 2 x 64K buffers\n"); - return 0; + if ((rc = XCOPY_ParseCommandLine(suppliedsource, supplieddestination, + &flags)) != RC_OK) { + if (rc == RC_HELP) + return RC_OK; + else + return rc; } - va_start(parms, format); - len = vsnprintfW(output_bufW, MAX_WRITECONSOLE_SIZE/sizeof(WCHAR), format, parms); - va_end(parms); - if (len < 0) { - WINE_FIXME("String too long.\n"); - return 0; - } + /* Trace out the supplied information */ + WINE_TRACE("Supplied parameters:\n"); + WINE_TRACE("Source : '%s'\n", wine_dbgstr_w(suppliedsource)); + WINE_TRACE("Destination : '%s'\n", wine_dbgstr_w(supplieddestination)); - /* Try to write as unicode whenever we think it's a console */ - if (toConsole) { - res = WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), - output_bufW, len, &nOut, NULL); - } + /* Extract required information from source specification */ + rc = XCOPY_ProcessSourceParm(suppliedsource, sourcestem, sourcespec, flags); + if (rc != RC_OK) return rc; - /* If writing to console has failed (ever) we assume it's file - i/o so convert to OEM codepage and output */ - if (!res) { - BOOL usedDefaultChar = FALSE; - DWORD convertedChars; + /* Extract required information from destination specification */ + rc = XCOPY_ProcessDestParm(supplieddestination, destinationstem, + destinationspec, sourcespec, flags); + if (rc != RC_OK) return rc; - toConsole = FALSE; + /* Trace out the resulting information */ + WINE_TRACE("Resolved parameters:\n"); + WINE_TRACE("Source Stem : '%s'\n", wine_dbgstr_w(sourcestem)); + WINE_TRACE("Source Spec : '%s'\n", wine_dbgstr_w(sourcespec)); + WINE_TRACE("Dest Stem : '%s'\n", wine_dbgstr_w(destinationstem)); + WINE_TRACE("Dest Spec : '%s'\n", wine_dbgstr_w(destinationspec)); - /* - * Allocate buffer to use when writing to file. Not freed, as above - */ - if (!output_bufA) output_bufA = HeapAlloc(GetProcessHeap(), 0, - MAX_WRITECONSOLE_SIZE); - if (!output_bufA) { - WINE_FIXME("Out of memory - could not allocate 2 x 64K buffers\n"); - return 0; - } + /* Pause if necessary */ + if (flags & OPT_PAUSE) { + DWORD count; + char pausestr[10]; - /* Convert to OEM, then output */ - convertedChars = WideCharToMultiByte(GetConsoleOutputCP(), 0, output_bufW, - len, output_bufA, MAX_WRITECONSOLE_SIZE, - "?", &usedDefaultChar); - WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), output_bufA, convertedChars, - &nOut, FALSE); + XCOPY_wprintf(XCOPY_LoadMessage(STRING_PAUSE)); + ReadFile (GetStdHandle(STD_INPUT_HANDLE), pausestr, sizeof(pausestr), + &count, NULL); } - /* Trace whether screen or console */ - if (!traceOutput) { - WINE_TRACE("Writing to console? (%d)\n", toConsole); - traceOutput = TRUE; + /* Now do the hard work... */ + rc = XCOPY_DoCopy(sourcestem, sourcespec, + destinationstem, destinationspec, + flags); + + /* Clear up exclude list allocated memory */ + while (excludeList) { + EXCLUDELIST *pos = excludeList; + excludeList = excludeList -> next; + HeapFree(GetProcessHeap(), 0, pos->name); + HeapFree(GetProcessHeap(), 0, pos); } - return nOut; + + /* Finished - print trailer and exit */ + if (flags & OPT_SIMULATE) { + XCOPY_wprintf(XCOPY_LoadMessage(STRING_SIMCOPY), filesCopied); + } else if (!(flags & OPT_NOCOPY)) { + XCOPY_wprintf(XCOPY_LoadMessage(STRING_COPY), filesCopied); + } + if (rc == RC_OK && filesCopied == 0) rc = RC_NOFILES; + return rc; + } diff -Nru wine1.3-1.3.30/programs/xcopy/xcopy.rc wine1.3-1.3.31/programs/xcopy/xcopy.rc --- wine1.3-1.3.30/programs/xcopy/xcopy.rc 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/programs/xcopy/xcopy.rc 2011-10-21 18:38:36.000000000 +0000 @@ -25,18 +25,18 @@ STRINGTABLE { STRING_INVPARMS, "Invalid number of parameters - Use xcopy /? for help\n" - STRING_INVPARM, "Invalid parameter '%s' - Use xcopy /? for help\n" + STRING_INVPARM, "Invalid parameter '%1' - Use xcopy /? for help\n" STRING_PAUSE, "Press to begin copying\n" - STRING_SIMCOPY, "%d file(s) would be copied\n" - STRING_COPY, "%d file(s) copied\n" - STRING_QISDIR, "Is '%s' a filename or directory\n\ + STRING_SIMCOPY, "%1!d! file(s) would be copied\n" + STRING_COPY, "%1!d! file(s) copied\n" + STRING_QISDIR, "Is '%1' a filename or directory\n\ on the target?\n\ (F - File, D - Directory)\n" - STRING_SRCPROMPT,"%s? (Yes|No)\n" - STRING_OVERWRITE,"Overwrite %s? (Yes|No|All)\n" - STRING_COPYFAIL, "Copying of '%s' to '%s' failed with r/c %d\n" - STRING_OPENFAIL, "Failed to open '%s'\n" - STRING_READFAIL, "Failed during reading of '%s'\n" + STRING_SRCPROMPT,"%1? (Yes|No)\n" + STRING_OVERWRITE,"Overwrite %1? (Yes|No|All)\n" + STRING_COPYFAIL, "Copying of '%1' to '%2' failed with r/c %3!d!\n" + STRING_OPENFAIL, "Failed to open '%1'\n" + STRING_READFAIL, "Failed during reading of '%1'\n" STRING_YES_CHAR, "#msgctxt#Yes key#Y" STRING_NO_CHAR, "#msgctxt#No key#N" STRING_ALL_CHAR, "#msgctxt#All key#A" diff -Nru wine1.3-1.3.30/server/fd.c wine1.3-1.3.31/server/fd.c --- wine1.3-1.3.30/server/fd.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/server/fd.c 2011-10-21 18:38:36.000000000 +0000 @@ -1321,9 +1321,9 @@ release_object( lock ); return NULL; } - list_add_head( &fd->locks, &lock->fd_entry ); - list_add_head( &fd->inode->locks, &lock->inode_entry ); - list_add_head( &lock->process->locks, &lock->proc_entry ); + list_add_tail( &fd->locks, &lock->fd_entry ); + list_add_tail( &fd->inode->locks, &lock->inode_entry ); + list_add_tail( &lock->process->locks, &lock->proc_entry ); return lock; } @@ -1395,7 +1395,7 @@ { struct file_lock *lock = LIST_ENTRY( ptr, struct file_lock, inode_entry ); if (!lock_overlaps( lock, start, end )) continue; - if (lock->shared && shared) continue; + if (shared && (lock->shared || lock->fd == fd)) continue; /* found one */ if (!wait) { diff -Nru wine1.3-1.3.30/server/named_pipe.c wine1.3-1.3.31/server/named_pipe.c --- wine1.3-1.3.30/server/named_pipe.c 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/server/named_pipe.c 2011-10-21 18:38:36.000000000 +0000 @@ -950,7 +950,8 @@ struct unicode_str name; struct directory *root = NULL; - if (!req->sharing || (req->sharing & ~(FILE_SHARE_READ | FILE_SHARE_WRITE))) + if (!req->sharing || (req->sharing & ~(FILE_SHARE_READ | FILE_SHARE_WRITE)) || + (!(req->flags & NAMED_PIPE_MESSAGE_STREAM_WRITE) && (req->flags & NAMED_PIPE_MESSAGE_STREAM_READ))) { set_error( STATUS_INVALID_PARAMETER ); return; diff -Nru wine1.3-1.3.30/VERSION wine1.3-1.3.31/VERSION --- wine1.3-1.3.30/VERSION 2011-10-10 17:58:48.000000000 +0000 +++ wine1.3-1.3.31/VERSION 2011-10-21 18:38:36.000000000 +0000 @@ -1 +1 @@ -Wine version 1.3.30 +Wine version 1.3.31