Tag Wine-0_9_5, remove old tag
Deleted: vendor/wine/dlls/avifil32/Wine-0_9_4/
Added: vendor/wine/dlls/avifil32/Wine-0_9_5/
Deleted: vendor/wine/dlls/cabinet/Wine-0_9_4/
Added: vendor/wine/dlls/cabinet/Wine-0_9_5/
Deleted: vendor/wine/dlls/comctl32/Wine-0_9_4/
Added: vendor/wine/dlls/comctl32/Wine-0_9_5/
Deleted: vendor/wine/dlls/comctl32/Wine-0_9_5/comctl32undoc.c
Added: vendor/wine/dlls/comctl32/Wine-0_9_5/comctl32undoc.c
Deleted: vendor/wine/dlls/comctl32/Wine-0_9_5/ipaddress.c
Added: vendor/wine/dlls/comctl32/Wine-0_9_5/ipaddress.c
Deleted: vendor/wine/dlls/comctl32/Wine-0_9_5/listview.c
Added: vendor/wine/dlls/comctl32/Wine-0_9_5/listview.c
Deleted: vendor/wine/dlls/comctl32/Wine-0_9_5/propsheet.c
Added: vendor/wine/dlls/comctl32/Wine-0_9_5/propsheet.c
Deleted: vendor/wine/dlls/commdlg/Wine-0_9_4/
Added: vendor/wine/dlls/commdlg/Wine-0_9_5/
Deleted: vendor/wine/dlls/commdlg/Wine-0_9_5/colordlg.c
Added: vendor/wine/dlls/commdlg/Wine-0_9_5/colordlg.c
Deleted: vendor/wine/dlls/crypt32/Wine-0_9_4/
Added: vendor/wine/dlls/crypt32/Wine-0_9_5/
Deleted: vendor/wine/dlls/dinput/Wine-0_9_4/
Added: vendor/wine/dlls/dinput/Wine-0_9_5/
Deleted: vendor/wine/dlls/dinput8/Wine-0_9_4/
Added: vendor/wine/dlls/dinput8/Wine-0_9_5/
Deleted: vendor/wine/dlls/dplay/Wine-0_9_4/
Added: vendor/wine/dlls/dplay/Wine-0_9_5/
Deleted: vendor/wine/dlls/dplayx/Wine-0_9_4/
Added: vendor/wine/dlls/dplayx/Wine-0_9_5/
Deleted: vendor/wine/dlls/dsound/Wine-0_9_4/
Added: vendor/wine/dlls/dsound/Wine-0_9_5/
Deleted: vendor/wine/dlls/dsound/Wine-0_9_5/buffer.c
Added: vendor/wine/dlls/dsound/Wine-0_9_5/buffer.c
Deleted: vendor/wine/dlls/dsound/Wine-0_9_5/capture.c
Added: vendor/wine/dlls/dsound/Wine-0_9_5/capture.c
Deleted: vendor/wine/dlls/dsound/Wine-0_9_5/dsound.c
Added: vendor/wine/dlls/dsound/Wine-0_9_5/dsound.c
Deleted: vendor/wine/dlls/dsound/Wine-0_9_5/dsound_private.h
Added: vendor/wine/dlls/dsound/Wine-0_9_5/dsound_private.h
Deleted: vendor/wine/dlls/dsound/Wine-0_9_5/primary.c
Added: vendor/wine/dlls/dsound/Wine-0_9_5/primary.c
Deleted: vendor/wine/dlls/dsound/Wine-0_9_5/propset.c
Added: vendor/wine/dlls/dsound/Wine-0_9_5/propset.c
Deleted: vendor/wine/dlls/dsound/Wine-0_9_5/sound3d.c
Added: vendor/wine/dlls/dsound/Wine-0_9_5/sound3d.c
Deleted: vendor/wine/dlls/dxdiagn/Wine-0_9_4/
Added: vendor/wine/dlls/dxdiagn/Wine-0_9_5/
Deleted: vendor/wine/dlls/icmp/Wine-0_9_4/
Added: vendor/wine/dlls/icmp/Wine-0_9_5/
Deleted: vendor/wine/dlls/imm32/Wine-0_9_4/
Added: vendor/wine/dlls/imm32/Wine-0_9_5/
Deleted: vendor/wine/dlls/midimap/Wine-0_9_4/
Added: vendor/wine/dlls/midimap/Wine-0_9_5/
Deleted: vendor/wine/dlls/mpr/Wine-0_9_4/
Added: vendor/wine/dlls/mpr/Wine-0_9_5/
Deleted: vendor/wine/dlls/msi/Wine-0_9_4/
Added: vendor/wine/dlls/msi/Wine-0_9_5/
Deleted: vendor/wine/dlls/msi/Wine-0_9_5/action.c
Added: vendor/wine/dlls/msi/Wine-0_9_5/action.c
Deleted: vendor/wine/dlls/msi/Wine-0_9_5/custom.c
Added: vendor/wine/dlls/msi/Wine-0_9_5/custom.c
Deleted: vendor/wine/dlls/msi/Wine-0_9_5/dialog.c
Added: vendor/wine/dlls/msi/Wine-0_9_5/dialog.c
Deleted: vendor/wine/dlls/msi/Wine-0_9_5/events.c
Added: vendor/wine/dlls/msi/Wine-0_9_5/events.c
Deleted: vendor/wine/dlls/msi/Wine-0_9_5/install.c
Added: vendor/wine/dlls/msi/Wine-0_9_5/install.c
Deleted: vendor/wine/dlls/msi/Wine-0_9_5/msi.c
Added: vendor/wine/dlls/msi/Wine-0_9_5/msi.c
Deleted: vendor/wine/dlls/msi/Wine-0_9_5/msi.spec
Added: vendor/wine/dlls/msi/Wine-0_9_5/msi.spec
Deleted: vendor/wine/dlls/msi/Wine-0_9_5/msipriv.h
Added: vendor/wine/dlls/msi/Wine-0_9_5/msipriv.h
Deleted: vendor/wine/dlls/msi/Wine-0_9_5/msiquery.c
Added: vendor/wine/dlls/msi/Wine-0_9_5/msiquery.c
Deleted: vendor/wine/dlls/msi/Wine-0_9_5/package.c
Added: vendor/wine/dlls/msi/Wine-0_9_5/package.c
Deleted: vendor/wine/dlls/msimg32/Wine-0_9_4/
Added: vendor/wine/dlls/msimg32/Wine-0_9_5/
Deleted: vendor/wine/dlls/netapi32/Wine-0_9_4/
Added: vendor/wine/dlls/netapi32/Wine-0_9_5/
Deleted: vendor/wine/dlls/objsel/Wine-0_9_4/
Added: vendor/wine/dlls/objsel/Wine-0_9_5/
Deleted: vendor/wine/dlls/ole32/Wine-0_9_4/
Added: vendor/wine/dlls/ole32/Wine-0_9_5/
Deleted: vendor/wine/dlls/ole32/Wine-0_9_5/hglobalstream.c
Added: vendor/wine/dlls/ole32/Wine-0_9_5/hglobalstream.c
Deleted: vendor/wine/dlls/ole32/Wine-0_9_5/stg_stream.c
Added: vendor/wine/dlls/ole32/Wine-0_9_5/stg_stream.c
Deleted: vendor/wine/dlls/oleacc/Wine-0_9_4/
Added: vendor/wine/dlls/oleacc/Wine-0_9_5/
Deleted: vendor/wine/dlls/oleaut32/Wine-0_9_4/
Added: vendor/wine/dlls/oleaut32/Wine-0_9_5/
Deleted: vendor/wine/dlls/oleaut32/Wine-0_9_5/typelib.c
Added: vendor/wine/dlls/oleaut32/Wine-0_9_5/typelib.c
Deleted: vendor/wine/dlls/oledlg/Wine-0_9_4/
Added: vendor/wine/dlls/oledlg/Wine-0_9_5/
Deleted: vendor/wine/dlls/olepro32/Wine-0_9_4/
Added: vendor/wine/dlls/olepro32/Wine-0_9_5/
Deleted: vendor/wine/dlls/riched20/Wine-0_9_4/
Added: vendor/wine/dlls/riched20/Wine-0_9_5/
[truncated at 100 lines; 88 more skipped]
Copied: vendor/wine/dlls/avifil32/Wine-0_9_5 (from rev 20612, vendor/wine/dlls/avifil32/current)

