Revert revision 14118 changes
Modified: trunk/reactos/lib/shell32/Makefile.in
Modified: trunk/reactos/lib/shell32/brsfolder.c
Modified: trunk/reactos/lib/shell32/classes.c
Modified: trunk/reactos/lib/shell32/clipboard.c
Modified: trunk/reactos/lib/shell32/dialogs.c
Modified: trunk/reactos/lib/shell32/enumidlist.c
Modified: trunk/reactos/lib/shell32/enumidlist.h
Modified: trunk/reactos/lib/shell32/folders.c
Modified: trunk/reactos/lib/shell32/pidl.c
Modified: trunk/reactos/lib/shell32/pidl.h
Modified: trunk/reactos/lib/shell32/shell32.spec
Modified: trunk/reactos/lib/shell32/shell32_Es.rc
Modified: trunk/reactos/lib/shell32/shell32_Pt.rc
Modified: trunk/reactos/lib/shell32/shell32_main.c
Modified: trunk/reactos/lib/shell32/shell32_main.h
Modified: trunk/reactos/lib/shell32/shelllink.c
Modified: trunk/reactos/lib/shell32/shellpath.c
Modified: trunk/reactos/lib/shell32/shfldr.h
Modified: trunk/reactos/lib/shell32/shfldr_desktop.c
Modified: trunk/reactos/lib/shell32/shfldr_fs.c
Modified: trunk/reactos/lib/shell32/shfldr_mycomp.c
Deleted: trunk/reactos/lib/shell32/shfldr_unixfs.c
Modified: trunk/reactos/lib/shell32/shlexec.c
Modified: trunk/reactos/lib/shell32/shlfileop.c
Modified: trunk/reactos/lib/shell32/shlfolder.c
Modified: trunk/reactos/lib/shell32/shlfsbind.c
Modified: trunk/reactos/lib/shell32/shlview.c

Modified: trunk/reactos/lib/shell32/Makefile.in
--- trunk/reactos/lib/shell32/Makefile.in	2005-03-16 11:50:24 UTC (rev 14133)
+++ trunk/reactos/lib/shell32/Makefile.in	2005-03-16 12:33:26 UTC (rev 14134)
@@ -37,7 +37,6 @@
 	shfldr_desktop.c \
 	shfldr_fs.c \
 	shfldr_mycomp.c \
-	shfldr_unixfs.c \
 	shlexec.c \
 	shlfileop.c \
 	shlfolder.c \
@@ -78,7 +77,7 @@
 	$(LDPATH) $(RC16) $(RC16FLAGS) -fo$@ $(SRCDIR)/version16.rc
 
 shell.spec.c: shell.spec version16.res
-	$(WINEBUILD) $(DEFS) $(DLLFLAGS) --dll -o $@ --main-module $(MODULE) --res version16.res --export $(SRCDIR)/shell.spec
+	$(WINEBUILD) $(DEFS) $(DLLFLAGS) -o $@ --main-module $(MODULE) --res version16.res --dll $(SRCDIR)/shell.spec
 
 authors.c: $(TOPSRCDIR)/AUTHORS
 	(LC_ALL=C; export LC_ALL; echo 'const char * const SHELL_Authors[] = {' && \

Modified: trunk/reactos/lib/shell32/brsfolder.c
--- trunk/reactos/lib/shell32/brsfolder.c	2005-03-16 11:50:24 UTC (rev 14133)
+++ trunk/reactos/lib/shell32/brsfolder.c	2005-03-16 12:33:26 UTC (rev 14134)
@@ -55,95 +55,68 @@
     return SHCONTF_FOLDERS | (ulFlags & BIF_BROWSEINCLUDEFILES ? SHCONTF_NONFOLDERS : 0);
 }
 
