mirror of
https://github.com/reactos/reactos.git
synced 2025-08-04 08:05:43 +00:00
Sync to Wine-20041201
Eric Pouech <pouech-eric@wanadoo.fr> - Const correctness fixes. Juan Lang <juan_lang@yahoo.com> - Fix CSIDL_CONTROLS and CSIDL_PRINTERS PIDL types, and update tests now that they pass. Robert Shearman <rob@codeweavers.com> - Use more specific error codes than E_FAIL, where possible. - Move vtable to end, give it the const modifier, and remove unneeded function declarations. Juan Lang <juan_lang@yahoo.com> - the correct registry location to override is User Shell Folders, not Shell Folders - if User Shell Folders doesn't exist in HKCU, HKLM should be tried - SHGetSpecialFolderPath should call SHGetFolderPath, not vice-versa - the default values should be localizable - some of the parameter checking and returned LPITEMIDLISTs were a bit off - _SHExpandEnvironmentStrings should return input string if no % found to expand, and should call ExpandEnvironmentStringsW if it doesn't handle an environment variable directly. Based on a patch from Dan Kegel. - Avoid copying invalid data on error. - Update shell32's version to WinXP level. Aric Stewart <aric@codeweavers.com> - Implementation of PathCleanupSpec. Fabrice Menard <menard.fabrice@wanadoo.fr> - Some French translations added. - Check the type of error returned by SHCreateDirectoryExW. Rolf Kalbermatter <rolf.kalbermatter@citeng.com> - Use SHCreateDirectoryEx function instead of doing explicit recursive directory creation. - Fix bad memory allocation for unicode buffer. - SHCreateDirectory should create intermediate directories if necessary. - Remove extra boolean parameter in SHNotifyMoveFile as it is not used. - Use in SHFileOperation the function SHNotifyCreateDirectory instead of SHCreateDirectoryEx as it does not anymore what is needed here. - Fix several unsigned/signed mismatch warnings. Alexandre Julliard <julliard@winehq.org> - Avoid copying invalid data on error. Francois Gouget <fgouget@free.fr> - Assorted spelling fixes. Tom Wickline <twickline@sitestar.net> - Version resources cleanup. svn path=/trunk/; revision=11970
This commit is contained in:
parent
c1a2a1d3de
commit
12c35f6b5a
22 changed files with 2486 additions and 917 deletions
|
@ -263,7 +263,7 @@ BOOL WINAPI SHChangeNotifyUpdateEntryList(DWORD unknown1, DWORD unknown2,
|
|||
return -1;
|
||||
}
|
||||
|
||||
static BOOL should_notify( LPITEMIDLIST changed, LPCITEMIDLIST watched, BOOL sub )
|
||||
static BOOL should_notify( LPCITEMIDLIST changed, LPCITEMIDLIST watched, BOOL sub )
|
||||
{
|
||||
TRACE("%p %p %d\n", changed, watched, sub );
|
||||
if ( !watched )
|
||||
|
@ -280,7 +280,7 @@ static BOOL should_notify( LPITEMIDLIST changed, LPCITEMIDLIST watched, BOOL sub
|
|||
*/
|
||||
void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2)
|
||||
{
|
||||
LPITEMIDLIST Pidls[2];
|
||||
LPCITEMIDLIST Pidls[2];
|
||||
LPNOTIFICATIONLIST ptr;
|
||||
UINT typeFlag = uFlags & SHCNF_TYPE;
|
||||
|
||||
|
@ -326,8 +326,8 @@ void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID
|
|||
if (dwItem2) Pidls[1] = SHSimpleIDListFromPathW((LPCWSTR)dwItem2);
|
||||
break;
|
||||
case SHCNF_IDLIST:
|
||||
Pidls[0] = (LPITEMIDLIST)dwItem1;
|
||||
Pidls[1] = (LPITEMIDLIST)dwItem2;
|
||||
Pidls[0] = (LPCITEMIDLIST)dwItem1;
|
||||
Pidls[1] = (LPCITEMIDLIST)dwItem2;
|
||||
break;
|
||||
case SHCNF_PRINTERA:
|
||||
case SHCNF_PRINTERW:
|
||||
|
@ -404,8 +404,8 @@ void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID
|
|||
/* if we allocated it, free it. The ANSI flag is also set in its Unicode sibling. */
|
||||
if ((typeFlag & SHCNF_PATHA) || (typeFlag & SHCNF_PRINTERA))
|
||||
{
|
||||
if (Pidls[0]) SHFree(Pidls[0]);
|
||||
if (Pidls[1]) SHFree(Pidls[1]);
|
||||
if (Pidls[0]) SHFree((LPITEMIDLIST)Pidls[0]);
|
||||
if (Pidls[1]) SHFree((LPITEMIDLIST)Pidls[1]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -440,7 +440,7 @@ HANDLE WINAPI SHChangeNotification_Lock(
|
|||
{
|
||||
DWORD i;
|
||||
LPNOTIFICATIONLIST node;
|
||||
LPITEMIDLIST *idlist;
|
||||
LPCITEMIDLIST *idlist;
|
||||
|
||||
TRACE("%p %08lx %p %p\n", hChange, dwProcessId, lppidls, lpwEventId);
|
||||
|
||||
|
@ -451,9 +451,9 @@ HANDLE WINAPI SHChangeNotification_Lock(
|
|||
{
|
||||
idlist = SHAlloc( sizeof(LPCITEMIDLIST *) * node->cidl );
|
||||
for(i=0; i<node->cidl; i++)
|
||||
idlist[i] = (LPITEMIDLIST)node->pidlSignaled;
|
||||
idlist[i] = (LPCITEMIDLIST)node->pidlSignaled;
|
||||
*lpwEventId = node->wSignalledEvent;
|
||||
*lppidls = idlist;
|
||||
*lppidls = (LPITEMIDLIST*)idlist;
|
||||
node->wSignalledEvent = 0;
|
||||
}
|
||||
else
|
||||
|
|
|
@ -76,6 +76,7 @@ LPSTR _dbg_ILGetTextPointer(LPCITEMIDLIST pidl)
|
|||
{
|
||||
case PT_GUID:
|
||||
case PT_SHELLEXT:
|
||||
case PT_YAGUID:
|
||||
return NULL;
|
||||
|
||||
case PT_DRIVE:
|
||||
|
@ -88,7 +89,6 @@ LPSTR _dbg_ILGetTextPointer(LPCITEMIDLIST pidl)
|
|||
case PT_FOLDER1:
|
||||
case PT_VALUE:
|
||||
case PT_IESPECIAL1:
|
||||
case PT_RAS_FOLDER:
|
||||
case PT_IESPECIAL2:
|
||||
return (LPSTR)&(pdata->u.file.szNames);
|
||||
|
||||
|
@ -115,7 +115,6 @@ LPSTR _dbg_ILGetSTextPointer(LPCITEMIDLIST pidl)
|
|||
case PT_FOLDER:
|
||||
case PT_VALUE:
|
||||
case PT_IESPECIAL1:
|
||||
case PT_RAS_FOLDER:
|
||||
case PT_IESPECIAL2:
|
||||
return (LPSTR)(pdata->u.file.szNames + strlen (pdata->u.file.szNames) + 1);
|
||||
|
||||
|
@ -250,7 +249,7 @@ BOOL pcheck (LPCITEMIDLIST pidl)
|
|||
case PT_NETPROVIDER:
|
||||
case PT_NETWORK:
|
||||
case PT_IESPECIAL1:
|
||||
case PT_RAS_FOLDER:
|
||||
case PT_YAGUID:
|
||||
case PT_IESPECIAL2:
|
||||
case PT_SHARE:
|
||||
break;
|
||||
|
@ -263,7 +262,7 @@ BOOL pcheck (LPCITEMIDLIST pidl)
|
|||
memset(szTemp, ' ', BYTES_PRINTED*4 + 1);
|
||||
for ( i = 0; (i<pidltemp->mkid.cb) && (i<BYTES_PRINTED); i++)
|
||||
{
|
||||
c = ((unsigned char *)pidltemp)[i];
|
||||
c = ((const unsigned char *)pidltemp)[i];
|
||||
|
||||
szTemp[i*3+0] = ((c>>4)>9)? (c>>4)+55 : (c>>4)+48;
|
||||
szTemp[i*3+1] = ((0x0F&c)>9)? (0x0F&c)+55 : (0x0F&c)+48;
|
||||
|
|
|
@ -313,7 +313,6 @@ BOOL WINAPI Shell_GetImageList(HIMAGELIST * lpBigList, HIMAGELIST * lpSmallList)
|
|||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* PidlToSicIndex [INTERNAL]
|
||||
*
|
||||
|
@ -354,6 +353,7 @@ BOOL PidlToSicIndex (
|
|||
*pIndex = 0;
|
||||
|
||||
return ret;
|
||||
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
|
|
|
@ -42,42 +42,11 @@
|
|||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(shell);
|
||||
|
||||
static HRESULT WINAPI IStream_fnQueryInterface(IStream *iface, REFIID riid, LPVOID *ppvObj);
|
||||
static ULONG WINAPI IStream_fnAddRef(IStream *iface);
|
||||
static ULONG WINAPI IStream_fnRelease(IStream *iface);
|
||||
static HRESULT WINAPI IStream_fnRead (IStream * iface, void* pv, ULONG cb, ULONG* pcbRead);
|
||||
static HRESULT WINAPI IStream_fnWrite (IStream * iface, const void* pv, ULONG cb, ULONG* pcbWritten);
|
||||
static HRESULT WINAPI IStream_fnSeek (IStream * iface, LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER* plibNewPosition);
|
||||
static HRESULT WINAPI IStream_fnSetSize (IStream * iface, ULARGE_INTEGER libNewSize);
|
||||
static HRESULT WINAPI IStream_fnCopyTo (IStream * iface, IStream* pstm, ULARGE_INTEGER cb, ULARGE_INTEGER* pcbRead, ULARGE_INTEGER* pcbWritten);
|
||||
static HRESULT WINAPI IStream_fnCommit (IStream * iface, DWORD grfCommitFlags);
|
||||
static HRESULT WINAPI IStream_fnRevert (IStream * iface);
|
||||
static HRESULT WINAPI IStream_fnLockRegion (IStream * iface, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType);
|
||||
static HRESULT WINAPI IStream_fnUnlockRegion (IStream * iface, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType);
|
||||
static HRESULT WINAPI IStream_fnStat (IStream * iface, STATSTG* pstatstg, DWORD grfStatFlag);
|
||||
static HRESULT WINAPI IStream_fnClone (IStream * iface, IStream** ppstm);
|
||||
|
||||
static IStreamVtbl stvt =
|
||||
{
|
||||
IStream_fnQueryInterface,
|
||||
IStream_fnAddRef,
|
||||
IStream_fnRelease,
|
||||
IStream_fnRead,
|
||||
IStream_fnWrite,
|
||||
IStream_fnSeek,
|
||||
IStream_fnSetSize,
|
||||
IStream_fnCopyTo,
|
||||
IStream_fnCommit,
|
||||
IStream_fnRevert,
|
||||
IStream_fnLockRegion,
|
||||
IStream_fnUnlockRegion,
|
||||
IStream_fnStat,
|
||||
IStream_fnClone
|
||||
|
||||
};
|
||||
static const IStreamVtbl stvt;
|
||||
|
||||
typedef struct
|
||||
{ IStreamVtbl *lpvtst;
|
||||
{
|
||||
const IStreamVtbl *lpvtst;
|
||||
DWORD ref;
|
||||
HANDLE handle;
|
||||
} ISHFileStream;
|
||||
|
@ -110,12 +79,12 @@ HRESULT CreateStreamOnFile (LPCWSTR pszFilename, DWORD grfMode, IStream ** ppstm
|
|||
|
||||
handle = CreateFileW( pszFilename, access, FILE_SHARE_READ, NULL, creat, 0, NULL );
|
||||
if( handle == INVALID_HANDLE_VALUE )
|
||||
return E_FAIL;
|
||||
return HRESULT_FROM_WIN32(GetLastError());
|
||||
|
||||
fstr = (ISHFileStream*)HeapAlloc(GetProcessHeap(),
|
||||
HEAP_ZERO_MEMORY,sizeof(ISHFileStream));
|
||||
if( !fstr )
|
||||
return E_FAIL;
|
||||
return E_OUTOFMEMORY;
|
||||
fstr->lpvtst=&stvt;
|
||||
fstr->ref = 1;
|
||||
fstr->handle = handle;
|
||||
|
@ -192,7 +161,7 @@ static HRESULT WINAPI IStream_fnRead (IStream * iface, void* pv, ULONG cb, ULONG
|
|||
return STG_E_INVALIDPOINTER;
|
||||
|
||||
if ( ! ReadFile( This->handle, pv, cb, pcbRead, NULL ) )
|
||||
return E_FAIL;
|
||||
return S_FALSE;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
@ -306,3 +275,22 @@ static HRESULT WINAPI IStream_fnClone (IStream * iface, IStream** ppstm)
|
|||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static const IStreamVtbl stvt =
|
||||
{
|
||||
IStream_fnQueryInterface,
|
||||
IStream_fnAddRef,
|
||||
IStream_fnRelease,
|
||||
IStream_fnRead,
|
||||
IStream_fnWrite,
|
||||
IStream_fnSeek,
|
||||
IStream_fnSetSize,
|
||||
IStream_fnCopyTo,
|
||||
IStream_fnCommit,
|
||||
IStream_fnRevert,
|
||||
IStream_fnLockRegion,
|
||||
IStream_fnUnlockRegion,
|
||||
IStream_fnStat,
|
||||
IStream_fnClone
|
||||
|
||||
};
|
||||
|
|
|
@ -129,7 +129,7 @@ BOOL WINAPI ILGetDisplayNameExW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPWSTR pa
|
|||
flag = SHGDN_FORPARSING | SHGDN_FORADDRESSBAR;
|
||||
break;
|
||||
}
|
||||
if (!*(LPWORD)pidl || type == ILGDN_FORPARSING)
|
||||
if (!*(const WORD*)pidl || type == ILGDN_FORPARSING)
|
||||
{
|
||||
ret = IShellFolder_GetDisplayNameOf(lsf, pidl, flag, &strret);
|
||||
if (SUCCEEDED(ret))
|
||||
|
@ -779,7 +779,7 @@ UINT WINAPI ILGetSize(LPCITEMIDLIST pidl)
|
|||
if (pidl)
|
||||
{ while (si->cb)
|
||||
{ len += si->cb;
|
||||
si = (LPSHITEMID)(((LPBYTE)si)+si->cb);
|
||||
si = (LPCSHITEMID)(((const BYTE*)si)+si->cb);
|
||||
}
|
||||
len += 2;
|
||||
}
|
||||
|
@ -814,7 +814,7 @@ LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST pidl)
|
|||
len = pidl->mkid.cb;
|
||||
if (len)
|
||||
{
|
||||
pidl = (LPITEMIDLIST) (((LPBYTE)pidl)+len);
|
||||
pidl = (LPCITEMIDLIST) (((const BYTE*)pidl)+len);
|
||||
TRACE("-- %p\n", pidl);
|
||||
return (LPITEMIDLIST)pidl;
|
||||
}
|
||||
|
@ -1493,7 +1493,7 @@ LPITEMIDLIST _ILCreateControlPanel()
|
|||
TRACE("()\n");
|
||||
if (parent)
|
||||
{
|
||||
LPITEMIDLIST cpl = _ILCreateGuid(PT_GUID, &CLSID_ControlPanel);
|
||||
LPITEMIDLIST cpl = _ILCreateGuid(PT_SHELLEXT, &CLSID_ControlPanel);
|
||||
|
||||
if (cpl)
|
||||
{
|
||||
|
@ -1512,7 +1512,7 @@ LPITEMIDLIST _ILCreatePrinters()
|
|||
TRACE("()\n");
|
||||
if (parent)
|
||||
{
|
||||
LPITEMIDLIST printers = _ILCreateGuid(PT_GUID, &CLSID_Printers);
|
||||
LPITEMIDLIST printers = _ILCreateGuid(PT_YAGUID, &CLSID_Printers);
|
||||
|
||||
if (printers)
|
||||
{
|
||||
|
@ -1538,7 +1538,7 @@ LPITEMIDLIST _ILCreateGuid(PIDLTYPE type, REFIID guid)
|
|||
{
|
||||
LPITEMIDLIST pidlOut;
|
||||
|
||||
if (type == PT_SHELLEXT || type == PT_GUID)
|
||||
if (type == PT_SHELLEXT || type == PT_GUID || type == PT_YAGUID)
|
||||
{
|
||||
pidlOut = _ILAlloc(type, sizeof(GUIDStruct));
|
||||
if (pidlOut)
|
||||
|
@ -1757,7 +1757,7 @@ BOOL _ILIsPidlSimple ( LPCITEMIDLIST pidl)
|
|||
if(! _ILIsDesktop(pidl)) /* pidl=NULL or mkid.cb=0 */
|
||||
{
|
||||
WORD len = pidl->mkid.cb;
|
||||
LPCITEMIDLIST pidlnext = (LPCITEMIDLIST) (((LPBYTE)pidl) + len );
|
||||
LPCITEMIDLIST pidlnext = (LPCITEMIDLIST) (((const BYTE*)pidl) + len );
|
||||
if (pidlnext->mkid.cb)
|
||||
ret = FALSE;
|
||||
}
|
||||
|
@ -1883,6 +1883,7 @@ LPSTR _ILGetTextPointer(LPCITEMIDLIST pidl)
|
|||
{
|
||||
case PT_GUID:
|
||||
case PT_SHELLEXT:
|
||||
case PT_YAGUID:
|
||||
return NULL;
|
||||
|
||||
case PT_DRIVE:
|
||||
|
@ -1895,7 +1896,6 @@ LPSTR _ILGetTextPointer(LPCITEMIDLIST pidl)
|
|||
case PT_FOLDER1:
|
||||
case PT_VALUE:
|
||||
case PT_IESPECIAL1:
|
||||
case PT_RAS_FOLDER:
|
||||
case PT_IESPECIAL2:
|
||||
return (LPSTR)&(pdata->u.file.szNames);
|
||||
|
||||
|
@ -1926,7 +1926,6 @@ LPSTR _ILGetSTextPointer(LPCITEMIDLIST pidl)
|
|||
case PT_FOLDER:
|
||||
case PT_VALUE:
|
||||
case PT_IESPECIAL1:
|
||||
case PT_RAS_FOLDER:
|
||||
case PT_IESPECIAL2:
|
||||
return (LPSTR)(pdata->u.file.szNames + strlen (pdata->u.file.szNames) + 1);
|
||||
|
||||
|
|
|
@ -71,6 +71,7 @@
|
|||
* net provider 0x46 network
|
||||
* whole network 0x47 network (5)
|
||||
* MSITStore 0x61 htmlhlp (7)
|
||||
* printers/ras connections 0x70 guid
|
||||
* history/favorites 0xb1 file
|
||||
* share 0xc3 network (6)
|
||||
*
|
||||
|
@ -101,7 +102,7 @@
|
|||
#define PT_NETPROVIDER 0x46
|
||||
#define PT_NETWORK 0x47
|
||||
#define PT_IESPECIAL1 0x61
|
||||
#define PT_RAS_FOLDER 0x70
|
||||
#define PT_YAGUID 0x70 /* yet another guid.. */
|
||||
#define PT_IESPECIAL2 0xb1
|
||||
#define PT_SHARE 0xc3
|
||||
|
||||
|
@ -200,8 +201,8 @@ BOOL _ILIsCPanelStruct (LPCITEMIDLIST pidl);
|
|||
*/
|
||||
LPITEMIDLIST _ILAlloc(PIDLTYPE type, size_t size);
|
||||
|
||||
/* Creates a PIDL with guid format and type type, which must be either PT_GUID
|
||||
* or PT_SHELLEXT.
|
||||
/* Creates a PIDL with guid format and type type, which must be one of PT_GUID,
|
||||
* PT_SHELLEXT, or PT_YAGUID.
|
||||
*/
|
||||
LPITEMIDLIST _ILCreateGuid(PIDLTYPE type, REFIID guid);
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
#include "ole2.h"
|
||||
#include "shlguid.h"
|
||||
#include "shell32_main.h"
|
||||
|
||||
#include "wine/debug.h"
|
||||
|
||||
|
@ -518,6 +519,8 @@ HRESULT WINAPI SHELL32_DllRegisterServer()
|
|||
hr = register_coclasses(coclass_list);
|
||||
if (SUCCEEDED(hr))
|
||||
hr = register_interfaces(interface_list);
|
||||
if (SUCCEEDED(hr))
|
||||
hr = SHELL_RegisterShellFolders();
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
|
|
@ -162,7 +162,7 @@
|
|||
168 stdcall SHCreatePropSheetExtArray(long str long)
|
||||
169 stdcall SHDestroyPropSheetExtArray(long)
|
||||
170 stdcall SHReplaceFromPropSheetExtArray(long long long long)
|
||||
171 stdcall PathCleanupSpec(ptr ptr) PathCleanupSpecAW
|
||||
171 stdcall PathCleanupSpec(ptr ptr)
|
||||
172 stdcall SHCreateLinks(long str ptr long ptr)
|
||||
173 stdcall SHValidateUNC(long long long)
|
||||
174 stdcall SHCreateShellFolderViewEx (ptr ptr)
|
||||
|
|
|
@ -187,3 +187,35 @@ STRINGTABLE DISCARDABLE
|
|||
IDS_SHUTDOWN_TITLE "Shutdown"
|
||||
IDS_SHUTDOWN_PROMPT "Do you want to shutdown?"
|
||||
}
|
||||
|
||||
/* shell folder path default values */
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
IDS_PROGRAMS "Start Menu\\Programs"
|
||||
IDS_PERSONAL "My Documents"
|
||||
IDS_FAVORITES "Favorites"
|
||||
IDS_STARTUP "Start Menu\\Programs\\StartUp"
|
||||
IDS_RECENT "Recent"
|
||||
IDS_SENDTO "SendTo"
|
||||
IDS_STARTMENU "Start Menu"
|
||||
IDS_MYMUSIC "My Documents\\My Music"
|
||||
IDS_MYVIDEO "My Documents\\My Video"
|
||||
IDS_DESKTOPDIRECTORY "Desktop"
|
||||
IDS_NETHOOD "NetHood"
|
||||
IDS_TEMPLATES "Templates"
|
||||
IDS_APPDATA "Application Data"
|
||||
IDS_PRINTHOOD "PrintHood"
|
||||
IDS_LOCAL_APPDATA "Local Settings\\Application Data"
|
||||
IDS_INTERNET_CACHE "Temporary Internet Files"
|
||||
IDS_COOKIES "Cookies"
|
||||
IDS_HISTORY "History"
|
||||
IDS_PROGRAM_FILES "Program Files"
|
||||
IDS_MYPICTURES "My Documents\\My Pictures"
|
||||
IDS_PROGRAM_FILES_COMMON "Program Files\\Common Files"
|
||||
IDS_COMMON_DOCUMENTS "Documents"
|
||||
IDS_ADMINTOOLS "Start Menu\\Programs\\Administrative Tools"
|
||||
IDS_COMMON_MUSIC "Documents\\My Music"
|
||||
IDS_COMMON_PICTURES "Documents\\My Pictures"
|
||||
IDS_COMMON_VIDEO "Documents\\My Video"
|
||||
IDS_CDBURN_AREA "Local Settings\\Application Data\\Microsoft\\CD Burning"
|
||||
}
|
||||
|
|
|
@ -190,3 +190,35 @@ STRINGTABLE DISCARDABLE
|
|||
IDS_SHUTDOWN_TITLE "Arrêter"
|
||||
IDS_SHUTDOWN_PROMPT "Voulez-vous fermer la session ReactOS?"
|
||||
}
|
||||
|
||||
/* shell folder path default values */
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
IDS_PROGRAMS "Menu Démarrer\\Programmes"
|
||||
IDS_PERSONAL "Mes documents"
|
||||
IDS_FAVORITES "Favoris"
|
||||
IDS_STARTUP "Menu Démarrer\\Programmes\\Démarrage"
|
||||
IDS_RECENT "Recent"
|
||||
IDS_SENDTO "SendTo"
|
||||
IDS_STARTMENU "Menu Démarrer"
|
||||
IDS_MYMUSIC "Mes documents\\Ma musique"
|
||||
IDS_MYVIDEO "Mes documents\\Mes vidéos"
|
||||
IDS_DESKTOPDIRECTORY "Bureau"
|
||||
IDS_NETHOOD "Voisinage Réseau"
|
||||
IDS_TEMPLATES "Modèles"
|
||||
IDS_APPDATA "Application Data"
|
||||
IDS_PRINTHOOD "Voisinage d'impression"
|
||||
IDS_LOCAL_APPDATA "Local Settings\\Application Data"
|
||||
IDS_INTERNET_CACHE "Temporary Internet Files"
|
||||
IDS_COOKIES "Cookies"
|
||||
IDS_HISTORY "Historique"
|
||||
IDS_PROGRAM_FILES "Program Files"
|
||||
IDS_MYPICTURES "Mes documents\\Mes images"
|
||||
IDS_PROGRAM_FILES_COMMON "Program Files\\Fichiers communs"
|
||||
IDS_COMMON_DOCUMENTS "Documents"
|
||||
IDS_ADMINTOOLS "Menu Démarrer\\Programmes\\Outils d'administration"
|
||||
IDS_COMMON_MUSIC "Documents\\Ma musique"
|
||||
IDS_COMMON_PICTURES "Documents\\Mes images"
|
||||
IDS_COMMON_VIDEO "Documents\\Mes vidéos"
|
||||
IDS_CDBURN_AREA "Local Settings\\Application Data\\Microsoft\\CD Burning"
|
||||
}
|
||||
|
|
|
@ -220,4 +220,7 @@ UINT SHELL_FindExecutable(LPCWSTR lpPath, LPCWSTR lpFile, LPCWSTR lpOperation,
|
|||
|
||||
extern WCHAR swShell32Name[MAX_PATH];
|
||||
|
||||
/* Default shell folder value registration */
|
||||
HRESULT SHELL_RegisterShellFolders(void);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -761,7 +761,7 @@ void WINAPI SHAddToRecentDocs (UINT uFlags,LPCVOID pv)
|
|||
SHGetPathFromIDListA((LPCITEMIDLIST) pv, doc_name);
|
||||
}
|
||||
else {
|
||||
lstrcpyA(doc_name, (LPSTR) pv);
|
||||
lstrcpyA(doc_name, (LPCSTR) pv);
|
||||
}
|
||||
TRACE("full document name %s\n", doc_name);
|
||||
PathStripPathA(doc_name);
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -3,8 +3,8 @@
|
|||
*
|
||||
* Copyright 2000 Juergen Schmied
|
||||
* Copyright 2002 Andriy Palamarchuk
|
||||
* Copyright 2002 Dietrich Teickner (from Odin)
|
||||
* Copyright 2002 Rolf Kalbermatter
|
||||
* Copyright 2004 Dietrich Teickner (from Odin)
|
||||
* Copyright 2004 Rolf Kalbermatter
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -56,15 +56,16 @@ static const WCHAR wWildcardFile[] = {'*',0};
|
|||
static const WCHAR wWildcardChars[] = {'*','?',0};
|
||||
static const WCHAR wBackslash[] = {'\\',0};
|
||||
|
||||
static BOOL SHELL_DeleteDirectoryW(LPCWSTR pszDir, BOOL bShowUI);
|
||||
static BOOL SHELL_DeleteDirectoryW(LPCWSTR path, BOOL bShowUI);
|
||||
static DWORD SHNotifyCreateDirectoryA(LPCSTR path, LPSECURITY_ATTRIBUTES sec);
|
||||
static DWORD SHNotifyCreateDirectoryW(LPCWSTR path, LPSECURITY_ATTRIBUTES sec);
|
||||
static DWORD SHNotifyRemoveDirectoryA(LPCSTR path);
|
||||
static DWORD SHNotifyRemoveDirectoryW(LPCWSTR path);
|
||||
static DWORD SHNotifyDeleteFileA(LPCSTR path);
|
||||
static DWORD SHNotifyDeleteFileW(LPCWSTR path);
|
||||
static DWORD SHNotifyMoveFileW(LPCWSTR src, LPCWSTR dest, BOOL bRenameIfExists);
|
||||
static DWORD SHNotifyCopyFileW(LPCWSTR src, LPCWSTR dest, BOOL bRenameIfExists);
|
||||
static DWORD SHNotifyMoveFileW(LPCWSTR src, LPCWSTR dest);
|
||||
static DWORD SHNotifyCopyFileW(LPCWSTR src, LPCWSTR dest, BOOL bFailIfExists);
|
||||
static DWORD SHFindAttrW(LPCWSTR pName, BOOL fileOnly);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
@ -130,14 +131,14 @@ BOOL SHELL_ConfirmDialogW(int nKindOfDialog, LPCWSTR szDir)
|
|||
return (IDOK == MessageBoxW(GetActiveWindow(), szBuffer, szCaption, MB_OKCANCEL | MB_ICONEXCLAMATION));
|
||||
}
|
||||
|
||||
static DWORD SHELL32_AnsiToUnicodeBuf(LPCSTR aPath, LPWSTR *wPath, DWORD minlen)
|
||||
static DWORD SHELL32_AnsiToUnicodeBuf(LPCSTR aPath, LPWSTR *wPath, DWORD minChars)
|
||||
{
|
||||
DWORD len = MultiByteToWideChar(CP_ACP, 0, aPath, -1, NULL, 0);
|
||||
|
||||
if (len < minlen)
|
||||
len = minlen;
|
||||
if (len < minChars)
|
||||
len = minChars;
|
||||
|
||||
*wPath = HeapAlloc(GetProcessHeap(), 0, len);
|
||||
*wPath = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
|
||||
if (*wPath)
|
||||
{
|
||||
MultiByteToWideChar(CP_ACP, 0, aPath, -1, *wPath, len);
|
||||
|
@ -152,9 +153,10 @@ static void SHELL32_FreeUnicodeBuf(LPWSTR wPath)
|
|||
}
|
||||
|
||||
/**************************************************************************
|
||||
* SHELL_DeleteDirectoryA() [internal]
|
||||
* SHELL_DeleteDirectory() [internal]
|
||||
*
|
||||
* like rm -r
|
||||
* Asks for confirmation when bShowUI is true and deletes the directory and
|
||||
* all its subdirectories and files if necessary.
|
||||
*/
|
||||
BOOL SHELL_DeleteDirectoryA(LPCSTR pszDir, BOOL bShowUI)
|
||||
{
|
||||
|
@ -292,7 +294,6 @@ BOOL WINAPI Win32CreateDirectoryAW(LPCVOID path, LPSECURITY_ATTRIBUTES sec)
|
|||
* Verified on Win98 / IE 5 (SHELL32 4.72, March 1999 build) to be ANSI.
|
||||
* This is Unicode on NT/2000
|
||||
*/
|
||||
|
||||
static DWORD SHNotifyRemoveDirectoryA(LPCSTR path)
|
||||
{
|
||||
LPWSTR wPath;
|
||||
|
@ -357,7 +358,6 @@ BOOL WINAPI Win32RemoveDirectoryAW(LPCVOID path)
|
|||
* Verified on Win98 / IE 5 (SHELL32 4.72, March 1999 build) to be ANSI.
|
||||
* This is Unicode on NT/2000
|
||||
*/
|
||||
|
||||
static DWORD SHNotifyDeleteFileA(LPCSTR path)
|
||||
{
|
||||
LPWSTR wPath;
|
||||
|
@ -416,35 +416,29 @@ DWORD WINAPI Win32DeleteFileAW(LPCVOID path)
|
|||
* PARAMS
|
||||
* src [I] path to source file to move
|
||||
* dest [I] path to target file to move to
|
||||
* bRename [I] if TRUE, the target file will be renamed if a
|
||||
* file with this name already exists
|
||||
*
|
||||
* RETURNS
|
||||
* ERORR_SUCCESS if successful
|
||||
*/
|
||||
static DWORD SHNotifyMoveFileW(LPCWSTR src, LPCWSTR dest, BOOL bRename)
|
||||
static DWORD SHNotifyMoveFileW(LPCWSTR src, LPCWSTR dest)
|
||||
{
|
||||
BOOL ret;
|
||||
|
||||
TRACE("(%s %s %s)\n", debugstr_w(src), debugstr_w(dest), bRename ? "renameIfExists" : "");
|
||||
TRACE("(%s %s)\n", debugstr_w(src), debugstr_w(dest));
|
||||
|
||||
ret = MoveFileW(src, dest);
|
||||
if (!ret)
|
||||
{
|
||||
/* Source file may be write protected or a system file */
|
||||
DWORD dwAttr = GetFileAttributesW(src);
|
||||
if (IsAttrib(dwAttr, FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_SYSTEM))
|
||||
if (SetFileAttributesW(src, dwAttr & ~(FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_SYSTEM)))
|
||||
ret = MoveFileW(src, dest);
|
||||
DWORD dwAttr;
|
||||
|
||||
if (!ret && bRename)
|
||||
dwAttr = SHFindAttrW(dest, FALSE);
|
||||
if (INVALID_FILE_ATTRIBUTES == dwAttr)
|
||||
{
|
||||
/* Destination file probably exists */
|
||||
dwAttr = GetFileAttributesW(dest);
|
||||
if (dwAttr != INVALID_FILE_ATTRIBUTES)
|
||||
{
|
||||
FIXME("Rename on move to existing file not implemented!\n");
|
||||
}
|
||||
/* Source file may be write protected or a system file */
|
||||
dwAttr = GetFileAttributesW(src);
|
||||
if (IsAttrib(dwAttr, FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_SYSTEM))
|
||||
if (SetFileAttributesW(src, dwAttr & ~(FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_SYSTEM)))
|
||||
ret = MoveFileW(src, dest);
|
||||
}
|
||||
}
|
||||
if (ret)
|
||||
|
@ -461,30 +455,21 @@ static DWORD SHNotifyMoveFileW(LPCWSTR src, LPCWSTR dest, BOOL bRename)
|
|||
* Copies a file. Also triggers a change notify if one exists.
|
||||
*
|
||||
* PARAMS
|
||||
* src [I] path to source file to move
|
||||
* dest [I] path to target file to move to
|
||||
* bRename [I] if TRUE, the target file will be renamed if a
|
||||
* file with this name already exists
|
||||
* src [I] path to source file to move
|
||||
* dest [I] path to target file to move to
|
||||
* bFailIfExists [I] if TRUE, the target file will not be overwritten if
|
||||
* a file with this name already exists
|
||||
*
|
||||
* RETURNS
|
||||
* ERROR_SUCCESS if successful
|
||||
*/
|
||||
static DWORD SHNotifyCopyFileW(LPCWSTR src, LPCWSTR dest, BOOL bRename)
|
||||
static DWORD SHNotifyCopyFileW(LPCWSTR src, LPCWSTR dest, BOOL bFailIfExists)
|
||||
{
|
||||
BOOL ret;
|
||||
|
||||
TRACE("(%s %s %s)\n", debugstr_w(src), debugstr_w(dest), bRename ? "renameIfExists" : "");
|
||||
TRACE("(%s %s %s)\n", debugstr_w(src), debugstr_w(dest), bFailIfExists ? "failIfExists" : "");
|
||||
|
||||
ret = CopyFileW(src, dest, TRUE);
|
||||
if (!ret && bRename)
|
||||
{
|
||||
/* Destination file probably exists */
|
||||
DWORD dwAttr = GetFileAttributesW(dest);
|
||||
if (dwAttr != INVALID_FILE_ATTRIBUTES)
|
||||
{
|
||||
FIXME("Rename on copy to existing file not implemented!\n");
|
||||
}
|
||||
}
|
||||
ret = CopyFileW(src, dest, bFailIfExists);
|
||||
if (ret)
|
||||
{
|
||||
SHChangeNotify(SHCNE_CREATE, SHCNF_PATHW, dest, NULL);
|
||||
|
@ -546,7 +531,9 @@ DWORD WINAPI SHCreateDirectory(HWND hWnd, LPCVOID path)
|
|||
* ERROR_FILENAME_EXCED_RANGE if the filename was to long to process
|
||||
*
|
||||
* FIXME: Not implemented yet;
|
||||
* SHCreateDirectoryEx also verifies that the files will be visible. If not:
|
||||
* SHCreateDirectoryEx also verifies that the files in the directory will be visible
|
||||
* if the path is a network path to deal with network drivers which might have a limited
|
||||
* but unknown maximum path length. If not:
|
||||
*
|
||||
* If hWnd is set to a valid window handle, a message box is displayed warning
|
||||
* the user that the files may not be accessible. If the user chooses not to
|
||||
|
@ -591,15 +578,76 @@ int WINAPI SHCreateDirectoryExW(HWND hWnd, LPCWSTR path, LPSECURITY_ATTRIBUTES s
|
|||
ret != ERROR_ALREADY_EXISTS &&
|
||||
ret != ERROR_FILENAME_EXCED_RANGE)
|
||||
{
|
||||
/* handling network file names?
|
||||
lstrcpynW(pathName, path, MAX_PATH);
|
||||
lpStr = PathAddBackslashW(pathName);*/
|
||||
FIXME("Semi-stub, non zero hWnd should be used somehow?\n");
|
||||
WCHAR *pEnd, *pSlash, szTemp[MAX_PATH + 1]; /* extra for PathAddBackslash() */
|
||||
|
||||
lstrcpynW(szTemp, path, MAX_PATH);
|
||||
pEnd = PathAddBackslashW(szTemp);
|
||||
pSlash = szTemp + 3;
|
||||
|
||||
while (*pSlash)
|
||||
{
|
||||
while (*pSlash && *pSlash != '\\')
|
||||
pSlash = CharNextW(pSlash);
|
||||
|
||||
if (*pSlash)
|
||||
{
|
||||
*pSlash = 0; /* terminate path at separator */
|
||||
|
||||
ret = SHNotifyCreateDirectoryW(szTemp, pSlash + 1 == pEnd ? sec : NULL);
|
||||
}
|
||||
*pSlash++ = '\\'; /* put the separator back */
|
||||
}
|
||||
}
|
||||
|
||||
if (ret && hWnd && (ERROR_CANCELLED != ret))
|
||||
{
|
||||
/* We failed and should show a dialog box */
|
||||
FIXME("Show system error message, creating path %s, failed with error %d\n", debugstr_w(path), ret);
|
||||
ret = ERROR_CANCELLED; /* Error has been already presented to user (not really yet!) */
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
* SHFindAttrW [internal]
|
||||
*
|
||||
* Get the Attributes for a file or directory. The difference to GetAttributes()
|
||||
* is that this function will also work for paths containing wildcard characters
|
||||
* in its filename.
|
||||
|
||||
* PARAMS
|
||||
* path [I] path of directory or file to check
|
||||
* fileOnly [I] TRUE if only files should be found
|
||||
*
|
||||
* RETURNS
|
||||
* INVALID_FILE_ATTRIBUTES if the path does not exist, the actual attributes of
|
||||
* the first file or directory found otherwise
|
||||
*/
|
||||
static DWORD SHFindAttrW(LPCWSTR pName, BOOL fileOnly)
|
||||
{
|
||||
WIN32_FIND_DATAW wfd;
|
||||
BOOL b_FileMask = fileOnly && (NULL != StrPBrkW(pName, wWildcardChars));
|
||||
DWORD dwAttr = INVALID_FILE_ATTRIBUTES;
|
||||
HANDLE hFind = FindFirstFileW(pName, &wfd);
|
||||
|
||||
TRACE("%s %d\n", debugstr_w(pName), fileOnly);
|
||||
if (INVALID_HANDLE_VALUE != hFind)
|
||||
{
|
||||
do
|
||||
{
|
||||
if (b_FileMask && IsAttribDir(wfd.dwFileAttributes))
|
||||
continue;
|
||||
dwAttr = wfd.dwFileAttributes;
|
||||
break;
|
||||
}
|
||||
while (FindNextFileW(hFind, &wfd));
|
||||
FindClose(hFind);
|
||||
}
|
||||
return dwAttr;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* SHFileStrICmp HelperFunction for SHFileOperationW
|
||||
|
@ -690,7 +738,7 @@ BOOL SHELL_FileNamesMatch(LPCWSTR pszFiles1, LPCWSTR pszFiles2, BOOL bOnlySrc)
|
|||
{
|
||||
if (NULL == StrPBrkW(pszFiles1, wWildcardChars))
|
||||
{
|
||||
if (-1 == GetFileAttributesW(pszFiles1))
|
||||
if (INVALID_FILE_ATTRIBUTES == GetFileAttributesW(pszFiles1))
|
||||
return FALSE;
|
||||
}
|
||||
pszFiles1 += lstrlenW(pszFiles1) + 1;
|
||||
|
@ -1070,7 +1118,7 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
|
|||
b_SameTailName = SHFileStrICmpW(pToFile, pFromFile, NULL, NULL);
|
||||
|
||||
ToPathAttr = ToAttr = GetFileAttributesW(pTempTo);
|
||||
if (!b_Mask && (ToAttr == -1) && (pToFile))
|
||||
if (!b_Mask && (ToAttr == INVALID_FILE_ATTRIBUTES) && (pToFile))
|
||||
{
|
||||
pToFile[0] = '\0';
|
||||
ToPathAttr = GetFileAttributesW(pTempTo);
|
||||
|
@ -1091,7 +1139,7 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
|
|||
retCode=0x2;
|
||||
goto shfileop_end;
|
||||
}
|
||||
if (-1 == ToPathAttr)
|
||||
if (INVALID_FILE_ATTRIBUTES == ToPathAttr)
|
||||
{
|
||||
retCode = 0x75;
|
||||
goto shfileop_end;
|
||||
|
@ -1102,7 +1150,7 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
|
|||
goto shfileop_end;
|
||||
}
|
||||
/* we use SHNotifyMoveFile() instead MoveFileW */
|
||||
if (SHNotifyMoveFileW(pTempFrom, pTempTo, nFileOp.fFlags & FOF_RENAMEONCOLLISION) != ERROR_SUCCESS)
|
||||
if (SHNotifyMoveFileW(pTempFrom, pTempTo) != ERROR_SUCCESS)
|
||||
{
|
||||
/* we need still the value for the returncode, we use the mostly assumed */
|
||||
retCode = 0xb7;
|
||||
|
@ -1146,16 +1194,16 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
|
|||
continue;
|
||||
|
||||
/* only FO_COPY/FO_MOVE without mask, all others are (must be) solved */
|
||||
if (IsAttribDir(wfd.dwFileAttributes) && (ToAttr == -1))
|
||||
if (IsAttribDir(wfd.dwFileAttributes) && (ToAttr == INVALID_FILE_ATTRIBUTES))
|
||||
{
|
||||
if (pToFile)
|
||||
{
|
||||
pToFile[0] = '\0';
|
||||
ToPathAttr = GetFileAttributesW(pTempTo);
|
||||
if ((ToPathAttr == -1) && b_ToValid)
|
||||
if ((ToPathAttr == INVALID_FILE_ATTRIBUTES) && b_ToValid)
|
||||
{
|
||||
/* create dir must be here, sample target D:\y\ *.* create with RC=10003 */
|
||||
if (SHCreateDirectoryExW(NULL, pTempTo, NULL))
|
||||
if (SHNotifyCreateDirectoryW(pTempTo, NULL))
|
||||
{
|
||||
retCode = 0x73;/* value unknown */
|
||||
goto shfileop_end;
|
||||
|
@ -1208,7 +1256,7 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
|
|||
}
|
||||
|
||||
/* singlesource + no mask */
|
||||
if (-1 == (ToAttr & ToPathAttr))
|
||||
if (INVALID_FILE_ATTRIBUTES == (ToAttr & ToPathAttr))
|
||||
{
|
||||
/* Target-dir does not exist, and cannot be created */
|
||||
retCode=0x75;
|
||||
|
@ -1219,7 +1267,7 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
|
|||
{
|
||||
case FO_MOVE:
|
||||
pToFile = NULL;
|
||||
if ((ToAttr == -1) && SHFileStrICmpW(pTempFrom, pTempTo, pFromFile, NULL))
|
||||
if ((ToAttr == INVALID_FILE_ATTRIBUTES) && SHFileStrICmpW(pTempFrom, pTempTo, pFromFile, NULL))
|
||||
{
|
||||
nFileOp.wFunc = ((level+1)<<4) + FO_RENAME;
|
||||
}
|
||||
|
@ -1253,7 +1301,7 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
|
|||
}
|
||||
if (IsAttribDir((ToAttr & wfd.dwFileAttributes)))
|
||||
{
|
||||
if (IsAttribDir(ToAttr) || !SHCreateDirectoryExW(NULL,pTempTo, NULL))
|
||||
if (IsAttribDir(ToAttr) || !SHNotifyCreateDirectoryW(pTempTo, NULL))
|
||||
{
|
||||
/* ??? nFileOp.fFlags = (nFileOp.fFlags | FOF_MULTIDESTFILES); */
|
||||
SHFileStrCpyCatW(pTempFrom, NULL, wWildcardFile);
|
||||
|
@ -1274,7 +1322,7 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
|
|||
retCode = 0x73;
|
||||
goto shfileop_end;
|
||||
}
|
||||
if (SHNotifyCopyFileW(pTempFrom, pTempTo, nFileOp.fFlags & FOF_RENAMEONCOLLISION) != ERROR_SUCCESS)
|
||||
if (SHNotifyCopyFileW(pTempFrom, pTempTo, TRUE) != ERROR_SUCCESS)
|
||||
{
|
||||
retCode = 0x77; /* value unknown */
|
||||
goto shfileop_end;
|
||||
|
|
|
@ -143,7 +143,7 @@ LPCWSTR GetNextElementW (LPCWSTR pszNext, LPWSTR pszOut, DWORD dwOut)
|
|||
while (*pszTail && (*pszTail != (WCHAR) '\\'))
|
||||
pszTail++;
|
||||
|
||||
dwCopy = (WCHAR *) pszTail - (WCHAR *) pszNext + 1;
|
||||
dwCopy = (const WCHAR *) pszTail - (const WCHAR *) pszNext + 1;
|
||||
lstrcpynW (pszOut, pszNext, (dwOut < dwCopy) ? dwOut : dwCopy);
|
||||
|
||||
if (*pszTail)
|
||||
|
|
|
@ -897,15 +897,15 @@ BOOL WINAPI SHInitRestricted(LPCVOID unused, LPCVOID inpRegKey)
|
|||
{
|
||||
if (SHELL_OsIsUnicode())
|
||||
{
|
||||
if (lstrcmpiW((LPWSTR)inpRegKey, strRegistryPolicyW) &&
|
||||
lstrcmpiW((LPWSTR)inpRegKey, strPolicyW))
|
||||
if (lstrcmpiW((LPCWSTR)inpRegKey, strRegistryPolicyW) &&
|
||||
lstrcmpiW((LPCWSTR)inpRegKey, strPolicyW))
|
||||
/* doesn't match, fail */
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (lstrcmpiA((LPSTR)inpRegKey, strRegistryPolicyA) &&
|
||||
lstrcmpiA((LPSTR)inpRegKey, strPolicyA))
|
||||
if (lstrcmpiA((LPCSTR)inpRegKey, strRegistryPolicyA) &&
|
||||
lstrcmpiA((LPCSTR)inpRegKey, strPolicyA))
|
||||
/* doesn't match, fail */
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -56,6 +56,34 @@
|
|||
#define IDS_SHUTDOWN_TITLE 42
|
||||
#define IDS_SHUTDOWN_PROMPT 43
|
||||
|
||||
#define IDS_PROGRAMS 45
|
||||
#define IDS_PERSONAL 46
|
||||
#define IDS_FAVORITES 47
|
||||
#define IDS_STARTUP 48
|
||||
#define IDS_RECENT 49
|
||||
#define IDS_SENDTO 50
|
||||
#define IDS_STARTMENU 51
|
||||
#define IDS_MYMUSIC 52
|
||||
#define IDS_MYVIDEO 53
|
||||
#define IDS_DESKTOPDIRECTORY 54
|
||||
#define IDS_NETHOOD 55
|
||||
#define IDS_TEMPLATES 56
|
||||
#define IDS_APPDATA 57
|
||||
#define IDS_PRINTHOOD 58
|
||||
#define IDS_LOCAL_APPDATA 59
|
||||
#define IDS_INTERNET_CACHE 60
|
||||
#define IDS_COOKIES 61
|
||||
#define IDS_HISTORY 62
|
||||
#define IDS_PROGRAM_FILES 63
|
||||
#define IDS_MYPICTURES 64
|
||||
#define IDS_PROGRAM_FILES_COMMON 65
|
||||
#define IDS_COMMON_DOCUMENTS 66
|
||||
#define IDS_ADMINTOOLS 67
|
||||
#define IDS_COMMON_MUSIC 68
|
||||
#define IDS_COMMON_PICTURES 69
|
||||
#define IDS_COMMON_VIDEO 70
|
||||
#define IDS_CDBURN_AREA 71
|
||||
|
||||
/* browse for folder dialog box */
|
||||
#define IDD_STATUS 0x3743
|
||||
#define IDD_TITLE 0x3742
|
||||
|
|
|
@ -429,14 +429,6 @@ BOOL WINAPI PathYetAnotherMakeUniqueName(
|
|||
LPCWSTR lpszShortName,
|
||||
LPCWSTR lpszLongName);
|
||||
|
||||
/* PathCleanupSpec return values */
|
||||
#define PCS_REPLACEDCHARS 0x00000001
|
||||
#define PCS_REMOVEDCHARS 0x00000002
|
||||
#define PCS_SHORTENED 0x00000004
|
||||
#define PCS_PATHTOOLONG 0x80000008
|
||||
|
||||
DWORD WINAPI PathCleanupSpecAW(LPCVOID lpszPath, LPVOID lpszFile);
|
||||
|
||||
BOOL WINAPI PathQualifyA(LPCSTR path);
|
||||
BOOL WINAPI PathQualifyW(LPCWSTR path);
|
||||
#define PathQualify WINELIB_NAME_AW(PathQualify)
|
||||
|
|
|
@ -18,11 +18,11 @@
|
|||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#define WINE_FILEVERSION_MAJOR 4
|
||||
#define WINE_FILEVERSION_MINOR 72
|
||||
#define WINE_FILEVERSION_BUILD 3110
|
||||
#define WINE_FILEVERSION_MAJOR 6
|
||||
#define WINE_FILEVERSION_MINOR 0
|
||||
#define WINE_FILEVERSION_BUILD 2600
|
||||
#define WINE_FILEVERSION_PLATFORMID 1
|
||||
|
||||
/* FIXME: when libs/wpp gets fixed to support concatenation we can remove
|
||||
* this and define it in version.rc */
|
||||
#define WINE_FILEVERSION "4.72.3110.1"
|
||||
#define WINE_FILEVERSION "6.0.2600.1"
|
||||
|
|
|
@ -16,9 +16,9 @@
|
|||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#define WINE_FILEVERSION 4,0,0,0
|
||||
#define WINE_FILEVERSION_STR "4.0"
|
||||
#define WINE_FILEDESCRIPTION_STR "Wine core dll"
|
||||
#define WINE_FILENAME_STR "shell.dll"
|
||||
#define WINE_FILEVERSION 4,0,0,0
|
||||
#define WINE_FILEVERSION_STR "4.0"
|
||||
|
||||
#include "wine/wine_common_ver.rc"
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -273,6 +273,9 @@ extern "C" {
|
|||
#define CMIC_VALID_SEE_FLAGS SEE_VALID_CMIC_FLAGS
|
||||
#define GIL_OPENICON 1
|
||||
#define GIL_FORSHELL 2
|
||||
#define GIL_ASYNC 32
|
||||
#define GIL_DEFAULTICON 64
|
||||
#define GIL_FORSHORTCUT 128
|
||||
#define GIL_SIMULATEDOC 1
|
||||
#define GIL_PERINSTANCE 2
|
||||
#define GIL_PERCLASS 4
|
||||
|
@ -377,6 +380,11 @@ extern "C" {
|
|||
#define SHCNF_PATH SHCNF_PATHA
|
||||
#define SHCNF_PRINTER SHCNF_PRINTERA
|
||||
#endif
|
||||
#define PCS_FATAL 0x80000000
|
||||
#define PCS_REPLACEDCHAR 0x00000001
|
||||
#define PCS_REMOVEDCHAR 0x00000002
|
||||
#define PCS_TRUNCATED 0x00000004
|
||||
#define PCS_PATHTOOLONG 0x00000008
|
||||
|
||||
typedef ULONG SFGAOF;
|
||||
typedef DWORD SHGDNF;
|
||||
|
@ -431,6 +439,10 @@ typedef enum tagSHGDN {
|
|||
SHGDN_FORADDRESSBAR=0x4000,
|
||||
SHGDN_FORPARSING=0x8000
|
||||
} SHGNO;
|
||||
typedef enum {
|
||||
SHGFP_TYPE_CURRENT = 0,
|
||||
SHGFP_TYPE_DEFAULT = 1
|
||||
} SHGFP_TYPE;
|
||||
typedef enum tagSHCONTF {
|
||||
SHCONTF_FOLDERS = 32,
|
||||
SHCONTF_NONFOLDERS = 64,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue