This is release 0.9.34 of Wine, a free implementation of Windows on Unix.

What's new in this release:
  - Support for Xcursor.
  - A range of fixes for various installers.
  - New builtin xcopy tool.
  - The usual assortment of Direct3D fixes.
  - Lots of bug fixes.

Because of lags created by using mirrors, this message may reach you
before the release is available at the public sites. The sources will
be available from the following locations:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-0.9.34.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-0.9.34.tar.bz2

Binary packages for various distributions will be available from:

  http://www.winehq.org/site/download

You will find documentation on

  http://www.winehq.org/site/documentation

You can also get the current source directly from the git or CVS
repositories. Check respectively http://www.winehq.org/site/git or
http://www.winehq.org/site/cvs for details.

If you fix something, please submit a patch; instructions on how to do
this can be found at http://www.winehq.org/site/sending_patches

Wine is available thanks to the work of many people. See the file
AUTHORS in the distribution for the complete list.

----------------------------------------------------------------

Changes since 0.9.33:

A C Hurst (1):
      wined3d: Fix struct size calculation in EnumTextureFormats.

Alessandro Pignotti (3):
      dplayx: Check for null pointer dereference in DP_FindPlayer.
      dplayx: Corrected the way nameserver initializes the sessiondesc structure on broadcast request reply.
      dplayx: Fixes the order of GUID initialization and storage.

Alexander Farber (1):
      cmd: Enlarge max. length of PATH variable.

Alexandre Julliard (38):
      dbghelp: Avoid some warnings on Solaris.
      wldap32: Prefix option defines with WLDAP32 to avoid conflicts with system headers.
      ntdll: Remove unnecessary pointers in fstab parsing on Solaris.
      server: Use the common pattern for async I/O parameters in named pipe requests.
      server: Grab the owner object of an APC while the APC is executing.
      server: Make struct async into a real object, to keep it around while the APC is running.
      server: Return the status from an async I/O APC call to the server.
      server: Add an async_data_t structure to store parameters for async I/O requests.
      setupapi: Add support for .inf files in utf-8 format.
      server: Add support for storing an event to signal upon async I/O completion.
      server: Notify the async object when the APC call completed.
      server: Move the signalling of the completion event for NtRead/WriteFile to the server.
      ws2_32: Move the signalling of the completion event to the server.
      server: Move the signalling of the named pipe completion event to the server.
      server: Use a standard async I/O event to signal directory changes.
      winex11.drv: Relax the bitmap depth check in CreateBitmap to accept some compatible formats.
      server: Add an open_file() function to the object operations.
      server: Implemented the open_file method for named pipe and mailslot devices.
      server: Create the named pipe and mailslot devices under \Device.
      server: Don't enforce named pipes path format in ntdll, only in the server.
      server: Don't enforce mailslots path format in ntdll, only in the server.
      ntdll: Better support for NT path names in wine_nt_to_unix_file_name.
      server: Implement the open_file method for mailslots.
      server: Implement the open_file method for named pipes.
      server: Print the callback function in the APC_ASYNC_IO trace.
      kernel32: Fixed timeout calculation in WaitNamedPipe.
      ntdll: Avoid overwriting the result of the async I/O callback in NtFsControlFile.
      server: A named pipe wait can be satisfied by an idle pipe server too.
      server: Always return STATUS_PENDING when an async I/O operation has been queued.
      kernel32: Don't use the reserved argument of the APC routine callback.
      server: Add support for queuing a user APC upon async I/O completion.
      server: Remove the return value of the flush() method, it's not used.
      Makefile: More portable invocation of ctags/etags.
      ntdll: Ignore failure to open current directory, it's broken on Mac OS X.
      kernel32: Make default behavior more consistent when AeDebug key is not present.
      libwine: Hack to work around the Solaris dlopen() brain damage.
      kernel32: Better default for dwActiveProcessorMask in GetSystemInfo.
      Makefile: Try to force the makefile to be rebuilt with non-GNU make too.

Andrew Riedi (2):
      winex11.drv: Add Xcursor support for 32 bit cursors.
      dsound: Change a couple DPRINTF's to TRACE's

Andrew Talbot (45):
      comcat: Declare some variables static and const.
      comctl32: Replace inline static with static inline.
      advapi32: Replace inline static with static inline.
      kernel32: Replace inline static with static inline.
      ntdll: Replace inline static with static inline.
      user32: Replace inline static with static inline.
      wined3d: Replace inline static with static inline.
      winex11.drv: Replace inline static with static inline.
      server: Replace inline static with static inline.
      winebuild: Replace inline static with static inline.
      wineps.drv: Replace inline static with static inline.
      ddraw: Replace inline static with static inline.
      dsound: Replace inline static with static inline.
      msvcrt: Replace inline static with static inline.
      dinput: Replace inline static with static inline.
      setupapi: Replace inline static with static inline.
      gdi32: Replace inline static with static inline.
      comctl32: Constify some variables.
      dbghelp: Replace inline static with static inline.
      kernel32/tests: Replace inline static with static inline.
      mlang/tests: Replace inline static with static inline.
      msg711.acm: Replace inline static with static inline.
      comctl32: Constify some variables.
      msi: Replace inline static with static inline.
      shell32: Replace inline static with static inline.
      msvcrt/tests: Replace inline static with static inline.
      ole32: Replace inline static with static inline.
      oleaut32: Replace inline static with static inline.
      rpcrt4: Replace inline static with static inline.
      comctl32: Constify some variables.
      comctl32: Constify some variables.
      include: Replace inline static with static inline.
      shlwapi: Replace inline static with static inline.
      wintab32: Replace inline static with static inline.
      wininet: Replace inline static with static inline.
      winmm: Replace inline static with static inline.
      ws2_32: Replace inline static with static inline.
      comctl32: Constify some variables.
      winelib: Replace inline static with static inline.
      loader: Replace inline static with static inline.
      secur32: Replace const pointer parameters with correct pointers to const.
      comctl32: Constify some variables.
      comctl32: Constify some variables.
      comctl32: Constify some variables.
      comctl32: Cast-qual warnings fix.

Aric Stewart (3):
      ole32: Rework storage with blockfiles to properly use ILockBytes interfaces.
      Revert 7c35db07c35db0... msiexec: Use CommandLineToArgvW instead of process_args to reduce code duplication.
      imm32: Change the default IME window to better reflect applications request.

Chris Robinson (15):
      quartz: Hold a reference on a filter while sending data to it.
      quartz: Release objects when pins fail to connect.
      quartz: Disconnect pins when their filter is removed.
      quartz: Release objects when they're no longer needed.
      quartz: Don't delete critical sections before the filter's pins are done using them.
      quartz: Don't redundantly set waveparser output pin data before it's created.
      quartz: Fully disconnect the AsyncReader when released.
      quartz: Make DSoundRender_Run start the playback buffer.
      quartz: Implement volume and pan control for DSoundRenderer.
      quartz: Store the current reference time with the PullPin.
      quartz: Propogate transform filter errors upstream.
      quartz: Return proper CLSID for parser filters.
      quartz: Protect DSound buffer creation with a critical section lock.
      winemp3: Clear stream buffers when the stream is reset.
      quartz: Add filters using their names.

Clinton Stimpson (1):
      riched20: Fix text replacement with text limit.

Damjan Jovanovic (2):
      ws2_32: In some cases send should block until the entire buffer is sent.
      ws2_32: WSASendTo should always re-enable the FD_WRITE event.

Detlef Riekenberg (7):
      libs/wine: Use xstrdup to avoid duplicate code.
      kernel32/tests: DuplicateTokenEx is not present on all platforms.
      advapi32/tests: DuplicateTokenEx is not present on all platforms.
      localspl/tests: Rename hXcv for special tests.
      localspl/tests: Open the default Xcv-channel only once.
      localspl/tests: Fix copy+paste bug.
      winspool.drv: Do not cache the port names.

Dmitry Timoshkov (11):
      winex11.drv: In the case requested glyphs do not present in the font fail gracefully instead of asserting.
      msvcrt: Print FIXME on platforms where _except_handler3 is a stub.
      user32: Avoid compiler specific code in the DefWindowProc test.
      ole32: Move the storage signatures to the appropriate file that uses them.
      riched20: Add a test that shows that under Win9x RichEdit20W windows are not unicode, but always expect to see unicode input.
      user32: WM_GETTEXT message converters have to 0-terminate output buffer if there is enough space even if there is no text to convert.
      riched20: Split unicode and ansi window procs, handle messages depending on the unicode flag.
      gdi32: Implement GdiGetCodePage.
      gdi32: Make the EMF driver return sane NUMCOLORS value.
      include: Add some API prototypes to appropriate header files, fix some prototypes.
      shlwapi: Match shlwapi wrappers to MSDN descriptions.

