Ignore:
Timestamp:
Apr 28, 2001, 3:33:49 PM (24 years ago)
Author:
sandervl
Message:

resync with latest wine

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/shell32/pidl.c

    r4125 r5618  
    1 /* $Id: pidl.c,v 1.2 2000-08-30 14:18:47 sandervl Exp $ */
    21/*
    32 *      pidl Handling
     
    98 *
    109 */
    11 #ifdef __WIN32OS2__
    12 #define ICOM_CINTERFACE 1
    13 #include <odin.h>
    14 #endif
    1510
    1611#include <ctype.h>
     
    1914#include "winbase.h"
    2015#include "debugtools.h"
    21 #include "shell.h"
    2216#include "shlguid.h"
    2317#include "winerror.h"
    2418#include "winnls.h"
     19#include "wine/undocshell.h"
    2520#include "shell32_main.h"
    2621#include "shellapi.h"
     22#include "shlwapi.h"
    2723
    2824#include "pidl.h"
    29 #include "wine/undocshell.h"
    3025
    3126DEFAULT_DEBUG_CHANNEL(pidl);
    3227DECLARE_DEBUG_CHANNEL(shell);
    3328
    34 #ifdef __WIN32OS2__
    35 #ifdef DEBUG
     29#if defined( __WIN32OS2__) && defined(DEBUG)
    3630void pdump (LPCITEMIDLIST pidl)
    3731{
     
    4438        /* silence the sub-functions */
    4539        bIsShellDebug = TRACE_ON(shell);
    46         __SET_DEBUGGING(__DBCL_TRACE, dbch_shell, FALSE);
    47         __SET_DEBUGGING(__DBCL_TRACE, dbch_pidl, FALSE);
     40        __SET_DEBUGGING(__DBCL_TRACE, __wine_dbch_shell, FALSE);
     41        __SET_DEBUGGING(__DBCL_TRACE, __wine_dbch_pidl, FALSE);
    4842
    4943        if (! pidltemp)
     
    8579        }
    8680
    87         __SET_DEBUGGING(__DBCL_TRACE, dbch_shell, bIsShellDebug);
    88         __SET_DEBUGGING(__DBCL_TRACE, dbch_pidl, TRUE);
    89 
    90 }
    91 #endif //DEBUG
    92 #else
    93 void pdump (LPCITEMIDLIST pidl)
    94 {
    95         BOOL bIsShellDebug;
    96        
    97         LPITEMIDLIST pidltemp = pidl;
    98         if (!TRACE_ON(pidl))
    99           return;
    100 
    101         /* silence the sub-functions */
    102         bIsShellDebug = TRACE_ON(shell);
    103         __SET_DEBUGGING(__DBCL_TRACE, dbch_shell, FALSE);
    104         __SET_DEBUGGING(__DBCL_TRACE, dbch_pidl, FALSE);
    105 
    106         if (! pidltemp)
    107         {
    108           MESSAGE ("-------- pidl=NULL (Desktop)\n");
    109         }
    110         else
    111         {
    112           MESSAGE ("-------- pidl=%p\n", pidl);
    113           if (pidltemp->mkid.cb)
    114           {
    115             do
    116             {
    117               DWORD dwAttrib = 0;
    118               LPPIDLDATA pData   = _ILGetDataPointer(pidltemp);
    119               DWORD type         = pData->type;
    120               LPSTR szLongName   = _ILGetTextPointer(pidltemp);
    121               LPSTR szShortName  = _ILGetSTextPointer(pidltemp);
    122               char szName[MAX_PATH];
    123 
    124               _ILSimpleGetText(pidltemp, szName, MAX_PATH);
    125               if( PT_FOLDER == type)
    126                 dwAttrib = pData->u.folder.uFileAttribs;
    127               else if( PT_VALUE == type)
    128                 dwAttrib = pData->u.file.uFileAttribs;
    129 
    130               MESSAGE ("-- pidl=%p size=%u type=%lx attr=0x%08lx name=%s (%s,%s)\n",
    131                        pidltemp, pidltemp->mkid.cb,type,dwAttrib,szName,debugstr_a(szLongName), debugstr_a(szShortName));
    132 
    133               pidltemp = ILGetNext(pidltemp);
    134 
    135             } while (pidltemp->mkid.cb);
    136           }
    137           else
    138           {
    139             MESSAGE ("empty pidl (Desktop)\n");
    140           }
    141           pcheck(pidl);
    142         }
    143 
    144         __SET_DEBUGGING(__DBCL_TRACE, dbch_shell, bIsShellDebug);
    145         __SET_DEBUGGING(__DBCL_TRACE, dbch_pidl, TRUE);
    146 
    147 }
    148 #endif //__WIN32OS2__
    149 
     81        __SET_DEBUGGING(__DBCL_TRACE, __wine_dbch_shell, bIsShellDebug);
     82        __SET_DEBUGGING(__DBCL_TRACE, __wine_dbch_pidl, TRUE);
     83
     84}
     85#endif
    15086#define BYTES_PRINTED 32
    15187BOOL pcheck (LPCITEMIDLIST pidl)
     
    15692
    15793        bIsPidlDebug = TRACE_ON(shell);
    158         __SET_DEBUGGING(__DBCL_TRACE, dbch_pidl, FALSE);
     94        __SET_DEBUGGING(__DBCL_TRACE, __wine_dbch_pidl, FALSE);
    15995
    16096        if (pidltemp && pidltemp->mkid.cb)
     
    175111              case PT_COMP:
    176112              case PT_NETWORK:
     113              case PT_IESPECIAL1:
     114              case PT_IESPECIAL2:
    177115              case PT_SHARE:
    178               case PT_IESPECIAL:
    179116                break;
    180117              default:
     
    202139          } while (pidltemp->mkid.cb);
    203140        }
    204         __SET_DEBUGGING(__DBCL_TRACE, dbch_pidl, bIsPidlDebug);
     141        __SET_DEBUGGING(__DBCL_TRACE, __wine_dbch_pidl, bIsPidlDebug);
    205142        return ret;
    206143}
     
    300237        return pidlNew;
    301238}
     239
    302240/*************************************************************************
    303241 * ILLoadFromStream
     
    332270        }
    333271       
    334         /* we are not jet fully compatible */
     272        /* we are not yet fully compatible */
    335273        if (!pcheck(*ppPidl))
    336274        { SHFree(*ppPidl);
     
    343281        return ret;
    344282}
     283
     284/*************************************************************************
     285 * ILSaveToStream
     286 *
     287 * NOTES
     288 *   the first two bytes are the len, the pidl is following then
     289 */
     290HRESULT WINAPI ILSaveToStream (IStream * pStream, LPCITEMIDLIST pPidl)
     291{
     292        LPITEMIDLIST    pidl;
     293        WORD            wLen = 0;
     294        HRESULT         ret = E_FAIL;
     295       
     296        TRACE_(shell)("%p %p\n", pStream, pPidl);
     297
     298        IStream_AddRef (pStream);
     299
     300        pidl = pPidl;
     301        while (pidl->mkid.cb)
     302        {
     303          wLen += sizeof(WORD) + pidl->mkid.cb;
     304          pidl = ILGetNext(pidl);
     305        }
     306
     307        if (SUCCEEDED(IStream_Write(pStream, (LPVOID)&wLen, 2, NULL)))
     308        {
     309          if (SUCCEEDED(IStream_Write(pStream, pPidl, wLen, NULL)))
     310          { ret = S_OK;
     311          }
     312        }
     313       
     314
     315        IStream_Release (pStream);
     316
     317        return ret;
     318}
     319
    345320/*************************************************************************
    346321 * SHILCreateFromPath   [SHELL32.28]
     
    357332        TRACE_(shell)("%s %p 0x%08lx\n",path,ppidl,attributes?*attributes:0);
    358333
    359         lstrcpynAtoW(lpszDisplayName, path, MAX_PATH);
     334        if (!MultiByteToWideChar( CP_ACP, 0, path, -1, lpszDisplayName, MAX_PATH ))
     335            lpszDisplayName[MAX_PATH-1] = 0;
    360336
    361337        if (SUCCEEDED (SHGetDesktopFolder(&sf)))
     
    831807        TRACE("path=%s\n",debugstr_w(lpszPath));
    832808
    833         lstrcpynWtoA(lpszTemp, lpszPath, MAX_PATH);     
     809        if (!WideCharToMultiByte( CP_ACP, 0, lpszPath, -1, lpszTemp, sizeof(lpszTemp), NULL, NULL ))
     810            lpszTemp[sizeof(lpszTemp)-1] = 0;
    834811
    835812        return SHSimpleIDListFromPathA (lpszTemp);
     
    994971               pfd->dwFileAttributes = _ILGetFileAttributes(pidl, NULL, 0);
    995972               pfd->nFileSizeLow = _ILGetFileSize ( pidl, NULL, 0);
    996                lstrcpynAtoW(pfd->cFileName,_ILGetTextPointer(pidl), MAX_PATH);
    997                lstrcpynAtoW(pfd->cAlternateFileName,_ILGetSTextPointer(pidl), 14);
     973               if (!MultiByteToWideChar( CP_ACP, 0, _ILGetTextPointer(pidl), -1,
     974                                         pfd->cFileName, MAX_PATH ))
     975                   pfd->cFileName[MAX_PATH-1] = 0;
     976               if (!MultiByteToWideChar( CP_ACP, 0, _ILGetSTextPointer(pidl), -1,
     977                                         pfd->cAlternateFileName, 14 ))
     978                   pfd->cFileName[13] = 0;
    998979            }
    999980            return NOERROR;
     
    10691050
    10701051        SHGetPathFromIDListA (pidl, sTemp);
    1071         lstrcpyAtoW(pszPath, sTemp);
     1052        MultiByteToWideChar( CP_ACP, 0, sTemp, -1, pszPath, MAX_PATH );
    10721053
    10731054        TRACE_(shell)("-- (%s)\n",debugstr_w(pszPath));
     
    12921273 */
    12931274
    1294 LPITEMIDLIST _ILCreate(PIDLTYPE type, LPCVOID pIn, UINT16 uInSize)
     1275LPITEMIDLIST _ILCreate(PIDLTYPE type, LPCVOID pIn, UINT uInSize)
    12951276{
    12961277        LPITEMIDLIST   pidlOut = NULL, pidlTemp = NULL;
    12971278        LPPIDLDATA     pData;
    1298         UINT16         uSize = 0;
     1279        UINT           uSize = 0;
    12991280        LPSTR   pszDest;
    13001281       
     
    13741355 *  strlen (lpszText)
    13751356 */
    1376 DWORD _ILGetDrive(LPCITEMIDLIST pidl,LPSTR pOut, UINT16 uSize)
     1357DWORD _ILGetDrive(LPCITEMIDLIST pidl,LPSTR pOut, UINT uSize)
    13771358{       TRACE("(%p,%p,%u)\n",pidl,pOut,uSize);
    13781359
     
    14741455 * gets the text for the first item in the pidl (eg. simple pidl)
    14751456 *
    1476  * returns the lenght of the string
     1457 * returns the length of the string
    14771458 */
    14781459DWORD _ILSimpleGetText (LPCITEMIDLIST pidl, LPSTR szOut, UINT uOutSize)
     
    15691550            case PT_FOLDER1:
    15701551            case PT_VALUE:
    1571             case PT_IESPECIAL:
     1552            case PT_IESPECIAL1:
     1553            case PT_IESPECIAL2:
    15721554              return (LPSTR)&(pdata->u.file.szNames);
    15731555
     
    15971579            case PT_FOLDER:
    15981580            case PT_VALUE:
    1599             case PT_IESPECIAL:
     1581            case PT_IESPECIAL1:
     1582            case PT_IESPECIAL2:
    16001583              return (LPSTR)(pdata->u.file.szNames + strlen (pdata->u.file.szNames) + 1);
    16011584
Note: See TracChangeset for help on using the changeset viewer.