-/******************************************************************************
- * InitializeTreeView [Internal]
- *
- * Called from WM_INITDIALOG handler.
- * 
- * PARAMS
- *  hwndParent [I] The BrowseForFolder dialog
- *  root       [I] ITEMIDLIST of the root shell folder
- */
 static void InitializeTreeView(HWND hwndParent, LPCITEMIDLIST root)
 {
-    LPITEMIDLIST pidlParent, pidlChild;
-    HIMAGELIST hImageList;
-    HRESULT hr;
-    IShellFolder *lpsfParent, *lpsfRoot;
-    IEnumIDList * pEnumChildren = NULL;
+	HIMAGELIST	hImageList;
+	IShellFolder *	lpsf;
+	HRESULT	hr;
+	IEnumIDList * pEnumIL = NULL;
+	LPITEMIDLIST parentofroot;
+	parentofroot = ILClone(root);
+	ILRemoveLastID(parentofroot);
 
-    TRACE("dlg=%p tree=%p\n", hwndParent, hwndTreeView );
-    
-    hwndTreeView = GetDlgItem (hwndParent, IDD_TREEVIEW);
-    if (!hwndTreeView) {
-        FIXME("Could not get handle to treeview control! Error: %08lx\n", GetLastError());
-        return;
-    }
-    Shell_GetImageList(NULL, &hImageList);
+	hwndTreeView = GetDlgItem (hwndParent, IDD_TREEVIEW);
+	Shell_GetImageList(NULL, &hImageList);
 
-    if (hImageList)
-        TreeView_SetImageList(hwndTreeView, hImageList, 0);
+	TRACE("dlg=%p tree=%p\n", hwndParent, hwndTreeView );
 
-    /* We want to call InsertTreeViewItem down the code, in order to insert
-     * the root item of the treeview. Due to InsertTreeViewItem's signature, 
-     * we need the following to do this:
-     *
-     * + An ITEMIDLIST corresponding to _the parent_ of root. 
-     * + An ITEMIDLIST, which is a relative path from root's parent to root 
-     *   (containing a single SHITEMID).
-     * + An IShellFolder interface pointer of root's parent folder.
-     *
-     * If root is 'Desktop', then root's parent is also 'Desktop'.
-     */
+	if (hImageList && hwndTreeView)
+	  TreeView_SetImageList(hwndTreeView, hImageList, 0);
 
-    pidlParent = ILClone(root);
-    ILRemoveLastID(pidlParent);
-    pidlChild = ILClone(ILFindLastID(root));
-    
-    if (_ILIsDesktop(pidlParent)) {
-        hr = SHGetDesktopFolder(&lpsfParent);
-    } else {
-        IShellFolder *lpsfDesktop;
-        hr = SHGetDesktopFolder(&lpsfDesktop);
-        if (!SUCCEEDED(hr)) {
-            WARN("SHGetDesktopFolder failed! hr = %08lx\n", hr);
-            return;
-        }
-        hr = IShellFolder_BindToObject(lpsfDesktop, pidlParent, 0, &IID_IShellFolder, (LPVOID*)&lpsfParent);
-        IShellFolder_Release(lpsfDesktop);
-    }
-    
-    if (!SUCCEEDED(hr)) {
-        WARN("Could not bind to parent shell folder! hr = %08lx\n", hr);
-        return;
-    }
+	if (_ILIsDesktop (root)) {
+	   hr = SHGetDesktopFolder(&lpsf);
+	} else {
+	   IShellFolder *	lpsfdesktop;
 
-    if (pidlChild && pidlChild->mkid.cb) {
-        hr = IShellFolder_BindToObject(lpsfParent, pidlChild, 0, &IID_IShellFolder, (LPVOID*)&lpsfRoot);
-    } else {
-        lpsfRoot = lpsfParent;
-        hr = IShellFolder_AddRef(lpsfParent);
-    }
-    
-    if (!SUCCEEDED(hr)) {
-        WARN("Could not bind to root shell folder! hr = %08lx\n", hr);
-        IShellFolder_Release(lpsfParent);
-        return;
-    }
+	   hr = SHGetDesktopFolder(&lpsfdesktop);
+	   if (SUCCEEDED(hr)) {
+	      hr = IShellFolder_BindToObject(lpsfdesktop, parentofroot, 0,(REFIID)&IID_IShellFolder,(LPVOID *)&lpsf);
+	      IShellFolder_Release(lpsfdesktop);
+	   }
+	}
+	if (SUCCEEDED(hr))
+	{
+	    IShellFolder * pSFRoot;
+	    if (_ILIsPidlSimple(root))
+	    {
+	        pSFRoot = lpsf;
+	        IShellFolder_AddRef(pSFRoot);
+	    }
+	    else
+	        hr = IShellFolder_BindToObject(lpsf,ILFindLastID(root),0,&IID_IShellFolder,(LPVOID *)&pSFRoot);
+	    if (SUCCEEDED(hr))
+	    {
+	        hr = IShellFolder_EnumObjects(
+	            pSFRoot,
+	            hwndParent,
+	            BrowseFlagsToSHCONTF(lpBrowseInfo->ulFlags),
+	            &pEnumIL);
+	        IShellFolder_Release(pSFRoot);
+	    }
+	}
 
-    hr = IShellFolder_EnumObjects(lpsfRoot, hwndParent, BrowseFlagsToSHCONTF(lpBrowseInfo->ulFlags), &pEnumChildren);
-    if (!SUCCEEDED(hr)) {
-        WARN("Could not get child iterator! hr = %08lx\n", hr);
-        IShellFolder_Release(lpsfParent);
-        IShellFolder_Release(lpsfRoot);
-        return;
-    }
+	if (SUCCEEDED(hr) && hwndTreeView)
+	{
+	  TreeView_DeleteAllItems(hwndTreeView);
+	  TreeView_Expand(hwndTreeView,
+	                  InsertTreeViewItem(lpsf, _ILIsPidlSimple(root) ? root : ILFindLastID(root), parentofroot, pEnumIL,  TVI_ROOT),
+	                  TVE_EXPAND);
+	}
 
-    TreeView_DeleteAllItems(hwndTreeView);
-    TreeView_Expand(hwndTreeView, InsertTreeViewItem(lpsfParent, pidlChild, pidlParent, pEnumChildren,  TVI_ROOT), TVE_EXPAND);
+	if (SUCCEEDED(hr))
+	  IShellFolder_Release(lpsf);
 
-    IShellFolder_Release(lpsfRoot);
-    IShellFolder_Release(lpsfParent);
+	TRACE("done\n");
 }
 
 static int GetIcon(LPITEMIDLIST lpi, UINT uFlags)
@@ -176,27 +149,12 @@
 
 typedef struct tagID
 {
-   LPSHELLFOLDER lpsfParent; /* IShellFolder of the parent */
-   LPITEMIDLIST  lpi;        /* PIDL relativ to parent */
-   LPITEMIDLIST  lpifq;      /* Fully qualified PIDL */
-   IEnumIDList*  pEnumIL;    /* Children iterator */ 
+   LPSHELLFOLDER lpsfParent;
+   LPITEMIDLIST  lpi;
+   LPITEMIDLIST  lpifq;
+   IEnumIDList*  pEnumIL;
 } TV_ITEMDATA, *LPTV_ITEMDATA;
 