Erich Hoover (1):
      wined3d: Fix LockRect memory location calculation for WINED3DFMT_DXT*.

Fabian Bieler (8):
      wined3d: Implement linear fog with pixel shader.
      wined3d: Remove fog coordinate clamping in the vertex shader.
      d3d9/tests: Add test for fog with shader.
      wined3d: Implemented bump map transform for texbem in GLSL with native signed textures.
      wined3d: Fix glsl texbem instruction for projective textures.
      wined3d: Fix arb texbem instruction for projective textures.
      d3d9/tests: Add test for texbem instruction.
      wined3d: Implement support for projective textures in ps 2.0 and later.

Felix Nawothnig (3):
      wined3d: Only disable GL_TEXTURE_CUBE_MAP_ARB if supported.
      wined3d: Fix broken ERR() message.
      wined3d: Use GL_TEXTURE_2D for dummy textures.

Francois Gouget (5):
      setupapi: Fix InstallCatalog()'s calling convention.
      netapi32/tests: Add a missing '\n' to a trace().
      gdi32: Remove a space before '\n' in a trace.
      cmd: Spelling fix.
      Remove unneeded checks on the GetModuleHandle() return value for cases where we are linked with the dll.

Gabriel Gambetta (1):
      ntdll: Add Uruguayan Summer Time timezone.

Gerald Pfeifer (1):
      configure: Add -lXau to NASLIBS if applicable to obtain XauGetBestAuthByAddr and XauDisposeAuth.

Hagop Hagopian (2):
      comctl32: tab: Added message sequence tests for the tab control.
      comctl32: tab: Minor bug fixes in the curSel and curFocus getters and setters.

Hans Leidekker (9):
      wine.inf: Register an 'install' verb with the shell for .inf files.
      wine.inf: Open/print .rtf files with wordpad.
      wine.inf: Add cabinet.dll to the list of fake dlls.
      setupapi: Add a stub implementation for InstallCatalog.
      userenv: Add stub implementations for {Register, Unregister}GPNotification.
      mpr: Fix buffer size calculation in WNetGetUniversalNameW.
      mpr: Add a stub implementation for WNetGetUniversalNameA.
      ntdll: Fully initialize the security descriptor returned from RtlSelfRelativeToAbsoluteSD.
      shell32: Add a stub implementation for SHPathPrepareForWrite{A, W}.

Huw Davies (3):
      user32: Use a window's icon in preference to its class icon.
      winex11.drv: Rename a local variable to avoid confusion with a global.
      winex11.drv: Delete the tile pixmap whenever the drawable is changed.

Jacek Caban (9):
      spoolss: Added RevertToPrinterSelf stub implementation.
      advapi: Constify argument of StartServiceCtrlDispatcher[AW] functions.
      advapi: Improve SetEntriesInAclW stub.
      spoolsv: Added spoolsv.exe.
      wine.inf: Register Spooler service.
      wine.inf: Code clean up.
      mshtml: Added DispHTMLDocument dispinterface declaration.
      mshtml: Added DIID_DispHTMLDocument to QueryInterface.
      winnt.h: Added activation context structures declarations.

James Hawkins (8):
      setupapi: Add missing SetupCopyOEMInf flags.
      setupapi: Add several tests for SetupCopyOEMInf, with fixes so the tests don't crash.
      setupapi: Handle the SP_COPY_NOOVERWRITE flag.
      setupapi: Don't allow relative paths in SetupCopyOEMInf.
      setupapi: The Inf file should be copied regardless of the destination buffer, with tests.
      setupapi: Correct the Inf output position.
      setupapi: SetLastError to ERROR_SUCCESS on success.
      msi: Load the folder property if available and requested.

Jan Zerebecki (1):
      wined3d: Print lastpixel state fixme only once.