Copied: vendor/wine/dlls/cabinet/Wine-0_9_5 (from rev 20612, vendor/wine/dlls/cabinet/current)

Copied: vendor/wine/dlls/comctl32/Wine-0_9_5 (from rev 20612, vendor/wine/dlls/comctl32/current)

Deleted: vendor/wine/dlls/comctl32/Wine-0_9_5/comctl32undoc.c
--- vendor/wine/dlls/comctl32/current/comctl32undoc.c	2006-01-06 15:42:12 UTC (rev 20612)
+++ vendor/wine/dlls/comctl32/Wine-0_9_5/comctl32undoc.c	2006-01-06 20:49:27 UTC (rev 20629)
@@ -1,1245 +0,0 @@
-/*
- * Undocumented functions from COMCTL32.DLL
- *
- * Copyright 1998 Eric Kohl
- *           1998 Juergen Schmied <j.schmied@metronet.de>
- *           2000 Eric Kohl 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * NOTES
- *     All of these functions are UNDOCUMENTED!! And I mean UNDOCUMENTED!!!!
- *     Do NOT rely on names or contents of undocumented structures and types!!!
- *     These functions are used by EXPLORER.EXE, IEXPLORE.EXE and
- *     COMCTL32.DLL (internally).
- *
- */
-#include "config.h"
-#include "wine/port.h"
-
-#include <stdarg.h>
-#include <string.h>
-#include <ctype.h>
-#include <limits.h>
-
-#define COBJMACROS
-#define NONAMELESSUNION
-#define NONAMELESSSTRUCT
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winnls.h"
-#include "winreg.h"
-#include "commctrl.h"
-#include "objbase.h"
-#include "winerror.h"
-
-#include "wine/unicode.h"
-#include "comctl32.h"
-
-#include "wine/debug.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(commctrl);
-
-static const WCHAR strMRUList[] = { 'M','R','U','L','i','s','t',0 };
-
-/**************************************************************************
- * Alloc [COMCTL32.71]
- *
- * Allocates memory block from the dll's private heap
- *
- * PARAMS
- *     dwSize [I] size of the allocated memory block
- *
- * RETURNS
- *     Success: pointer to allocated memory block
- *     Failure: NULL
- */
-LPVOID WINAPI Alloc (DWORD dwSize)
-{
-    return LocalAlloc( LMEM_ZEROINIT, dwSize );
-}
-
-
-/**************************************************************************
- * ReAlloc [COMCTL32.72]
- *
- * Changes the size of an allocated memory block or allocates a memory
- * block using the dll's private heap.
- *
- * PARAMS
- *     lpSrc  [I] pointer to memory block which will be resized
- *     dwSize [I] new size of the memory block.
- *
- * RETURNS
- *     Success: pointer to the resized memory block
- *     Failure: NULL
- *
- * NOTES
- *     If lpSrc is a NULL-pointer, then ReAlloc allocates a memory
- *     block like Alloc.
- */
-LPVOID WINAPI ReAlloc (LPVOID lpSrc, DWORD dwSize)
-{
-    if (lpSrc)
-        return LocalReAlloc( lpSrc, dwSize, LMEM_ZEROINIT );
-    else
-        return LocalAlloc( LMEM_ZEROINIT, dwSize);
-}
-
-
-/**************************************************************************
- * Free [COMCTL32.73]
- *
- * Frees an allocated memory block from the dll's private heap.
- *
- * PARAMS
- *     lpMem [I] pointer to memory block which will be freed
- *
- * RETURNS
- *     Success: TRUE
- *     Failure: FALSE
- */
-BOOL WINAPI Free (LPVOID lpMem)
-{
-    return !LocalFree( lpMem );
-}
-
-
-/**************************************************************************
- * GetSize [COMCTL32.74]
- *
- * Retrieves the size of the specified memory block from the dll's
- * private heap.
- *
- * PARAMS
- *     lpMem [I] pointer to an allocated memory block
- *
- * RETURNS
- *     Success: size of the specified memory block
- *     Failure: 0
- */
-DWORD WINAPI GetSize (LPVOID lpMem)
-{
-    return LocalSize( lpMem );
-}
-
-
-/**************************************************************************
- * MRU-Functions  {COMCTL32}
- *
- * NOTES
- * The MRU-Api is a set of functions to manipulate lists of M.R.U. (Most Recently
- * Used) items. It is an undocumented Api that is used (at least) by the shell
- * and explorer to implement their recent documents feature.
- *
- * Since these functions are undocumented, they are unsupported by MS and
- * may change at any time.
- *
- * Internally, the list is implemented as a last in, last out list of items
- * persisted into the system registry under a caller chosen key. Each list
- * item is given a one character identifier in the Ascii range from 'a' to
- * '}'. A list of the identifiers in order from newest to oldest is stored
- * under the same key in a value named "MRUList".
- *
- * Items are re-ordered by changing the order of the values in the MRUList
- * value. When a new item is added, it becomes the new value of the oldest
- * identifier, and that identifier is moved to the front of the MRUList value.
- * 
- * Wine stores MRU-lists in the same registry format as Windows, so when
- * switching between the builtin and native comctl32.dll no problems or
- * incompatibilities should occur.
- *
- * The following undocumented structure is used to create an MRU-list:
- *|typedef INT (CALLBACK *MRUStringCmpFn)(LPCTSTR lhs, LPCTSTR rhs);
- *|typedef INT (CALLBACK *MRUBinaryCmpFn)(LPCVOID lhs, LPCVOID rhs, DWORD length);
- *|
- *|typedef struct tagCREATEMRULIST
- *|{
- *|    DWORD   cbSize;
- *|    DWORD   nMaxItems;
- *|    DWORD   dwFlags;
- *|    HKEY    hKey;
- *|    LPCTSTR lpszSubKey;
- *|    PROC    lpfnCompare;
- *|} CREATEMRULIST, *LPCREATEMRULIST;
- *
- * MEMBERS
- *  cbSize      [I] The size of the CREATEMRULIST structure. This must be set
- *                  to sizeof(CREATEMRULIST) by the caller.
- *  nMaxItems   [I] The maximum number of items allowed in the list. Because
- *                  of the limited number of identifiers, this should be set to
- *                  a value from 1 to 30 by the caller.
- *  dwFlags     [I] If bit 0 is set, the list will be used to store binary
- *                  data, otherwise it is assumed to store strings. If bit 1
- *                  is set, every change made to the list will be reflected in
- *                  the registry immediately, otherwise changes will only be
- *                  written when the list is closed.
- *  hKey        [I] The registry key that the list should be written under.
- *                  This must be supplied by the caller.
- *  lpszSubKey  [I] A caller supplied name of a subkey under hKey to write
- *                  the list to. This may not be blank.
- *  lpfnCompare [I] A caller supplied comparison function, which may be either
- *                  an MRUStringCmpFn if dwFlags does not have bit 0 set, or a
- *                  MRUBinaryCmpFn otherwise.
- *
- * FUNCTIONS
- *  - Create an MRU-list with CreateMRUList() or CreateMRUListLazy().
- *  - Add items to an MRU-list with AddMRUString() or AddMRUData().
- *  - Remove items from an MRU-list with DelMRUString().
- *  - Find data in an MRU-list with FindMRUString() or FindMRUData().
- *  - Iterate through an MRU-list with EnumMRUList().
- *  - Free an MRU-list with FreeMRUList().
- */
-
-typedef struct tagCREATEMRULISTA
-{
-    DWORD  cbSize;
-    DWORD  nMaxItems;
-    DWORD  dwFlags;
-    HKEY   hKey;
-    LPCSTR lpszSubKey;
-    PROC   lpfnCompare;
-} CREATEMRULISTA, *LPCREATEMRULISTA;
-
-typedef struct tagCREATEMRULISTW
-{
-    DWORD   cbSize;
-    DWORD   nMaxItems;
-    DWORD   dwFlags;
-    HKEY    hKey;
-    LPCWSTR lpszSubKey;
-    PROC    lpfnCompare;
-} CREATEMRULISTW, *LPCREATEMRULISTW;
-
-/* dwFlags */
-#define MRUF_STRING_LIST  0 /* list will contain strings */
-#define MRUF_BINARY_LIST  1 /* list will contain binary data */
-#define MRUF_DELAYED_SAVE 2 /* only save list order to reg. is FreeMRUList */
-
-/* If list is a string list lpfnCompare has the following prototype
- * int CALLBACK MRUCompareString(LPCSTR s1, LPCSTR s2)
- * for binary lists the prototype is
- * int CALLBACK MRUCompareBinary(LPCVOID data1, LPCVOID data2, DWORD cbData)
- * where cbData is the no. of bytes to compare.
- * Need to check what return value means identical - 0?
- */
-
-typedef struct tagWINEMRUITEM
-{
-    DWORD          size;        /* size of data stored               */
-    DWORD          itemFlag;    /* flags                             */
-    BYTE           datastart;
-} WINEMRUITEM, *LPWINEMRUITEM;
-
-/* itemFlag */
-#define WMRUIF_CHANGED   0x0001 /* this dataitem changed             */
-
-typedef struct tagWINEMRULIST
-{
-    CREATEMRULISTW extview;     /* original create information       */
-    BOOL           isUnicode;   /* is compare fn Unicode */
-    DWORD          wineFlags;   /* internal flags                    */
-    DWORD          cursize;     /* current size of realMRU           */
-    LPWSTR         realMRU;     /* pointer to string of index names  */
-    LPWINEMRUITEM  *array;      /* array of pointers to data         */
-                                /* in 'a' to 'z' order               */
-} WINEMRULIST, *LPWINEMRULIST;
-
-/* wineFlags */
-#define WMRUF_CHANGED  0x0001   /* MRU list has changed              */
-
-/**************************************************************************
- *              MRU_SaveChanged (internal)
- *
- * Local MRU saving code
- */
-static void MRU_SaveChanged ( LPWINEMRULIST mp )
-{
-    UINT i, err;
-    HKEY newkey;
-    WCHAR realname[2];
-    LPWINEMRUITEM witem;
-
-    /* or should we do the following instead of RegOpenKeyEx:
-     */
-
-    /* open the sub key */
-    if ((err = RegOpenKeyExW( mp->extview.hKey, mp->extview.lpszSubKey,
-			      0, KEY_WRITE, &newkey))) {
-	/* not present - what to do ??? */
-	ERR("Could not open key, error=%d, attempting to create\n",
-	    err);
-	if ((err = RegCreateKeyExW( mp->extview.hKey, mp->extview.lpszSubKey,
-				    0,
-				    NULL,
-				    REG_OPTION_NON_VOLATILE,
-				    KEY_READ | KEY_WRITE,
-				    0,
-				    &newkey,
-				    0))) {
-	    ERR("failed to create key /%s/, err=%d\n",
-		debugstr_w(mp->extview.lpszSubKey), err);
-	    return;
-	}
-    }
-    if (mp->wineFlags & WMRUF_CHANGED) {
-	mp->wineFlags &= ~WMRUF_CHANGED;
-	err = RegSetValueExW(newkey, strMRUList, 0, REG_SZ, (LPBYTE)mp->realMRU,
-			     (strlenW(mp->realMRU) + 1)*sizeof(WCHAR));
-	if (err) {
-	    ERR("error saving MRUList, err=%d\n", err);
-	}
-	TRACE("saving MRUList=/%s/\n", debugstr_w(mp->realMRU));
-    }
-    realname[1] = 0;
-    for(i=0; i<mp->cursize; i++) {
-	witem = mp->array[i];
-	if (witem->itemFlag & WMRUIF_CHANGED) {
-	    witem->itemFlag &= ~WMRUIF_CHANGED;
-	    realname[0] = 'a' + i;
-	    err = RegSetValueExW(newkey, realname, 0,
-				 (mp->extview.dwFlags & MRUF_BINARY_LIST) ?
-				 REG_BINARY : REG_SZ,
-				 &witem->datastart, witem->size);
-	    if (err) {
-		ERR("error saving /%s/, err=%d\n", debugstr_w(realname), err);
-	    }
-	    TRACE("saving value for name /%s/ size=%ld\n",
-		  debugstr_w(realname), witem->size);
-	}
-    }
-    RegCloseKey( newkey );
-}
-
-/**************************************************************************
- *              FreeMRUList [COMCTL32.152]
- *
- * Frees a most-recently-used items list.
- *
- * PARAMS
- *     hMRUList [I] Handle to list.
- *
- * RETURNS
- *     Nothing.
- */
-void WINAPI FreeMRUList (HANDLE hMRUList)
-{
-    LPWINEMRULIST mp = (LPWINEMRULIST)hMRUList;
-    UINT i;
-
-    TRACE("(%p)\n", hMRUList);
-    if (!hMRUList)
-        return;
-
-    if (mp->wineFlags & WMRUF_CHANGED) {
-	/* need to open key and then save the info */
-	MRU_SaveChanged( mp );
-    }
-
-    for(i=0; i<mp->extview.nMaxItems; i++) {
-	if (mp->array[i])
-	    Free(mp->array[i]);
-    }
-    Free(mp->realMRU);
-    Free(mp->array);
-    Free((LPWSTR)mp->extview.lpszSubKey);
-    Free(mp);
-}
-
-
-/**************************************************************************
- *                  FindMRUData [COMCTL32.169]
- *
- * Searches binary list for item that matches lpData of length cbData.
- * Returns position in list order 0 -> MRU and if lpRegNum != NULL then value
- * corresponding to item's reg. name will be stored in it ('a' -> 0).
- *
- * PARAMS
- *    hList [I] list handle
- *    lpData [I] data to find
- *    cbData [I] length of data
- *    lpRegNum [O] position in registry (maybe NULL)
- *
- * RETURNS
- *    Position in list 0 -> MRU.  -1 if item not found.
- */
-INT WINAPI FindMRUData (HANDLE hList, LPCVOID lpData, DWORD cbData,
-                        LPINT lpRegNum)
-{
-    LPWINEMRULIST mp = (LPWINEMRULIST)hList;
-    INT ret;
-    UINT i;
-    LPSTR dataA = NULL;
-
-    if (!mp->extview.lpfnCompare) {
-	ERR("MRU list not properly created. No compare procedure.\n");
-	return -1;
-    }
-
-    if(!(mp->extview.dwFlags & MRUF_BINARY_LIST) && !mp->isUnicode) {
-        DWORD len = WideCharToMultiByte(CP_ACP, 0, lpData, -1,
-					NULL, 0, NULL, NULL);
-	dataA = Alloc(len);
-	WideCharToMultiByte(CP_ACP, 0, lpData, -1, dataA, len, NULL, NULL);
-    }
-
-    for(i=0; i<mp->cursize; i++) {
-	if (mp->extview.dwFlags & MRUF_BINARY_LIST) {
-	    if (!mp->extview.lpfnCompare(lpData, &mp->array[i]->datastart,
-					 cbData))
-		break;
-	}
-	else {
-	    if(mp->isUnicode) {
-	        if (!mp->extview.lpfnCompare(lpData, &mp->array[i]->datastart))
-		    break;
-	    } else {
-	        DWORD len = WideCharToMultiByte(CP_ACP, 0,
-						(LPWSTR)&mp->array[i]->datastart, -1,
-						NULL, 0, NULL, NULL);
-		LPSTR itemA = Alloc(len);
-		INT cmp;
-		WideCharToMultiByte(CP_ACP, 0, (LPWSTR)&mp->array[i]->datastart, -1,
-				    itemA, len, NULL, NULL);
-
-	        cmp = mp->extview.lpfnCompare(dataA, itemA);
-		Free(itemA);
-		if(!cmp)
-		    break;
-	    }
-	}
-    }
-    if(dataA)
-        Free(dataA);
-    if (i < mp->cursize)
-	ret = i;
-    else
-	ret = -1;
-    if (lpRegNum && (ret != -1))
-	*lpRegNum = 'a' + i;
-
-    TRACE("(%p, %p, %ld, %p) returning %d\n",
-	   hList, lpData, cbData, lpRegNum, ret);
-
-    return ret;
-}
-
-
-/**************************************************************************
- *              AddMRUData [COMCTL32.167]
- *
- * Add item to MRU binary list.  If item already exists in list then it is
- * simply moved up to the top of the list and not added again.  If list is
- * full then the least recently used item is removed to make room.
- *
- * PARAMS
- *     hList [I] Handle to list.
- *     lpData [I] ptr to data to add.
- *     cbData [I] no. of bytes of data.
- *
- * RETURNS
- *     No. corresponding to registry name where value is stored 'a' -> 0 etc.
- *     -1 on error.
- */
-INT WINAPI AddMRUData (HANDLE hList, LPCVOID lpData, DWORD cbData)
-{
-    LPWINEMRULIST mp = (LPWINEMRULIST)hList;
-    LPWINEMRUITEM witem;
-    INT i, replace;
-
-    if ((replace = FindMRUData (hList, lpData, cbData, NULL)) >= 0) {
-        /* Item exists, just move it to the front */
-        LPWSTR pos = strchrW(mp->realMRU, replace + 'a');
-        while (pos > mp->realMRU)
-        {
-            pos[0] = pos[-1];
-            pos--;
-        }
-    }
-    else {
-	/* either add a new entry or replace oldest */
-	if (mp->cursize < mp->extview.nMaxItems) {
-	    /* Add in a new item */
-	    replace = mp->cursize;
-	    mp->cursize++;
-	}
-	else {
-	    /* get the oldest entry and replace data */
-	    replace = mp->realMRU[mp->cursize - 1] - 'a';
-	    Free(mp->array[replace]);
-	}
-
-        /* Allocate space for new item and move in the data */
-        mp->array[replace] = witem = Alloc(cbData + sizeof(WINEMRUITEM));
-        witem->itemFlag |= WMRUIF_CHANGED;
-        witem->size = cbData;
-        memcpy( &witem->datastart, lpData, cbData);
-
-        /* now rotate MRU list */
-        for(i=mp->cursize-1; i>=1; i--)
-            mp->realMRU[i] = mp->realMRU[i-1];
-    }
-
-    /* The new item gets the front spot */
-    mp->wineFlags |= WMRUF_CHANGED;
-    mp->realMRU[0] = replace + 'a';
-
-    TRACE("(%p, %p, %ld) adding data, /%c/ now most current\n",
-          hList, lpData, cbData, replace+'a');
-
-    if (!(mp->extview.dwFlags & MRUF_DELAYED_SAVE)) {
-	/* save changed stuff right now */
-	MRU_SaveChanged( mp );
-    }
-
-    return replace;
-}
-
-/**************************************************************************
- *              AddMRUStringW [COMCTL32.401]
- *
- * Add an item to an MRU string list.
- *
- * PARAMS
- *     hList      [I] Handle to list.
- *     lpszString [I] The string to add.
- *
- * RETURNS
- *   Success: The number corresponding to the registry name where the string
- *            has been stored (0 maps to 'a', 1 to 'b' and so on).
- *   Failure: -1, if hList is NULL or memory allocation fails. If lpszString
- *            is invalid, the function returns 0, and GetLastError() returns
- *            ERROR_INVALID_PARAMETER. The last error value is set only in
- *            this case.
- *
- * NOTES
- *  -If lpszString exists in the list already, it is moved to the top of the
- *   MRU list (it is not duplicated).
- *  -If the list is full the least recently used list entry is replaced with
- *   lpszString.
- *  -If this function returns 0 you should check the last error value to
- *   ensure the call really succeeded.
- */
-INT WINAPI AddMRUStringW(HANDLE hList, LPCWSTR lpszString)
-{
-    TRACE("(%p,%s)\n", hList, debugstr_w(lpszString));
-
-    if (!hList)
-        return -1;
-
-    if (!lpszString || IsBadStringPtrW(lpszString, -1))
-    {
-        SetLastError(ERROR_INVALID_PARAMETER);
-        return 0;
-    }
-
-    return AddMRUData(hList, lpszString,
-                      (strlenW(lpszString) + 1) * sizeof(WCHAR));
-}
-
-/**************************************************************************
- *              AddMRUStringA [COMCTL32.153]
- *
- * See AddMRUStringW.
- */
-INT WINAPI AddMRUStringA(HANDLE hList, LPCSTR lpszString)
-{
-    DWORD len;
-    LPWSTR stringW;
-    INT ret;
-
-    TRACE("(%p,%s)\n", hList, debugstr_a(lpszString));
-
-    if (!hList)
-        return -1;
-
-    if (IsBadStringPtrA(lpszString, -1))
-    {
-        SetLastError(ERROR_INVALID_PARAMETER);
-	return 0;
-    }
-
-    len = MultiByteToWideChar(CP_ACP, 0, lpszString, -1, NULL, 0) * sizeof(WCHAR);
-    stringW = Alloc(len);
-    if (!stringW)
-        return -1;
-
-    MultiByteToWideChar(CP_ACP, 0, lpszString, -1, stringW, len/sizeof(WCHAR));
-    ret = AddMRUData(hList, stringW, len);
-    Free(stringW);
-    return ret;
-}
-
-/**************************************************************************
- *              DelMRUString [COMCTL32.156]
- *
- * Removes item from either string or binary list (despite its name)
- *
- * PARAMS
- *    hList [I] list handle
- *    nItemPos [I] item position to remove 0 -> MRU
- *
- * RETURNS
- *    TRUE if successful, FALSE if nItemPos is out of range.
- */
-BOOL WINAPI DelMRUString(HANDLE hList, INT nItemPos)
-{
-    FIXME("(%p, %d): stub\n", hList, nItemPos);
-    return TRUE;
-}
-
-/**************************************************************************
- *                  FindMRUStringW [COMCTL32.402]
- *
- * See FindMRUStringA.
- */
-INT WINAPI FindMRUStringW (HANDLE hList, LPCWSTR lpszString, LPINT lpRegNum)
-{
-  return FindMRUData(hList, lpszString,
-                     (lstrlenW(lpszString) + 1) * sizeof(WCHAR), lpRegNum);
-}
-
-/**************************************************************************
- *                  FindMRUStringA [COMCTL32.155]
- *
- * Searches string list for item that matches lpszString.
- * Returns position in list order 0 -> MRU and if lpRegNum != NULL then value
- * corresponding to item's reg. name will be stored in it ('a' -> 0).
- *
- * PARAMS
- *    hList [I] list handle
- *    lpszString [I] string to find
- *    lpRegNum [O] position in registry (maybe NULL)
- *
- * RETURNS
- *    Position in list 0 -> MRU.  -1 if item not found.
- */
-INT WINAPI FindMRUStringA (HANDLE hList, LPCSTR lpszString, LPINT lpRegNum)
-{
-    DWORD len = MultiByteToWideChar(CP_ACP, 0, lpszString, -1, NULL, 0);
-    LPWSTR stringW = Alloc(len * sizeof(WCHAR));
-    INT ret;
-
-    MultiByteToWideChar(CP_ACP, 0, lpszString, -1, stringW, len);
-    ret = FindMRUData(hList, stringW, len * sizeof(WCHAR), lpRegNum);
-    Free(stringW);
-    return ret;
-}
-
-/*************************************************************************
- *                 CreateMRUListLazy_common (internal)
- */
-static HANDLE CreateMRUListLazy_common(LPWINEMRULIST mp)
-{
-    UINT i, err;
-    HKEY newkey;
-    DWORD datasize, dwdisp;
-    WCHAR realname[2];
-    LPWINEMRUITEM witem;
-    DWORD type;
-
-    /* get space to save indices that will turn into names
-     * but in order of most to least recently used
-     */
-    mp->realMRU = Alloc((mp->extview.nMaxItems + 2) * sizeof(WCHAR));
-
-    /* get space to save pointers to actual data in order of
-     * 'a' to 'z' (0 to n).
-     */
-    mp->array = Alloc(mp->extview.nMaxItems * sizeof(LPVOID));
-
-    /* open the sub key */
-    if ((err = RegCreateKeyExW( mp->extview.hKey, mp->extview.lpszSubKey,
-			        0,
-				NULL,
-				REG_OPTION_NON_VOLATILE,
-				KEY_READ | KEY_WRITE,
-                                0,
-				&newkey,
-				&dwdisp))) {
-	/* error - what to do ??? */
-	ERR("(%lu %lu %lx %p %s %p): Could not open key, error=%d\n",
-	    mp->extview.cbSize, mp->extview.nMaxItems, mp->extview.dwFlags,
-	    mp->extview.hKey, debugstr_w(mp->extview.lpszSubKey),
-				 mp->extview.lpfnCompare, err);
-	return 0;
-    }
-
-    /* get values from key 'MRUList' */
-    if (newkey) {
-	datasize = (mp->extview.nMaxItems + 1) * sizeof(WCHAR);
-	if((err=RegQueryValueExW( newkey, strMRUList, 0, &type,
-				  (LPBYTE)mp->realMRU, &datasize))) {
-	    /* not present - set size to 1 (will become 0 later) */
-	    datasize = 1;
-	    *mp->realMRU = 0;
-	}
-        else
-            datasize /= sizeof(WCHAR);
-
-	TRACE("MRU list = %s, datasize = %ld\n", debugstr_w(mp->realMRU), datasize);
-
-	mp->cursize = datasize - 1;
-	/* datasize now has number of items in the MRUList */
-
-	/* get actual values for each entry */
-	realname[1] = 0;
-	for(i=0; i<mp->cursize; i++) {
-	    realname[0] = 'a' + i;
-	    if(RegQueryValueExW( newkey, realname, 0, &type, 0, &datasize)) {
-		/* not present - what to do ??? */
-		ERR("Key %s not found 1\n", debugstr_w(realname));
-	    }
-	    mp->array[i] = witem = Alloc(datasize + sizeof(WINEMRUITEM));
-	    witem->size = datasize;
-	    if(RegQueryValueExW( newkey, realname, 0, &type,
-				 &witem->datastart, &datasize)) {
-		/* not present - what to do ??? */
-		ERR("Key %s not found 2\n", debugstr_w(realname));
-	    }
-	}
-	RegCloseKey( newkey );
-    }
-    else
-	mp->cursize = 0;
-
-    TRACE("(%lu %lu %lx %p %s %p): Current Size = %ld\n",
-	  mp->extview.cbSize, mp->extview.nMaxItems, mp->extview.dwFlags,
-	  mp->extview.hKey, debugstr_w(mp->extview.lpszSubKey),
-	  mp->extview.lpfnCompare, mp->cursize);
-    return (HANDLE)mp;
-}
-
-/**************************************************************************
- *                  CreateMRUListLazyW [COMCTL32.404]
- *
- * See CreateMRUListLazyA.
- */
-HANDLE WINAPI CreateMRUListLazyW (LPCREATEMRULISTW lpcml, DWORD dwParam2,
-                                  DWORD dwParam3, DWORD dwParam4)
-{
-    LPWINEMRULIST mp;
-
-    /* Native does not check for a NULL lpcml */
-
-    if (lpcml->cbSize != sizeof(CREATEMRULISTW) || !lpcml->hKey ||
-        IsBadStringPtrW(lpcml->lpszSubKey, -1))
-	return NULL;
-
-    mp = Alloc(sizeof(WINEMRULIST));
-    memcpy(&mp->extview, lpcml, sizeof(CREATEMRULISTW));
-    mp->extview.lpszSubKey = Alloc((strlenW(lpcml->lpszSubKey) + 1) * sizeof(WCHAR));
-    strcpyW((LPWSTR)mp->extview.lpszSubKey, lpcml->lpszSubKey);
-    mp->isUnicode = TRUE;
-
-    return CreateMRUListLazy_common(mp);
-}
-
-/**************************************************************************
- *                  CreateMRUListLazyA [COMCTL32.157]
- *
- * Creates a most-recently-used list.
- *
- * PARAMS
- *     lpcml    [I] ptr to CREATEMRULIST structure.
- *     dwParam2 [I] Unknown
- *     dwParam3 [I] Unknown
- *     dwParam4 [I] Unknown
- *
- * RETURNS
- *     Handle to MRU list.
- */
-HANDLE WINAPI CreateMRUListLazyA (LPCREATEMRULISTA lpcml, DWORD dwParam2,
-                                  DWORD dwParam3, DWORD dwParam4)
-{
-    LPWINEMRULIST mp;
-    DWORD len;
-
-    /* Native does not check for a NULL lpcml */
-
-    if (lpcml->cbSize != sizeof(CREATEMRULISTA) || !lpcml->hKey ||
-        IsBadStringPtrA(lpcml->lpszSubKey, -1))
-	return 0;
-
-    mp = Alloc(sizeof(WINEMRULIST));
-    memcpy(&mp->extview, lpcml, sizeof(CREATEMRULISTW));
-    len = MultiByteToWideChar(CP_ACP, 0, lpcml->lpszSubKey, -1, NULL, 0);
-    mp->extview.lpszSubKey = Alloc(len * sizeof(WCHAR));
-    MultiByteToWideChar(CP_ACP, 0, lpcml->lpszSubKey, -1,
-			(LPWSTR)mp->extview.lpszSubKey, len);
-    mp->isUnicode = FALSE;
-    return CreateMRUListLazy_common(mp);
-}
-
-/**************************************************************************
- *              CreateMRUListW [COMCTL32.400]
- *
- * See CreateMRUListA.
- */
-HANDLE WINAPI CreateMRUListW (LPCREATEMRULISTW lpcml)
-{
-    return CreateMRUListLazyW(lpcml, 0, 0, 0);
-}
-
-/**************************************************************************
- *              CreateMRUListA [COMCTL32.151]
- *
- * Creates a most-recently-used list.
- *
- * PARAMS
- *     lpcml [I] ptr to CREATEMRULIST structure.
- *
- * RETURNS
- *     Handle to MRU list.
- */
-HANDLE WINAPI CreateMRUListA (LPCREATEMRULISTA lpcml)
-{
-     return CreateMRUListLazyA (lpcml, 0, 0, 0);
-}
-
-
-/**************************************************************************
- *                EnumMRUListW [COMCTL32.403]
- *
- * Enumerate item in a most-recenty-used list
- *
- * PARAMS
- *    hList [I] list handle
- *    nItemPos [I] item position to enumerate
- *    lpBuffer [O] buffer to receive item
- *    nBufferSize [I] size of buffer
- *
- * RETURNS
- *    For binary lists specifies how many bytes were copied to buffer, for
- *    string lists specifies full length of string.  Enumerating past the end
- *    of list returns -1.
- *    If lpBuffer == NULL or nItemPos is -ve return value is no. of items in
- *    the list.
- */
-INT WINAPI EnumMRUListW (HANDLE hList, INT nItemPos, LPVOID lpBuffer,
-                         DWORD nBufferSize)
-{
-    LPWINEMRULIST mp = (LPWINEMRULIST) hList;
-    LPWINEMRUITEM witem;
-    INT desired, datasize;
-
-    if (nItemPos >= mp->cursize) return -1;
-    if ((nItemPos < 0) || !lpBuffer) return mp->cursize;
-    desired = mp->realMRU[nItemPos];
-    desired -= 'a';
-    TRACE("nItemPos=%d, desired=%d\n", nItemPos, desired);
-    witem = mp->array[desired];
-    datasize = min( witem->size, nBufferSize );
-    memcpy( lpBuffer, &witem->datastart, datasize);
-    TRACE("(%p, %d, %p, %ld): returning len=%d\n",
-	  hList, nItemPos, lpBuffer, nBufferSize, datasize);
-    return datasize;
-}
-
-/**************************************************************************
- *                EnumMRUListA [COMCTL32.154]
- *
- * See EnumMRUListW.
- */
-INT WINAPI EnumMRUListA (HANDLE hList, INT nItemPos, LPVOID lpBuffer,
-                         DWORD nBufferSize)
-{
-    LPWINEMRULIST mp = (LPWINEMRULIST) hList;
-    LPWINEMRUITEM witem;
-    INT desired, datasize;
-    DWORD lenA;
-
-    if (nItemPos >= mp->cursize) return -1;
-    if ((nItemPos < 0) || !lpBuffer) return mp->cursize;
-    desired = mp->realMRU[nItemPos];
-    desired -= 'a';
-    TRACE("nItemPos=%d, desired=%d\n", nItemPos, desired);
-    witem = mp->array[desired];
-    if(mp->extview.dwFlags & MRUF_BINARY_LIST) {
-        datasize = min( witem->size, nBufferSize );
-	memcpy( lpBuffer, &witem->datastart, datasize);
-    } else {
-        lenA = WideCharToMultiByte(CP_ACP, 0, (LPWSTR)&witem->datastart, -1,
-				   NULL, 0, NULL, NULL);
-	datasize = min( witem->size, nBufferSize );
-	WideCharToMultiByte(CP_ACP, 0, (LPWSTR)&witem->datastart, -1,
-			    lpBuffer, datasize, NULL, NULL);
-    }
-    TRACE("(%p, %d, %p, %ld): returning len=%d\n",
-	  hList, nItemPos, lpBuffer, nBufferSize, datasize);
-    return datasize;
-}
-
-
-/**************************************************************************
- * Str_GetPtrA [COMCTL32.233]
- *
- * Copies a string into a destination buffer.
- *
- * PARAMS
- *     lpSrc   [I] Source string
- *     lpDest  [O] Destination buffer
- *     nMaxLen [I] Size of buffer in characters
- *
- * RETURNS
- *     The number of characters copied.
- */
-INT WINAPI Str_GetPtrA (LPCSTR lpSrc, LPSTR lpDest, INT nMaxLen)
-{
-    INT len;
-
-    TRACE("(%p %p %d)\n", lpSrc, lpDest, nMaxLen);
-
-    if (!lpDest && lpSrc)
-	return strlen (lpSrc);
-
-    if (nMaxLen == 0)
-	return 0;
-
-    if (lpSrc == NULL) {
-	lpDest[0] = '\0';
-	return 0;
-    }
-
-    len = strlen (lpSrc);
-    if (len >= nMaxLen)
-	len = nMaxLen - 1;
-
-    RtlMoveMemory (lpDest, lpSrc, len);
-    lpDest[len] = '\0';
-
-    return len;
-}
-
-
-/**************************************************************************
- * Str_SetPtrA [COMCTL32.234]
- *
- * Makes a copy of a string, allocating memory if necessary.
- *
- * PARAMS
- *     lppDest [O] Pointer to destination string
- *     lpSrc   [I] Source string
- *
- * RETURNS
- *     Success: TRUE
- *     Failure: FALSE
- *
- * NOTES
- *     Set lpSrc to NULL to free the memory allocated by a previous call
- *     to this function.
- */
-BOOL WINAPI Str_SetPtrA (LPSTR *lppDest, LPCSTR lpSrc)
-{
-    TRACE("(%p %p)\n", lppDest, lpSrc);
-
-    if (lpSrc) {
-	LPSTR ptr = ReAlloc (*lppDest, strlen (lpSrc) + 1);
-	if (!ptr)
-	    return FALSE;
-	strcpy (ptr, lpSrc);
-	*lppDest = ptr;
-    }
-    else {
-	if (*lppDest) {
-	    Free (*lppDest);
-	    *lppDest = NULL;
-	}
-    }
-
-    return TRUE;
-}
-
-
-/**************************************************************************
- * Str_GetPtrW [COMCTL32.235]
- *
- * See Str_GetPtrA.
- */
-INT WINAPI Str_GetPtrW (LPCWSTR lpSrc, LPWSTR lpDest, INT nMaxLen)
-{
-    INT len;
-
-    TRACE("(%p %p %d)\n", lpSrc, lpDest, nMaxLen);
-
-    if (!lpDest && lpSrc)
-	return strlenW (lpSrc);
-
-    if (nMaxLen == 0)
-	return 0;
-
-    if (lpSrc == NULL) {
-	lpDest[0] = L'\0';
-	return 0;
-    }
-
-    len = strlenW (lpSrc);
-    if (len >= nMaxLen)
[truncated at 1000 lines; 72822 more skipped]