-/******************************************************************************
- * GetName [Internal]
- *
- * Query a shell folder for the display name of one of it's children
- *
- * PARAMS
- *  lpsf           [I] IShellFolder interface of the folder to be queried.
- *  lpi            [I] ITEMIDLIST of the child, relative to parent
- *  dwFlags        [I] as in IShellFolder::GetDisplayNameOf
- *  lpFriendlyName [O] The desired display name in unicode
- *
- * RETURNS
- *  Success: TRUE
- *  Failure: FALSE
- */
 static BOOL GetName(LPSHELLFOLDER lpsf, LPCITEMIDLIST lpi, DWORD dwFlags, LPWSTR lpFriendlyName)
 {
 	BOOL   bSuccess=TRUE;
@@ -217,22 +175,7 @@
 	return bSuccess;
 }
 
-/******************************************************************************
- * InsertTreeViewItem [Internal]
- *
- * PARAMS
- *  lpsf       [I] IShellFolder interface of the item's parent shell folder 
- *  pidl       [I] ITEMIDLIST of the child to insert, relativ to parent 
- *  pidlParent [I] ITEMIDLIST of the parent shell folder
- *  pEnumIL    [I] Iterator for the children of the item to be inserted
- *  hParent    [I] The treeview-item that represents the parent shell folder
- *
- * RETURNS
- *  Success: Handle to the created and inserted treeview-item
- *  Failure: NULL
- */
-static HTREEITEM InsertTreeViewItem(IShellFolder * lpsf, LPCITEMIDLIST pidl, 
-    LPCITEMIDLIST pidlParent, IEnumIDList* pEnumIL, HTREEITEM hParent)
+static HTREEITEM InsertTreeViewItem(IShellFolder * lpsf, LPCITEMIDLIST pidl, LPCITEMIDLIST pidlParent, IEnumIDList* pEnumIL, HTREEITEM hParent)
 {
 	TVITEMW 	tvi;
 	TVINSERTSTRUCTW	tvins;
@@ -268,18 +211,6 @@
 	return (HTREEITEM)TreeView_InsertItemW(hwndTreeView, &tvins);
 }
 