Jason Edmeades (18):
      cmd.exe: Add support for DIR /D.
      cmd.exe: Add support for dir /-C.
      cmd.exe: Add support for DIRCMD and sequential qualifier processing.
      cmd.exe: Add support for dir /A filtering.
      cmd.exe: Add errorlevel support for DIR command.
      cmd.exe: Only write 'bytes free' message if a file was displayed during dir.
      Basic implementation of xcopy.
      xcopy: Add support for /W (pause).
      xcopy: Add support for /T (no copy).
      xcopy: Prompt when overwriting files, add /Y and /-Y support.
      xcopy: Add support for COPYCMD override and fix /-y.
      xcopy: Add support for /N (shortname copy).
      xcopy: Add support for /U (target must exist).
      xcopy: Add support for /R (Replace read only files).
      xcopy: Add support for /H (Hidden/System).
      xcopy: Add support for /C (Continue if errors).
      xcopy: Add support for /P (Prompt).
      xcopy: Add support for xcopy /A and /M (archive copies).

Joris Huizer (2):
      amstream: sign-compare fixes.
      advpack: sign-compare fix.

Juan Lang (2):
      advapi32: Implement RegGetKeySecurity with NtQuerySecurityObject.
      wine.inf: Move fake rundll32 to the system directory.

Kai Blin (13):
      netapi32: Downgrade a FIXME and an ERR to a trace to not clutter test output on handled error conditions.
      netapi32: fix a comment.
      netapi32: Get rid of an ugly macro definition only used once.
      netapi32: Downgrade another WARN and ERR to a TRACE.
      netapi32: Remove another macro, replace by more readable functions.
      netapi32: Downgrade more ERRs to TRACEs.
      netapi32/tests: Use skip when skipping tests.
      netapi32: Add test for adding/deleting users.
      netapi32/test: Test the username and password length limits.
      netapi32: Implement NetUserAdd with a dummy user database.
      netapi32: Implement NetUserDel.
      netapi32: Implement NetUserChangePassword.
      netapi32/tests: Make NetGetUserInfo checks language independent.

Kanit Therdsteerasukdi (1):
      comctl32: datetime: Reject invalid flags in DTM_SETSYSTEMTIME.

Ken Thomases (1):
      Revert "gdi32: Disable the freetype mmap sharing on Mac OS.".

Laurent Vromman (1):
      gdi32: WidenPath partial implementation.

Louis Lenders (4):
      kernel32: Print a fixme only once.
      shell32: Define avi resource #163.
      kernel32: Add stub for AttachConsole.
      ntdll: Add NtAreMappedFilesTheSame stub.

Marcin Grześkowiak (1):
      user32: Use charset of currently selected font in DrawTextExA.

Michael Stefaniuc (1):
      quartz: Fix typo that produced an empty if-statement.

Mikołaj Zalewski (14):
      browseui: Remove a test with a wrong pointer.
      shell32/explorer: Support different structure sizes in Shell_NotifyIcon.
      shell32: Don't free user supplied data in Shell_NotifyIcon if GetIconInfo failed.
      shell32: Add some more notify icon defines.
      user32: tests: Using DefWindowProcA with RegisterClassW works under Windows.
      comctl32: CreateToolbarEx should send TB_SETBITMAPSIZE twice.
      comctl32: toolbar: The default button size is 16x16.
      comctl32: toolbar: Test standard buttons size.
      comctl32: toolbar: We shouldn't try to resize standard bitmaps.
      shell32: autocomplete: Don't use sel uninitialized.
      user32: combobox: The text area height should be font_height+4.
      wrc: Add HTML resources support to wrc --verify-translation.
      wrc: Change the format of the output of "wrc --verify-translation".
      comctl32: toolbar: TB_HIDEBUTTON and TB_MOVEBUTTON shouldn't force a recalc.

Nicolas Delcros (1):
      gdi32: Don't write a metafile record for escapes that require output.

Paul Vriens (18):
      kernel32/tests: Use skip.
      wininet/ftp: Simplify FTP_FtpGetFileW a bit.
      wininet/ftp: Move a definition in FTP_FtpFindFirstFileW (Coverity).
      wininet/tests: Expose a problem with FtpGetFile.
      wininet/ftp: Remove unneeded check.
      wininet/ftp: Fix potential memory leak.
      netapi32/tests: Use LoadLibrary where needed and skip.
      shlwapi/path: Proper use of GetProcessHeap().
      oleaut32/tests: Use skip.
      kernel32/profile: Rename a test.
      kernel32/profile: Move GetPrivateProfileSectionA to its own test.
      kernel32/profile: Add a few NULL checks (Coverity).
      kernel32/profile: Some parameter tests for GetPrivateProfileSectionA.
      advapi32/tests: Use skip.
      advapi32/tests: Move check for ERROR_CALL_NOT_IMPLEMENTED to the first call.
      advapi32/tests: Add check to see if LookupAccountNameA is implemented.
      advapi32/tests: Add check to see if ImpersonateSelf is implemented.
      advapi32/tests: Add check to see if SetEntriesInAclW is implemented.

Phil Costin (1):
      wined3d: Ensure all states affected by a change in render_offscreen are marked dirty in ActivateContext.

Piotr Caban (2):
      comctl32: Fixed TreeView_EndEditLabelNow crash.
      comctl32: Set label width after editting.

Rob Shearman (32):
      ole32: Add warnings for failures in the structured storage stream functions.
      ole32: Implement TYMED_FILE for STGMEDIUM marshaling and unmarshaling.
      include: Fix the byte-order in the definition of the USER_MARSHAL_CB_SIGNATURE macro.
      oleaut32: Add some tests for user marshaling a VT_UNKNOWN variant.
      oleaut32: Make the VARIANT_UserUnmarshal tests work on XP.
      oleaut32: Clear the input pvar structure in VARIANT_UserUnmarshal to free the data instead of just initializing.
      ole32: Add a test for StgStreamImpl_SetSize with a non-zero HighPart for the size.
      atl: Add support for the pMapEntries parameter to AtlModuleUpdateRegistryFromResourceD.
      atl: Add support for the registrar parameter of AtlModuleUpdateRegistryFromResourceD.
      winedump: Fix the output for Makefile.in with respect to the dependencies line to match that required by the build system.
      ole32: The 16-bit version of CoDisconnectObject is not compatible with the 32-bit version, so create a separate stub for the former.
      rpcrt4: Implement associations which are intermediary objects that track the relationship between the client and a given endpoint on the server.
      rpcrt4: Make some parameters of non-exported functions const.
      ole32: Add a stubbed out implementation of IClientSecurity to the proxy manager.
      ole32: Add the OXID_INFO structure to dcom.idl.
      ole32: Generate OXID_INFO in the stub manager.
      rpcrt4: Retrieve the maximum token length from the security provider rather than using a hardcoded and rather small limit.
      rpcrt4: Call InitializeSecurityContext from only one function.
      rpcrt4: Call CompleteAuthToken if InitializeSecurityContext returned a code that says it should be called.
      rpcrt4: Use the correct authorization trailer length using information from the security provider.
      ole32: Handle NULL sub-objects correctly in the STGMEDIUM user marshaling functions so that no further data in marshaled or unmarshaled.
      ole32: Add documentation for CreateBindCtx, BindMoniker, GetRunningObjectTable and OleRun.
      ole32: Add documentation for CoGetClassObject and GetClassFile.
      ole32: Move GetClassFile to moniker.c and move OleRun to ole2.c.
      ole32: Register the ProgID for the class and file monikers.
      ole32: Pass the OXID info to RPC_CreateClientChannel and use this to pass the server process ID to channel hooks.
      ole32: Add tests for the standard marshaler's implementation of IClientSecurity.
      ole32: Do a case-insensitive comparison in the count_moniker_matches in the moniker tests as Win9x marshals an all upper-case file name for file monikers.
      ole32: Display the testname for the test for display name in test_moniker.
      ole32: Add some more tests for MkParseDisplayName.
      ole32: Implement MkParseDisplayName.
      rpcrt4: Fixing the using of the auth_len values the wrong way round - PKT_PRIVACY implies the packet will be encrypted, not just signed.

Stefan Dösinger (13):
      wined3d/ddraw: Forward DDSCL_MULTITHREADED to wined3d.
      wined3d: Fix client gl unit selection.
      wined3d: Remove some old stuff.
      wined3d: Activate a context before doing opengl calls.
      wined3d: Store an array of contexts in the swapchain.
      wined3d: Add GL_ATI_envmap_bumpmap to our gl extension header.
      wined3d: Support GL_ATI_envmap_bumpmap for D3DFMT_V8U8.
      wined3d: Store the pixel format in the texture.
      wined3d: General signed format correction without native signed formats.
      wined3d: Handle input modifiers in texcrd with arb shaders.
      wined3d: Implement bem shader instruction.
      wined3d: Disable texture coordinate arrays on the correct unit.
      ddraw: When changing the back buffers also update the render target.

Vitaly Budovski (1):
      wined3d: Check for float texture formats correctly.

--
Alexandre Julliard
julliard@winehq.org