-/******************************************************************************
- * FillTreeView [Internal]
- *
- * For each child (given by lpe) of the parent shell folder, which is given by 
- * lpsf and whose PIDL is pidl, insert a treeview-item right under hParent
- *
- * PARAMS
- *  lpsf    [I] IShellFolder interface of the parent shell folder
- *  pidl    [I] ITEMIDLIST of the parent shell folder
- *  hParent [I] The treeview item that represents the parent shell folder
- *  lpe     [I] An iterator for the children of the parent shell folder
- */
 static void FillTreeView(IShellFolder * lpsf, LPITEMIDLIST  pidl, HTREEITEM hParent, IEnumIDList* lpe)
 {
 	HTREEITEM	hPrev = 0;
@@ -288,11 +219,7 @@
 	HRESULT		hr;
 	HWND		hwnd=GetParent(hwndTreeView);
 
-	TRACE("%p %p %x %p\n",lpsf, pidl, (INT)hParent, lpe);
-
-	/* No IEnumIDList -> No children */
-	if (!lpe) return;
-	
+	TRACE("%p %p %x\n",lpsf, pidl, (INT)hParent);
 	SetCapture(GetParent(hwndTreeView));
 	SetCursor(LoadCursorA(0, (LPSTR)IDC_WAIT));
 

Modified: trunk/reactos/lib/shell32/classes.c
--- trunk/reactos/lib/shell32/classes.c	2005-03-16 11:50:24 UTC (rev 14133)
+++ trunk/reactos/lib/shell32/classes.c	2005-03-16 12:33:26 UTC (rev 14134)
@@ -116,7 +116,7 @@
 
 BOOL HCR_GetExecuteCommandW( HKEY hkeyClass, LPCWSTR szClass, LPCWSTR szVerb, LPWSTR szDest, DWORD len )
 {
-        static const WCHAR swShell[] = {'s','h','e','l','l','\\',0};
+        static const WCHAR swShell[] = {'\\','s','h','e','l','l','\\',0};
         static const WCHAR swCommand[] = {'\\','c','o','m','m','a','n','d',0};
 	BOOL	ret = FALSE;
 

Modified: trunk/reactos/lib/shell32/clipboard.c
--- trunk/reactos/lib/shell32/clipboard.c	2005-03-16 11:50:24 UTC (rev 14133)
+++ trunk/reactos/lib/shell32/clipboard.c	2005-03-16 12:33:26 UTC (rev 14134)
@@ -26,7 +26,7 @@
  * - a right mousebutton-copy sets the following formats:
  *  classic:
  *	Shell IDList Array
- *	Preferred Drop Effect
+ *	Prefered Drop Effect
  *	Shell Object Offsets
  *	HDROP
  *	FileName

Modified: trunk/reactos/lib/shell32/dialogs.c
--- trunk/reactos/lib/shell32/dialogs.c	2005-03-16 11:50:24 UTC (rev 14133)
+++ trunk/reactos/lib/shell32/dialogs.c	2005-03-16 12:33:26 UTC (rev 14134)
@@ -127,9 +127,9 @@
         case WM_INITDIALOG :
             prfdp = (RUNFILEDLGPARAMS *)lParam ;
             SetWindowTextA (hwnd, prfdp->lpstrTitle) ;
-            SetClassLongPtrW (hwnd, GCLP_HICON, (LPARAM)prfdp->hIcon) ;
-            SendMessageW (GetDlgItem (hwnd, 12297), STM_SETICON,
-                          (WPARAM)LoadIconW (NULL, (LPCWSTR)IDI_WINLOGO), 0);
+            SetClassLongA (hwnd, GCL_HICON, (LPARAM)prfdp->hIcon) ;
+            SendMessageA (GetDlgItem (hwnd, 12297), STM_SETICON,
+                          (WPARAM)LoadIconA (NULL, (LPSTR)IDI_WINLOGO), 0);
             FillList (GetDlgItem (hwnd, 12298), NULL) ;
             SetFocus (GetDlgItem (hwnd, 12298)) ;
             return TRUE ;
@@ -283,7 +283,7 @@
 
         if (NULL != pszLatest)
             {
-            if (!lstrcmpiA(pszCmd, pszLatest))
+            if (!strcasecmp (pszCmd, pszLatest))
                 {
                 /*
                 sprintf (szDbgMsg, "Found existing (%d).\n", Nix) ;

Modified: trunk/reactos/lib/shell32/enumidlist.c
--- trunk/reactos/lib/shell32/enumidlist.c	2005-03-16 11:50:24 UTC (rev 14133)
+++ trunk/reactos/lib/shell32/enumidlist.c	2005-03-16 12:33:26 UTC (rev 14134)
@@ -25,7 +25,6 @@
 #define COBJMACROS
 
 #include "wine/debug.h"
-#include "wine/unicode.h"
 #include "windef.h"
 #include "winbase.h"
 #include "winreg.h"
@@ -104,27 +103,24 @@
  */
 BOOL CreateFolderEnumList(
 	IEnumIDList *list,
-	LPCWSTR lpszPath,
+	LPCSTR lpszPath,
 	DWORD dwFlags)
 {
     LPITEMIDLIST pidl=NULL;
-    WIN32_FIND_DATAW stffile;
+    WIN32_FIND_DATAA stffile;
     HANDLE hFile;
-    WCHAR  szPath[MAX_PATH];
+    CHAR  szPath[MAX_PATH];
     BOOL succeeded = TRUE;
-    const static WCHAR stars[] = { '*','.','*',0 };
-    const static WCHAR dot[] = { '.',0 };
-    const static WCHAR dotdot[] = { '.','.',0 };
 
-    TRACE("(%p)->(path=%s flags=0x%08lx) \n",list,debugstr_w(lpszPath),dwFlags);
+    TRACE("(%p)->(path=%s flags=0x%08lx) \n",list,debugstr_a(lpszPath),dwFlags);
 
     if(!lpszPath || !lpszPath[0]) return FALSE;
 
-    strcpyW(szPath, lpszPath);
-    PathAddBackslashW(szPath);
-    strcatW(szPath,stars);
+    strcpy(szPath, lpszPath);
+    PathAddBackslashA(szPath);
+    strcat(szPath,"*.*");
 
-    hFile = FindFirstFileW(szPath,&stffile);
+    hFile = FindFirstFileA(szPath,&stffile);
     if ( hFile != INVALID_HANDLE_VALUE )
     {
         BOOL findFinished = FALSE;
@@ -136,21 +132,21 @@
             {
                 if ( (stffile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &&
                  dwFlags & SHCONTF_FOLDERS &&
-                 strcmpW(stffile.cFileName, dot) && strcmpW(stffile.cFileName, dotdot))
+                 strcmp (stffile.cFileName, ".") && strcmp (stffile.cFileName, ".."))
                 {
-                    pidl = _ILCreateFromFindDataW(&stffile);
+                    pidl = _ILCreateFromFindDataA(&stffile);
                     succeeded = succeeded && AddToEnumList(list, pidl);
                 }
                 else if (!(stffile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
                  && dwFlags & SHCONTF_NONFOLDERS)
                 {
-                    pidl = _ILCreateFromFindDataW(&stffile);
+                    pidl = _ILCreateFromFindDataA(&stffile);
                     succeeded = succeeded && AddToEnumList(list, pidl);
                 }
             }
             if (succeeded)
             {
-                if (!FindNextFileW(hFile, &stffile))
+                if (!FindNextFileA(hFile, &stffile))
                 {
                     if (GetLastError() == ERROR_NO_MORE_FILES)
                         findFinished = TRUE;

Modified: trunk/reactos/lib/shell32/enumidlist.h
--- trunk/reactos/lib/shell32/enumidlist.h	2005-03-16 11:50:24 UTC (rev 14133)
+++ trunk/reactos/lib/shell32/enumidlist.h	2005-03-16 12:33:26 UTC (rev 14134)
@@ -25,6 +25,6 @@
 /* Enumerates the folders and/or files (depending on dwFlags) in lpszPath and
  * adds them to the already-created list.
  */
-BOOL CreateFolderEnumList(IEnumIDList *list, LPCWSTR lpszPath, DWORD dwFlags);
+BOOL CreateFolderEnumList(IEnumIDList *list, LPCSTR lpszPath, DWORD dwFlags);
 
 #endif /* ndef __ENUMIDLIST_H__ */

Modified: trunk/reactos/lib/shell32/folders.c
--- trunk/reactos/lib/shell32/folders.c	2005-03-16 11:50:24 UTC (rev 14133)
+++ trunk/reactos/lib/shell32/folders.c	2005-03-16 12:33:26 UTC (rev 14134)
@@ -328,7 +328,7 @@
 
 	      found = TRUE;
 	    }
-	    else if (!lstrcmpiA(sTemp, "lnkfile"))
+	    else if (!strcasecmp(sTemp, "lnkfile"))
 	    {
 	      /* extract icon from shell shortcut */
 	      IShellFolder* dsf;

Modified: trunk/reactos/lib/shell32/pidl.c
--- trunk/reactos/lib/shell32/pidl.c	2005-03-16 11:50:24 UTC (rev 14133)
+++ trunk/reactos/lib/shell32/pidl.c	2005-03-16 12:33:26 UTC (rev 14134)
@@ -1,7 +1,7 @@
 /*
- *    pidl Handling
+ *	pidl Handling
  *
- *    Copyright 1998    Juergen Schmied
+ *	Copyright 1998	Juergen Schmied
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -57,7 +57,7 @@
 extern BOOL WINAPI Free(LPVOID);
 
 /*************************************************************************
- * ILGetDisplayNameEx        [SHELL32.186]
+ * ILGetDisplayNameEx		[SHELL32.186]
  *
  * Retrieves the display name of an ItemIDList
  *
@@ -75,108 +75,106 @@
  */
 BOOL WINAPI ILGetDisplayNameExA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPSTR path, DWORD type)
 {
-    BOOL ret = FALSE;
-    WCHAR wPath[MAX_PATH];
+	BOOL ret = FALSE;
+	WCHAR wPath[MAX_PATH];
 
-    TRACE("%p %p %p %ld\n", psf, pidl, path, type);
+	TRACE("%p %p %p %ld\n", psf, pidl, path, type);
 
-    if (!pidl || !path)
-        return FALSE;
+	if (!pidl || !path)
+	  return FALSE;
 
-    ret = ILGetDisplayNameExW(psf, pidl, wPath, type);
-    WideCharToMultiByte(CP_ACP, 0, wPath, -1, path, MAX_PATH, NULL, NULL);
-    TRACE("%p %p %s\n", psf, pidl, debugstr_a(path));
+	ret = ILGetDisplayNameExW(psf, pidl, wPath, type);
+	WideCharToMultiByte(CP_ACP, 0, wPath, -1, path, MAX_PATH, NULL, NULL);
+	TRACE("%p %p %s\n", psf, pidl, debugstr_a(path));
 
-    return ret;
+	return ret;
 }
 
 BOOL WINAPI ILGetDisplayNameExW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPWSTR path, DWORD type)
 {
-    LPSHELLFOLDER psfParent, lsf = psf;
-    HRESULT ret = NO_ERROR;
-    LPCITEMIDLIST pidllast;
-    STRRET strret;
-    DWORD flag;
+	LPSHELLFOLDER psfParent, lsf = psf;
+	HRESULT ret = NO_ERROR;
+	LPCITEMIDLIST pidllast;
+	STRRET strret;
+	DWORD flag;
 
-    TRACE("%p %p %p %ld\n", psf, pidl, path, type);
+	TRACE("%p %p %p %ld\n", psf, pidl, path, type);
 
-    if (!pidl || !path)
-        return FALSE;
+	if (!pidl || !path)
+	  return FALSE;
 
-    if (!lsf)
-    {
-        ret = SHGetDesktopFolder(&lsf);
-        if (FAILED(ret))
-            return FALSE;
-    }
+	if (!lsf)
+	{
+	  ret = SHGetDesktopFolder(&lsf);
+	  if (FAILED(ret))
+	    return FALSE;
+	}
 
-    if (type >= 0 && type <= 2)
-    {
-        switch (type)
-        {
-        case ILGDN_FORPARSING:
-            flag = SHGDN_FORPARSING | SHGDN_FORADDRESSBAR;
-            break;
-        case ILGDN_NORMAL:
-            flag = SHGDN_NORMAL;
-            break;
-        case ILGDN_INFOLDER:
-            flag = SHGDN_INFOLDER;
-            break;
-        default:
-            FIXME("Unknown type parameter = %lx\n", type);
-            flag = SHGDN_FORPARSING | SHGDN_FORADDRESSBAR;
-            break;
-        }
-        if (!*(const WORD*)pidl || type == ILGDN_FORPARSING)
-        {
-            ret = IShellFolder_GetDisplayNameOf(lsf, pidl, flag, &strret);
-            if (SUCCEEDED(ret))
-            {
-                ret = StrRetToStrNW(path, MAX_PATH, &strret, pidl);
-            }
-        }
-        else
-        {
-            ret = SHBindToParent(pidl, &IID_IShellFolder, (LPVOID*)&psfParent, &pidllast);
-            if (SUCCEEDED(ret))
-            {
-                ret = IShellFolder_GetDisplayNameOf(psfParent, pidllast, flag, &strret);
-                if (SUCCEEDED(ret))
-                {
-                    ret = StrRetToStrNW(path, MAX_PATH, &strret, pidllast);
-                }
-                IShellFolder_Release(psfParent);
-            }
-        }
-    }
+	if (type >= 0 && type <= 2)
+	{
+	  switch (type)
+	  {
+	    case ILGDN_FORPARSING:
+	      flag = SHGDN_FORPARSING | SHGDN_FORADDRESSBAR;
+	      break;
+	    case ILGDN_NORMAL:
+	      flag = SHGDN_NORMAL;
+	      break;
+	    case ILGDN_INFOLDER:
+	      flag = SHGDN_INFOLDER;
+	      break;
+	    default:
+	      FIXME("Unknown type parameter = %lx\n", type);
+	      flag = SHGDN_FORPARSING | SHGDN_FORADDRESSBAR;
+	      break;
+	  }
+	  if (!*(const WORD*)pidl || type == ILGDN_FORPARSING)
+	  {
+	    ret = IShellFolder_GetDisplayNameOf(lsf, pidl, flag, &strret);
+	    if (SUCCEEDED(ret))
+	    {
+	      ret = StrRetToStrNW(path, MAX_PATH, &strret, pidl);
+	    }
+	  }
+	  else
+	  {
+	    ret = SHBindToParent(pidl, &IID_IShellFolder, (LPVOID*)&psfParent, &pidllast);
+	    if (SUCCEEDED(ret))
+	    {
+	      ret = IShellFolder_GetDisplayNameOf(psfParent, pidllast, flag, &strret);
+	      if (SUCCEEDED(ret))
+	      {
+	        ret = StrRetToStrNW(path, MAX_PATH, &strret, pidllast);
+	      }
+	      IShellFolder_Release(psfParent);
+	    }
+	  }
+	}
 
-    TRACE("%p %p %s\n", psf, pidl, debugstr_w(path));
+	TRACE("%p %p %s\n", psf, pidl, debugstr_w(path));
 
-    if (!psf)
-        IShellFolder_Release(lsf);
-    return SUCCEEDED(ret);
+	if (!psf)
+	  IShellFolder_Release(lsf);
+	return SUCCEEDED(ret);
 }
 
 BOOL WINAPI ILGetDisplayNameEx(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPVOID path, DWORD type)
 {
-    TRACE_(shell)("%p %p %p %ld\n", psf, pidl, path, type);
-
-    if (SHELL_OsIsUnicode())
-        return ILGetDisplayNameExW(psf, pidl, path, type);
-    return ILGetDisplayNameExA(psf, pidl, path, type);
+	TRACE_(shell)("%p %p %p %ld\n", psf, pidl, path, type);
+	if (SHELL_OsIsUnicode())
+	  return ILGetDisplayNameExW(psf, pidl, path, type);
+	return ILGetDisplayNameExA(psf, pidl, path, type);
 }
 
 /*************************************************************************
- * ILGetDisplayName            [SHELL32.15]
+ * ILGetDisplayName			[SHELL32.15]
  */
 BOOL WINAPI ILGetDisplayName(LPCITEMIDLIST pidl, LPVOID path)
 {
-    TRACE_(shell)("%p %p\n", pidl, path);
-
-    if (SHELL_OsIsUnicode())
-        return ILGetDisplayNameExW(NULL, pidl, path, ILGDN_FORPARSING);
-    return ILGetDisplayNameExA(NULL, pidl, path, ILGDN_FORPARSING);
+	TRACE_(shell)("%p %p\n", pidl, path);
+	if (SHELL_OsIsUnicode())
+	  return ILGetDisplayNameExW(NULL, pidl, path, ILGDN_FORPARSING);
+	return ILGetDisplayNameExA(NULL, pidl, path, ILGDN_FORPARSING);
 }
 
 /*************************************************************************
@@ -187,21 +185,20 @@
  */
 LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST pidl)
 {
-    LPCITEMIDLIST   pidlLast = pidl;
+	LPCITEMIDLIST   pidlLast = pidl;
 
-    TRACE("(pidl=%p)\n",pidl);
+	TRACE("(pidl=%p)\n",pidl);
 
-    if (!pidl)
-        return NULL;
+	if (!pidl)
+	  return NULL;
 
-    while (pidl->mkid.cb)
-    {
-        pidlLast = pidl;
-        pidl = ILGetNext(pidl);
-    }
-    return (LPITEMIDLIST)pidlLast;
+	while (pidl->mkid.cb)
+	{
+	  pidlLast = pidl;
+	  pidl = ILGetNext(pidl);
+	}
+	return (LPITEMIDLIST)pidlLast;
 }
-
 /*************************************************************************
  * ILRemoveLastID [SHELL32.17]
  *
@@ -210,12 +207,12 @@
  */
 BOOL WINAPI ILRemoveLastID(LPITEMIDLIST pidl)
 {
-    TRACE_(shell)("pidl=%p\n",pidl);
+	TRACE_(shell)("pidl=%p\n",pidl);
 
-    if (!pidl || !pidl->mkid.cb)
-        return 0;
-    ILFindLastID(pidl)->mkid.cb = 0;
-    return 1;
+	if (!pidl || !pidl->mkid.cb)
+	  return 0;
+	ILFindLastID(pidl)->mkid.cb = 0;
+	return 1;
 }
 
 /*************************************************************************
@@ -225,24 +222,22 @@
  *    duplicate an idlist
  */
 LPITEMIDLIST WINAPI ILClone (LPCITEMIDLIST pidl)
-{
-    DWORD    len;
-    LPITEMIDLIST  newpidl;
+{ DWORD    len;
+  LPITEMIDLIST  newpidl;
 
-    if (!pidl)
-        return NULL;
+  if (!pidl)
+    return NULL;
 
-    len = ILGetSize(pidl);
-    newpidl = (LPITEMIDLIST)SHAlloc(len);
-    if (newpidl)
-        memcpy(newpidl,pidl,len);
+  len = ILGetSize(pidl);
+  newpidl = (LPITEMIDLIST)SHAlloc(len);
+  if (newpidl)
+    memcpy(newpidl,pidl,len);
 
-    TRACE("pidl=%p newpidl=%p\n",pidl, newpidl);
-    pdump(pidl);
+  TRACE("pidl=%p newpidl=%p\n",pidl, newpidl);
+  pdump(pidl);
 
-    return newpidl;
+  return newpidl;
 }
-
 /*************************************************************************
  * ILCloneFirst [SHELL32.19]
  *
@@ -250,28 +245,27 @@
  *  duplicates the first idlist of a complex pidl
  */
 LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST pidl)
-{
-    DWORD len;
-    LPITEMIDLIST pidlNew = NULL;
+{	DWORD len;
+	LPITEMIDLIST pidlNew = NULL;
 
-    TRACE("pidl=%p \n",pidl);
-    pdump(pidl);
+	TRACE("pidl=%p \n",pidl);
+	pdump(pidl);
 
-    if (pidl)
-    {
-        len = pidl->mkid.cb;
-        pidlNew = (LPITEMIDLIST) SHAlloc (len+2);
-        if (pidlNew)
-        {
-            memcpy(pidlNew,pidl,len+2);        /* 2 -> mind a desktop pidl */
+	if (pidl)
+	{
+	  len = pidl->mkid.cb;
+	  pidlNew = (LPITEMIDLIST) SHAlloc (len+2);
+	  if (pidlNew)
+	  {
+	    memcpy(pidlNew,pidl,len+2);		/* 2 -> mind a desktop pidl */
 
-            if (len)
-                ILGetNext(pidlNew)->mkid.cb = 0x00;
-        }
-    }
-    TRACE("-- newpidl=%p\n",pidlNew);
+	    if (len)
+	      ILGetNext(pidlNew)->mkid.cb = 0x00;
+	  }
+	}
+	TRACE("-- newpidl=%p\n",pidlNew);
 
-    return pidlNew;
+	return pidlNew;
 }
 
 /*************************************************************************
@@ -281,58 +275,51 @@
  *   the first two bytes are the len, the pidl is following then
  */
 HRESULT WINAPI ILLoadFromStream (IStream * pStream, LPITEMIDLIST * ppPidl)
-{
-    WORD        wLen = 0;
-    DWORD       dwBytesRead;
-    HRESULT     ret = E_FAIL;
+{	WORD		wLen = 0;
+	DWORD		dwBytesRead;
+	HRESULT		ret = E_FAIL;
 
 
-    TRACE_(shell)("%p %p\n", pStream ,  ppPidl);
+	TRACE_(shell)("%p %p\n", pStream ,  ppPidl);
 
-    if (*ppPidl)
-    {
-        SHFree(*ppPidl);
-        *ppPidl = NULL;
-    }
+	if (*ppPidl)
+	{ SHFree(*ppPidl);
+	  *ppPidl = NULL;
+	}
 
-    IStream_AddRef (pStream);
+	IStream_AddRef (pStream);
 
-    if (SUCCEEDED(IStream_Read(pStream, (LPVOID)&wLen, 2, &dwBytesRead)))
-    {
-        TRACE("PIDL length is %d\n", wLen);
-        if (wLen != 0)
-        {
-            *ppPidl = SHAlloc (wLen);
-            if (SUCCEEDED(IStream_Read(pStream, *ppPidl , wLen, &dwBytesRead)))
-            {
-                TRACE("Stream read OK\n");
-                ret = S_OK;
-            }
-            else
-            {
-                WARN("reading pidl failed\n");
-                SHFree(*ppPidl);
-                *ppPidl = NULL;
-            }
-        }
-        else
-        {
-            *ppPidl = NULL;
-            ret = S_OK;
-        }
-    }
+	if (SUCCEEDED(IStream_Read(pStream, (LPVOID)&wLen, 2, &dwBytesRead)))
+	{
+	  TRACE("PIDL length is %d\n", wLen);
+	  if (wLen != 0) {
+	    *ppPidl = SHAlloc (wLen);
+	    if (SUCCEEDED(IStream_Read(pStream, *ppPidl , wLen, &dwBytesRead))) {
+		TRACE("Stream read OK\n");
+		ret = S_OK;
+	    } else {
+		WARN("reading pidl failed\n");
+		SHFree(*ppPidl);
+		*ppPidl = NULL;
+	    }
+	  } else {
+	    *ppPidl = NULL;
+	    ret = S_OK;
+	  }
+	}
 
-    /* we are not yet fully compatible */
-    if (*ppPidl && !pcheck(*ppPidl))
-    {
-        WARN("Check failed\n");
-        SHFree(*ppPidl);
-        *ppPidl = NULL;
-    }
+	/* we are not yet fully compatible */
+	if (*ppPidl && !pcheck(*ppPidl))
+	{
+	  WARN("Check failed\n");
+	  SHFree(*ppPidl);
+	  *ppPidl = NULL;
+	}
 
-    IStream_Release (pStream);
-    TRACE("done\n");
-    return ret;
+	
+	IStream_Release (pStream);
+	TRACE("done\n");
+	return ret;
 }
 
 /*************************************************************************
@@ -343,29 +330,30 @@
  */
 HRESULT WINAPI ILSaveToStream (IStream * pStream, LPCITEMIDLIST pPidl)
 {
-    LPCITEMIDLIST    pidl;
-    WORD        wLen = 0;
-    HRESULT        ret = E_FAIL;
+	LPCITEMIDLIST	pidl;
+	WORD		wLen = 0;
+	HRESULT		ret = E_FAIL;
 
-    TRACE_(shell)("%p %p\n", pStream, pPidl);
+	TRACE_(shell)("%p %p\n", pStream, pPidl);
 
-    IStream_AddRef (pStream);
+	IStream_AddRef (pStream);
 
-    pidl = pPidl;
-    while (pidl->mkid.cb)
-    {
-        wLen += sizeof(WORD) + pidl->mkid.cb;
-        pidl = ILGetNext(pidl);
-    }
+	pidl = pPidl;
+        while (pidl->mkid.cb)
+        {
+          wLen += sizeof(WORD) + pidl->mkid.cb;
+          pidl = ILGetNext(pidl);
+        }
 
-    if (SUCCEEDED(IStream_Write(pStream, (LPVOID)&wLen, 2, NULL)))
-    {
-        if (SUCCEEDED(IStream_Write(pStream, pPidl, wLen, NULL)))
-            ret = S_OK;
-    }
-    IStream_Release (pStream);
+	if (SUCCEEDED(IStream_Write(pStream, (LPVOID)&wLen, 2, NULL)))
+	{
+	  if (SUCCEEDED(IStream_Write(pStream, pPidl, wLen, NULL)))
+	  { ret = S_OK;
+	  }
+	}
+	IStream_Release (pStream);
 
-    return ret;
+	return ret;
 }
 
 /*************************************************************************
@@ -387,37 +375,45 @@
  */
 HRESULT WINAPI SHILCreateFromPathA(LPCSTR path, LPITEMIDLIST * ppidl, DWORD * attributes)
 {
-    WCHAR lpszDisplayName[MAX_PATH];
+	LPSHELLFOLDER sf;
+	WCHAR lpszDisplayName[MAX_PATH];
+	DWORD pchEaten;
+	HRESULT ret = E_FAIL;
 
-    TRACE_(shell)("%s %p 0x%08lx\n", path, ppidl, attributes ? *attributes : 0);
+	TRACE_(shell)("%s %p 0x%08lx\n", path, ppidl, attributes ? *attributes : 0);
 
-    if (!MultiByteToWideChar(CP_ACP, 0, path, -1, lpszDisplayName, MAX_PATH))
-        lpszDisplayName[MAX_PATH-1] = 0;
+	if (!MultiByteToWideChar(CP_ACP, 0, path, -1, lpszDisplayName, MAX_PATH))
+	  lpszDisplayName[MAX_PATH-1] = 0;
 
-    return SHILCreateFromPathW(lpszDisplayName, ppidl, attributes);
+	if (SUCCEEDED (SHGetDesktopFolder(&sf)))
+	{
+	  ret = IShellFolder_ParseDisplayName(sf, 0, NULL, lpszDisplayName, &pchEaten, ppidl, attributes);
+	  IShellFolder_Release(sf);
+	}
+	return ret;
 }
 
 HRESULT WINAPI SHILCreateFromPathW(LPCWSTR path, LPITEMIDLIST * ppidl, DWORD * attributes)
 {
-    LPSHELLFOLDER sf;
-    DWORD pchEaten;
-    HRESULT ret = E_FAIL;
+	LPSHELLFOLDER sf;
+	DWORD pchEaten;
+	HRESULT ret = E_FAIL;
 
-    TRACE_(shell)("%s %p 0x%08lx\n", debugstr_w(path), ppidl, attributes ? *attributes : 0);
+	TRACE_(shell)("%s %p 0x%08lx\n", debugstr_w(path), ppidl, attributes ? *attributes : 0);
 
-    if (SUCCEEDED (SHGetDesktopFolder(&sf)))
-    {
-        ret = IShellFolder_ParseDisplayName(sf, 0, NULL, (LPWSTR)path, &pchEaten, ppidl, attributes);
-        IShellFolder_Release(sf);
-    }
-    return ret;
+	if (SUCCEEDED (SHGetDesktopFolder(&sf)))
+	{
+	  ret = IShellFolder_ParseDisplayName(sf, 0, NULL, (LPWSTR)path, &pchEaten, ppidl, attributes);
+	  IShellFolder_Release(sf);
+	}
+	return ret;
 }
 
 HRESULT WINAPI SHILCreateFromPathAW (LPCVOID path, LPITEMIDLIST * ppidl, DWORD * attributes)
 {
-    if ( SHELL_OsIsUnicode())
-        return SHILCreateFromPathW (path, ppidl, attributes);
-    return SHILCreateFromPathA (path, ppidl, attributes);
+	if ( SHELL_OsIsUnicode())
+	  return SHILCreateFromPathW (path, ppidl, attributes);
+	return SHILCreateFromPathA (path, ppidl, attributes);
 }
 
 /*************************************************************************
@@ -426,9 +422,9 @@
  * Create an ItemIDList to one of the special folders.
 
  * PARAMS
- *  hwndOwner    [in]
- *  nFolder      [in]    CSIDL_xxxxx
- *  fCreate      [in]    Create folder if it does not exist
+ *  hwndOwner	[in]
+ *  nFolder		[in]	CSIDL_xxxxx
+ *  fCreate		[in]	Create folder if it does not exist
  *
  * RETURNS
  *  Success: The newly created pidl
@@ -440,15 +436,14 @@
  *  shells IMalloc interface, aka ILFree.
  */
 LPITEMIDLIST WINAPI SHCloneSpecialIDList(HWND hwndOwner, DWORD nFolder, BOOL fCreate)
-{
-    LPITEMIDLIST ppidl;
-    TRACE_(shell)("(hwnd=%p,csidl=0x%lx,%s).\n", hwndOwner, nFolder, fCreate ? "T" : "F");
+{	LPITEMIDLIST ppidl;
+	TRACE_(shell)("(hwnd=%p,csidl=0x%lx,%s).\n", hwndOwner, nFolder, fCreate ? "T" : "F");
 
-    if (fCreate)
-        nFolder |= CSIDL_FLAG_CREATE;
+	if (fCreate)
+	  nFolder |= CSIDL_FLAG_CREATE;
 
-    SHGetSpecialFolderLocation(hwndOwner, nFolder, &ppidl);
-    return ppidl;
+	SHGetSpecialFolderLocation(hwndOwner, nFolder, &ppidl);
+	return ppidl;
 }
 
 /*************************************************************************
@@ -466,22 +461,21 @@
  *  exported by ordinal.
  */
[truncated at 1000 lines; 10064 more skipped]