Moved existing path - functions to shellpatch.c.
New: PathRemoveBlanks32A|W, PathMatchSpec32A|W, PathSetDlgItemPath32A|W.
This commit is contained in:
parent
7109799530
commit
bcd05e9920
|
@ -15,8 +15,10 @@ C_SRCS = \
|
||||||
iconcache.c \
|
iconcache.c \
|
||||||
pidl.c \
|
pidl.c \
|
||||||
shell32_main.c \
|
shell32_main.c \
|
||||||
|
shelllink.c \
|
||||||
shellole.c \
|
shellole.c \
|
||||||
shellord.c \
|
shellord.c \
|
||||||
|
shellpath.c \
|
||||||
shlfolder.c \
|
shlfolder.c \
|
||||||
shlview.c
|
shlview.c
|
||||||
|
|
||||||
|
|
|
@ -977,8 +977,9 @@ BOOL32 WINAPI _ILGetFileSize (LPCITEMIDLIST pidl, LPSTR pOut, UINT32 uOutSize)
|
||||||
default:
|
default:
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
sprintf(stemp,"%lu", pdata->u.file.dwFileSize);
|
StrFormatByteSize32A(pdata->u.file.dwFileSize, stemp, 20);
|
||||||
return GetNumberFormat32A(LOCALE_USER_DEFAULT, 0, stemp, NULL, pOut, uOutSize);
|
strncpy( pOut, stemp, 20);
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL32 WINAPI _ILGetExtension (LPCITEMIDLIST pidl, LPSTR pOut, UINT32 uOutSize)
|
BOOL32 WINAPI _ILGetExtension (LPCITEMIDLIST pidl, LPSTR pOut, UINT32 uOutSize)
|
||||||
|
|
|
@ -909,11 +909,13 @@ DWORD WINAPI SHGetPathFromIDList32A (LPCITEMIDLIST pidl,LPSTR pszPath)
|
||||||
DWORD WINAPI SHGetPathFromIDList32W (LPCITEMIDLIST pidl,LPWSTR pszPath)
|
DWORD WINAPI SHGetPathFromIDList32W (LPCITEMIDLIST pidl,LPWSTR pszPath)
|
||||||
{ char sTemp[MAX_PATH];
|
{ char sTemp[MAX_PATH];
|
||||||
|
|
||||||
FIXME (shell,"(pidl=%p)\n", pidl);
|
TRACE (shell,"(pidl=%p)\n", pidl);
|
||||||
|
|
||||||
SHGetPathFromIDList32A (pidl, sTemp);
|
SHGetPathFromIDList32A (pidl, sTemp);
|
||||||
lstrcpyAtoW(pszPath, sTemp);
|
lstrcpyAtoW(pszPath, sTemp);
|
||||||
|
|
||||||
TRACE(shell,"-- (%s)\n",debugstr_w(pszPath));
|
TRACE(shell,"-- (%s)\n",debugstr_w(pszPath));
|
||||||
|
|
||||||
return NOERROR;
|
return NOERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -61,433 +61,6 @@ SHChangeNotifyDeregister(LONG x1,LONG x2)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
* PathIsRoot [SHELL32.29]
|
|
||||||
*/
|
|
||||||
BOOL32 WINAPI PathIsRoot32A(LPCSTR x)
|
|
||||||
{ TRACE(shell,"%s\n",x);
|
|
||||||
if (*(x+1)==':' && *(x+2)=='\\') /* "X:\" */
|
|
||||||
return 1;
|
|
||||||
if (*x=='\\') /* "\" */
|
|
||||||
return 0;
|
|
||||||
if (x[0]=='\\' && x[1]=='\\') /* UNC "\\<xx>\" */
|
|
||||||
{ int foundbackslash = 0;
|
|
||||||
x=x+2;
|
|
||||||
while (*x)
|
|
||||||
{ if (*x++=='\\')
|
|
||||||
foundbackslash++;
|
|
||||||
}
|
|
||||||
if (foundbackslash<=1) /* max 1 \ more ... */
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
BOOL32 WINAPI PathIsRoot32W(LPCWSTR x)
|
|
||||||
{ TRACE(shell,"%s\n",debugstr_w(x));
|
|
||||||
if (*(x+1)==':' && *(x+2)=='\\') /* "X:\" */
|
|
||||||
return 1;
|
|
||||||
if (*x == (WCHAR) '\\') /* "\" */
|
|
||||||
return 0;
|
|
||||||
if (x[0]==(WCHAR)'\\' && x[1]==(WCHAR)'\\') /* UNC "\\<xx>\" */
|
|
||||||
{ int foundbackslash = 0;
|
|
||||||
x=x+2;
|
|
||||||
while (*x)
|
|
||||||
{ if (*x++==(WCHAR)'\\')
|
|
||||||
foundbackslash++;
|
|
||||||
}
|
|
||||||
if (foundbackslash<=1) /* max 1 \ more ... */
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
BOOL32 WINAPI PathIsRoot32AW(LPCVOID x)
|
|
||||||
{ if (VERSION_OsIsUnicode())
|
|
||||||
return PathIsRoot32W(x);
|
|
||||||
return PathIsRoot32A(x);
|
|
||||||
|
|
||||||
}
|
|
||||||
/*************************************************************************
|
|
||||||
* PathBuildRoot [SHELL32.30]
|
|
||||||
*/
|
|
||||||
LPSTR WINAPI PathBuildRoot(LPSTR root,BYTE drive) {
|
|
||||||
TRACE(shell,"%p %i\n",root, drive);
|
|
||||||
strcpy(root,"A:\\");
|
|
||||||
root[0]+=drive;
|
|
||||||
return root;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
* PathFindExtension [SHELL32.31]
|
|
||||||
*
|
|
||||||
* NOTES
|
|
||||||
* returns pointer to last . in last pathcomponent or at \0.
|
|
||||||
*/
|
|
||||||
LPCSTR WINAPI PathFindExtension32A(LPCSTR path)
|
|
||||||
{ LPCSTR lastpoint = NULL;
|
|
||||||
TRACE(shell,"%p %s\n",path,path);
|
|
||||||
while (*path)
|
|
||||||
{ if (*path=='\\'||*path==' ')
|
|
||||||
lastpoint=NULL;
|
|
||||||
if (*path=='.')
|
|
||||||
lastpoint=path;
|
|
||||||
path++;
|
|
||||||
}
|
|
||||||
return lastpoint?lastpoint:path;
|
|
||||||
}
|
|
||||||
LPCWSTR WINAPI PathFindExtension32W(LPCWSTR path)
|
|
||||||
{ LPCWSTR lastpoint = NULL;
|
|
||||||
TRACE(shell,"%p L%s\n",path,debugstr_w(path));
|
|
||||||
while (*path)
|
|
||||||
{ if (*path==(WCHAR)'\\'||*path==(WCHAR)' ')
|
|
||||||
lastpoint=NULL;
|
|
||||||
if (*path==(WCHAR)'.')
|
|
||||||
lastpoint=path;
|
|
||||||
path++;
|
|
||||||
}
|
|
||||||
return lastpoint?lastpoint:path;
|
|
||||||
}
|
|
||||||
LPCVOID WINAPI PathFindExtension32AW(LPCVOID path)
|
|
||||||
{ if (VERSION_OsIsUnicode())
|
|
||||||
return PathFindExtension32W(path);
|
|
||||||
return PathFindExtension32A(path);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
* PathAddBackslash [SHELL32.32]
|
|
||||||
*
|
|
||||||
* NOTES
|
|
||||||
* append \ if there is none
|
|
||||||
*/
|
|
||||||
LPSTR WINAPI PathAddBackslash32A(LPSTR path)
|
|
||||||
{ int len;
|
|
||||||
TRACE(shell,"%p->%s\n",path,path);
|
|
||||||
|
|
||||||
len = strlen(path);
|
|
||||||
if (len && path[len-1]!='\\')
|
|
||||||
{ path[len] = '\\';
|
|
||||||
path[len+1]= 0x00;
|
|
||||||
return path+len+1;
|
|
||||||
}
|
|
||||||
return path+len;
|
|
||||||
}
|
|
||||||
LPWSTR WINAPI PathAddBackslash32W(LPWSTR path)
|
|
||||||
{ int len;
|
|
||||||
TRACE(shell,"%p->%s\n",path,debugstr_w(path));
|
|
||||||
|
|
||||||
len = lstrlen32W(path);
|
|
||||||
if (len && path[len-1]!=(WCHAR)'\\')
|
|
||||||
{ path[len] = (WCHAR)'\\';
|
|
||||||
path[len+1]= 0x00;
|
|
||||||
return path+len+1;
|
|
||||||
}
|
|
||||||
return path+len;
|
|
||||||
}
|
|
||||||
LPVOID WINAPI PathAddBackslash32AW(LPVOID path)
|
|
||||||
{ if(VERSION_OsIsUnicode())
|
|
||||||
return PathAddBackslash32W(path);
|
|
||||||
return PathAddBackslash32A(path);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
* PathRemoveBlanks [SHELL32.33]
|
|
||||||
*
|
|
||||||
* NOTES
|
|
||||||
* remove spaces from beginning and end of passed string
|
|
||||||
*/
|
|
||||||
LPSTR WINAPI PathRemoveBlanks(LPSTR str)
|
|
||||||
{ LPSTR x = str;
|
|
||||||
TRACE(shell,"%s\n",str);
|
|
||||||
while (*x==' ') x++;
|
|
||||||
if (x!=str)
|
|
||||||
strcpy(str,x);
|
|
||||||
if (!*str)
|
|
||||||
return str;
|
|
||||||
x=str+strlen(str)-1;
|
|
||||||
while (*x==' ')
|
|
||||||
x--;
|
|
||||||
if (*x==' ')
|
|
||||||
*x='\0';
|
|
||||||
return x;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
* PathFindFilename [SHELL32.34]
|
|
||||||
*
|
|
||||||
* NOTES
|
|
||||||
* basename(char *fn);
|
|
||||||
*/
|
|
||||||
LPCSTR WINAPI PathFindFilename32A(LPCSTR aptr)
|
|
||||||
{ LPCSTR aslash;
|
|
||||||
aslash = aptr;
|
|
||||||
|
|
||||||
TRACE(shell,"%s\n",aslash);
|
|
||||||
while (aptr[0])
|
|
||||||
{ if (((aptr[0]=='\\') || (aptr[0]==':')) && aptr[1] && aptr[1]!='\\')
|
|
||||||
aslash = aptr+1;
|
|
||||||
aptr++;
|
|
||||||
}
|
|
||||||
return aslash;
|
|
||||||
|
|
||||||
}
|
|
||||||
LPCWSTR WINAPI PathFindFilename32W(LPCWSTR wptr)
|
|
||||||
{ LPCWSTR wslash;
|
|
||||||
wslash = wptr;
|
|
||||||
|
|
||||||
TRACE(shell,"L%s\n",debugstr_w(wslash));
|
|
||||||
while (wptr[0])
|
|
||||||
{ if (((wptr[0]=='\\') || (wptr[0]==':')) && wptr[1] && wptr[1]!='\\')
|
|
||||||
wslash = wptr+1;
|
|
||||||
wptr++;
|
|
||||||
}
|
|
||||||
return wslash;
|
|
||||||
}
|
|
||||||
LPCVOID WINAPI PathFindFilename32AW(LPCVOID fn)
|
|
||||||
{
|
|
||||||
if(VERSION_OsIsUnicode())
|
|
||||||
return PathFindFilename32W(fn);
|
|
||||||
return PathFindFilename32A(fn);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
* PathRemoveFileSpec [SHELL32.35]
|
|
||||||
*
|
|
||||||
* NOTES
|
|
||||||
* bool getpath(char *pathname); truncates passed argument to a valid path
|
|
||||||
* returns if the string was modified or not.
|
|
||||||
* "\foo\xx\foo"-> "\foo\xx"
|
|
||||||
* "\" -> "\"
|
|
||||||
* "a:\foo" -> "a:\"
|
|
||||||
*/
|
|
||||||
DWORD WINAPI PathRemoveFileSpec(LPSTR fn) {
|
|
||||||
LPSTR x,cutplace;
|
|
||||||
TRACE(shell,"%s\n",fn);
|
|
||||||
if (!fn[0])
|
|
||||||
return 0;
|
|
||||||
x=fn;
|
|
||||||
cutplace = fn;
|
|
||||||
while (*x) {
|
|
||||||
if (*x=='\\') {
|
|
||||||
cutplace=x++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (*x==':') {
|
|
||||||
x++;
|
|
||||||
if (*x=='\\')
|
|
||||||
cutplace=++x;
|
|
||||||
continue; /* already x++ed */
|
|
||||||
}
|
|
||||||
x++;
|
|
||||||
}
|
|
||||||
if (!*cutplace)
|
|
||||||
return 0;
|
|
||||||
if (cutplace==fn) {
|
|
||||||
if (fn[0]=='\\') {
|
|
||||||
if (!fn[1])
|
|
||||||
return 0;
|
|
||||||
fn[0]='\0';
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*cutplace='\0';
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
* PathAppend [SHELL32.36]
|
|
||||||
*
|
|
||||||
* NOTES
|
|
||||||
* concat_paths(char*target,const char*add);
|
|
||||||
* concats "target\\add" and writes them to target
|
|
||||||
*/
|
|
||||||
LPSTR WINAPI PathAppend(LPSTR x1,LPSTR x2) {
|
|
||||||
TRACE(shell,"%s %s\n",x1,x2);
|
|
||||||
while (x2[0]=='\\') x2++;
|
|
||||||
return PathCombine32A(x1,x1,x2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
* PathCombine [SHELL32.37]
|
|
||||||
*
|
|
||||||
* NOTES
|
|
||||||
* if lpszFile='.' skip it
|
|
||||||
* szDest can be equal to lpszFile. Thats why we use sTemp
|
|
||||||
*/
|
|
||||||
LPSTR WINAPI PathCombine32A(LPSTR szDest, LPCSTR lpszDir, LPCSTR lpszFile)
|
|
||||||
{ char sTemp[MAX_PATH];
|
|
||||||
TRACE(shell,"%p %p->%s %p->%s\n",szDest, lpszDir, lpszDir, lpszFile, lpszFile);
|
|
||||||
|
|
||||||
|
|
||||||
if (!lpszFile || !lpszFile[0] || (lpszFile[0]=='.' && !lpszFile[1]) )
|
|
||||||
{ strcpy(szDest,lpszDir);
|
|
||||||
return szDest;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* if lpszFile is a complete path don't care about lpszDir */
|
|
||||||
if (PathIsRoot32A(lpszFile))
|
|
||||||
{ strcpy(szDest,lpszFile);
|
|
||||||
}
|
|
||||||
strcpy(sTemp,lpszDir);
|
|
||||||
PathAddBackslash32A(sTemp);
|
|
||||||
strcat(sTemp,lpszFile);
|
|
||||||
strcpy(szDest,sTemp);
|
|
||||||
return szDest;
|
|
||||||
}
|
|
||||||
LPWSTR WINAPI PathCombine32W(LPWSTR szDest, LPCWSTR lpszDir, LPCWSTR lpszFile)
|
|
||||||
{ WCHAR sTemp[MAX_PATH];
|
|
||||||
TRACE(shell,"%p %p->%s %p->%s\n",szDest, lpszDir, debugstr_w(lpszDir),
|
|
||||||
lpszFile, debugstr_w(lpszFile));
|
|
||||||
|
|
||||||
|
|
||||||
if (!lpszFile || !lpszFile[0] || (lpszFile[0]==(WCHAR)'.' && !lpszFile[1]) )
|
|
||||||
{ lstrcpy32W(szDest,lpszDir);
|
|
||||||
return szDest;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* if lpszFile is a complete path don't care about lpszDir */
|
|
||||||
if (PathIsRoot32W(lpszFile))
|
|
||||||
{ lstrcpy32W(szDest,lpszFile);
|
|
||||||
}
|
|
||||||
lstrcpy32W(sTemp,lpszDir);
|
|
||||||
PathAddBackslash32W(sTemp);
|
|
||||||
lstrcat32W(sTemp,lpszFile);
|
|
||||||
lstrcpy32W(szDest,sTemp);
|
|
||||||
return szDest;
|
|
||||||
}
|
|
||||||
LPVOID WINAPI PathCombine32AW(LPVOID szDest, LPCVOID lpszDir, LPCVOID lpszFile)
|
|
||||||
{ if (VERSION_OsIsUnicode())
|
|
||||||
return PathCombine32W( szDest, lpszDir, lpszFile );
|
|
||||||
return PathCombine32A( szDest, lpszDir, lpszFile );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
* PathIsUNC [SHELL32.39]
|
|
||||||
*
|
|
||||||
* NOTES
|
|
||||||
* PathIsUNC(char*path);
|
|
||||||
*/
|
|
||||||
BOOL32 WINAPI PathIsUNC(LPCSTR path) {
|
|
||||||
TRACE(shell,"%s\n",path);
|
|
||||||
if ((path[0]=='\\') && (path[1]=='\\'))
|
|
||||||
return TRUE;
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
/*************************************************************************
|
|
||||||
* PathIsExe [SHELL32.43]
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
BOOL32 WINAPI PathIsExe (LPCSTR path)
|
|
||||||
{ TRACE(shell,"path=%s\n",path);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
* PathFileExists [SHELL32.45]
|
|
||||||
*
|
|
||||||
* NOTES
|
|
||||||
* file_exists(char *fn);
|
|
||||||
*/
|
|
||||||
BOOL32 WINAPI PathFileExists(LPSTR fn) {
|
|
||||||
TRACE(shell,"%s\n",fn);
|
|
||||||
if (GetFileAttributes32A(fn)==-1)
|
|
||||||
return FALSE;
|
|
||||||
else
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
/*************************************************************************
|
|
||||||
* PathMatchSpec [SHELL32.46]
|
|
||||||
*
|
|
||||||
* NOTES
|
|
||||||
* used from COMDLG32
|
|
||||||
*/
|
|
||||||
|
|
||||||
BOOL32 WINAPI PathMatchSpec(LPSTR x, LPSTR y)
|
|
||||||
{ FIXME(shell,"%s %s stub\n",x,y);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
* PathResolve [SHELL32.51]
|
|
||||||
*/
|
|
||||||
DWORD WINAPI PathResolve(LPCSTR s,DWORD x2,DWORD x3) {
|
|
||||||
FIXME(shell,"(%s,0x%08lx,0x%08lx),stub!\n",s,x2,x3);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
* PathGetArgs [SHELL32.52]
|
|
||||||
*
|
|
||||||
* NOTES
|
|
||||||
* look for next arg in string. handle "quoted" strings
|
|
||||||
* returns pointer to argument *AFTER* the space. Or to the \0.
|
|
||||||
*/
|
|
||||||
LPVOID WINAPI PathGetArgs(LPVOID cmdline)
|
|
||||||
{ BOOL32 qflag = FALSE;
|
|
||||||
LPWSTR wptr;
|
|
||||||
LPSTR aptr;
|
|
||||||
|
|
||||||
if (VERSION_OsIsUnicode())
|
|
||||||
{ TRACE(shell,"%sL\n",debugstr_w((LPWSTR)cmdline));
|
|
||||||
wptr=(LPWSTR) cmdline;
|
|
||||||
while (*wptr)
|
|
||||||
{ if ((*wptr==' ') && !qflag)
|
|
||||||
return wptr+1;
|
|
||||||
if (*wptr=='"')
|
|
||||||
qflag=!qflag;
|
|
||||||
wptr++;
|
|
||||||
}
|
|
||||||
return (LPVOID) wptr;
|
|
||||||
}
|
|
||||||
TRACE(shell,"%s\n",(LPSTR)cmdline);
|
|
||||||
aptr=(LPSTR) cmdline;
|
|
||||||
while (*aptr)
|
|
||||||
{ if ((*aptr==' ') && !qflag)
|
|
||||||
return aptr+1;
|
|
||||||
if (*aptr=='"')
|
|
||||||
qflag=!qflag;
|
|
||||||
aptr++;
|
|
||||||
}
|
|
||||||
return (LPVOID) aptr;
|
|
||||||
}
|
|
||||||
/*************************************************************************
|
|
||||||
* PathQuoteSpaces [SHELL32.55]
|
|
||||||
*
|
|
||||||
* NOTES
|
|
||||||
* basename(char *fn);
|
|
||||||
*/
|
|
||||||
LPSTR WINAPI PathQuoteSpaces32A(LPCSTR aptr)
|
|
||||||
{ FIXME(shell,"%s\n",aptr);
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
}
|
|
||||||
LPWSTR WINAPI PathQuoteSpaces32W(LPCWSTR wptr)
|
|
||||||
{ FIXME(shell,"L%s\n",debugstr_w(wptr));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
LPVOID WINAPI PathQuoteSpaces32AW (LPCVOID fn)
|
|
||||||
{ if(VERSION_OsIsUnicode())
|
|
||||||
return PathQuoteSpaces32W(fn);
|
|
||||||
return PathQuoteSpaces32A(fn);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
* PathUnquoteSpaces [SHELL32.56]
|
|
||||||
*
|
|
||||||
* NOTES
|
|
||||||
* unquote string (remove ")
|
|
||||||
*/
|
|
||||||
VOID WINAPI PathUnquoteSpaces(LPSTR str) {
|
|
||||||
DWORD len = lstrlen32A(str);
|
|
||||||
TRACE(shell,"%s\n",str);
|
|
||||||
if (*str!='"') return;
|
|
||||||
if (str[len-1]!='"') return;
|
|
||||||
str[len-1]='\0';
|
|
||||||
lstrcpy32A(str,str+1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* ParseField [SHELL32.58]
|
* ParseField [SHELL32.58]
|
||||||
*
|
*
|
||||||
|
@ -568,17 +141,6 @@ int WINAPI SHShellFolderView_Message(HWND32 hwndCabinet,UINT32 uMsg,LPARAM lPara
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
* PathYetAnotherMakeUniqueName [SHELL32.75]
|
|
||||||
*
|
|
||||||
* NOTES
|
|
||||||
* exported by ordinal
|
|
||||||
*/
|
|
||||||
BOOL32 WINAPI PathYetAnotherMakeUniqueName(LPDWORD x,LPDWORD y) {
|
|
||||||
FIXME(shell,"(%p,%p):stub.\n",x,y);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* OleStrToStrN [SHELL32.78]
|
* OleStrToStrN [SHELL32.78]
|
||||||
*
|
*
|
||||||
|
@ -628,19 +190,6 @@ LPITEMIDLIST WINAPI SHCloneSpecialIDList(HWND32 hwndOwner,DWORD nFolder,DWORD x3
|
||||||
return ppidl;
|
return ppidl;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
* IsLFNDrive [SHELL32.119]
|
|
||||||
*
|
|
||||||
* NOTES
|
|
||||||
* exported by ordinal Name
|
|
||||||
*/
|
|
||||||
BOOL32 WINAPI IsLFNDrive(LPCSTR path) {
|
|
||||||
DWORD fnlen;
|
|
||||||
|
|
||||||
if (!GetVolumeInformation32A(path,NULL,0,NULL,&fnlen,NULL,NULL,0))
|
|
||||||
return FALSE;
|
|
||||||
return fnlen>12;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* SHGetSpecialFolderPath [SHELL32.175]
|
* SHGetSpecialFolderPath [SHELL32.175]
|
||||||
|
@ -733,28 +282,6 @@ DWORD WINAPI SHRestricted (DWORD pol) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
* PathGetExtension [SHELL32.158]
|
|
||||||
*
|
|
||||||
* NOTES
|
|
||||||
* exported by ordinal
|
|
||||||
*/
|
|
||||||
LPCSTR WINAPI PathGetExtension32A(LPCSTR path,DWORD y,DWORD z)
|
|
||||||
{ TRACE(shell,"(%s,%08lx,%08lx)\n",path,y,z);
|
|
||||||
path = PathFindExtension32A(path);
|
|
||||||
return *path?(path+1):path;
|
|
||||||
}
|
|
||||||
LPCWSTR WINAPI PathGetExtension32W(LPCWSTR path,DWORD y,DWORD z)
|
|
||||||
{ TRACE(shell,"(L%s,%08lx,%08lx)\n",debugstr_w(path),y,z);
|
|
||||||
path = PathFindExtension32W(path);
|
|
||||||
return *path?(path+1):path;
|
|
||||||
}
|
|
||||||
LPCVOID WINAPI PathGetExtension32AW(LPCVOID path,DWORD y,DWORD z)
|
|
||||||
{ if (VERSION_OsIsUnicode())
|
|
||||||
return PathGetExtension32W(path,y,z);
|
|
||||||
return PathGetExtension32A(path,y,z);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* SHCreateDirectory [SHELL32.165]
|
* SHCreateDirectory [SHELL32.165]
|
||||||
*
|
*
|
||||||
|
@ -1551,14 +1078,6 @@ HRESULT WINAPI Shell_MergeMenus32 (HMENU32 hmDst, HMENU32 hmSrc, UINT32 uInsert,
|
||||||
return(uIDMax);
|
return(uIDMax);
|
||||||
|
|
||||||
}
|
}
|
||||||
/*************************************************************************
|
|
||||||
* PathGetDriveNumber32 [SHELL32.57]
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
HRESULT WINAPI PathGetDriveNumber32(LPSTR u)
|
|
||||||
{ FIXME(shell,"%s stub\n",debugstr_a(u));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* DriveType32 [SHELL32.64]
|
* DriveType32 [SHELL32.64]
|
||||||
*
|
*
|
||||||
|
@ -1591,23 +1110,6 @@ HRESULT WINAPI SHFlushClipboard(void)
|
||||||
{ FIXME(shell,"stub\n");
|
{ FIXME(shell,"stub\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
/*************************************************************************
|
|
||||||
* SheGetDirW [SHELL32.281]
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
HRESULT WINAPI SheGetDir32W(LPWSTR u, LPWSTR v)
|
|
||||||
{ FIXME(shell,"%s %s stub\n",debugstr_w(u),debugstr_w(v) );
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
* SheChangeDirW [SHELL32.274]
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
HRESULT WINAPI SheChangeDir32W(LPWSTR u)
|
|
||||||
{ FIXME(shell,"(%s),stub\n",debugstr_w(u));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* StrRChrW [SHELL32.320]
|
* StrRChrW [SHELL32.320]
|
||||||
*
|
*
|
||||||
|
@ -1631,9 +1133,41 @@ LPWSTR WINAPI StrRChrW(LPWSTR lpStart, LPWSTR lpEnd, DWORD wMatch)
|
||||||
return wptr;
|
return wptr;
|
||||||
}
|
}
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* PathProcessCommand [SHELL32.653]
|
* StrFormatByteSize [SHLWAPI]
|
||||||
*/
|
*/
|
||||||
HRESULT WINAPI PathProcessCommand (DWORD u, DWORD v, DWORD w, DWORD x)
|
LPSTR WINAPI StrFormatByteSize32A ( DWORD dw, LPSTR pszBuf, UINT32 cchBuf )
|
||||||
{ FIXME(shell,"0x%04lx 0x%04lx 0x%04lx 0x%04lx stub\n",u,v,w,x);
|
{ char buf[64];
|
||||||
return 0;
|
TRACE(shell,"%lx %p %i\n", dw, pszBuf, cchBuf);
|
||||||
|
if ( dw<1024L )
|
||||||
|
{ sprintf (buf,"%3.1f bytes", (FLOAT)dw);
|
||||||
|
}
|
||||||
|
else if ( dw<1048576L)
|
||||||
|
{ sprintf (buf,"%3.1f KB", (FLOAT)dw/1024);
|
||||||
|
}
|
||||||
|
else if ( dw < 1073741824L)
|
||||||
|
{ sprintf (buf,"%3.1f MB", (FLOAT)dw/1048576L);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ sprintf (buf,"%3.1f GB", (FLOAT)dw/1073741824L);
|
||||||
|
}
|
||||||
|
strncpy (pszBuf, buf, cchBuf);
|
||||||
|
return pszBuf;
|
||||||
|
}
|
||||||
|
LPWSTR WINAPI StrFormatByteSize32W ( DWORD dw, LPWSTR pszBuf, UINT32 cchBuf )
|
||||||
|
{ char buf[64];
|
||||||
|
TRACE(shell,"%lx %p %i\n", dw, pszBuf, cchBuf);
|
||||||
|
if ( dw<1024L )
|
||||||
|
{ sprintf (buf,"%3.1f bytes", (FLOAT)dw);
|
||||||
|
}
|
||||||
|
else if ( dw<1048576L)
|
||||||
|
{ sprintf (buf,"%3.1f KB", (FLOAT)dw/1024);
|
||||||
|
}
|
||||||
|
else if ( dw < 1073741824L)
|
||||||
|
{ sprintf (buf,"%3.1f MB", (FLOAT)dw/1048576L);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ sprintf (buf,"%3.1f GB", (FLOAT)dw/1073741824L);
|
||||||
|
}
|
||||||
|
lstrcpynAtoW (pszBuf, buf, cchBuf);
|
||||||
|
return pszBuf;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,633 @@
|
||||||
|
/*
|
||||||
|
* Path Functions
|
||||||
|
*
|
||||||
|
* Many of this functions are in SHLWAPI.DLL also
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include "windows.h"
|
||||||
|
#include "winerror.h"
|
||||||
|
#include "file.h"
|
||||||
|
#include "shell.h"
|
||||||
|
#include "shlobj.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "winnls.h"
|
||||||
|
#include "winversion.h"
|
||||||
|
#include "shell32_main.h"
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* PathIsRoot [SHELL32.29]
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI PathIsRoot32A(LPCSTR x)
|
||||||
|
{ TRACE(shell,"%s\n",x);
|
||||||
|
if (*(x+1)==':' && *(x+2)=='\\') /* "X:\" */
|
||||||
|
return 1;
|
||||||
|
if (*x=='\\') /* "\" */
|
||||||
|
return 0;
|
||||||
|
if (x[0]=='\\' && x[1]=='\\') /* UNC "\\<xx>\" */
|
||||||
|
{ int foundbackslash = 0;
|
||||||
|
x=x+2;
|
||||||
|
while (*x)
|
||||||
|
{ if (*x++=='\\')
|
||||||
|
foundbackslash++;
|
||||||
|
}
|
||||||
|
if (foundbackslash<=1) /* max 1 \ more ... */
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
BOOL32 WINAPI PathIsRoot32W(LPCWSTR x)
|
||||||
|
{ TRACE(shell,"%s\n",debugstr_w(x));
|
||||||
|
if (*(x+1)==':' && *(x+2)=='\\') /* "X:\" */
|
||||||
|
return 1;
|
||||||
|
if (*x == (WCHAR) '\\') /* "\" */
|
||||||
|
return 0;
|
||||||
|
if (x[0]==(WCHAR)'\\' && x[1]==(WCHAR)'\\') /* UNC "\\<xx>\" */
|
||||||
|
{ int foundbackslash = 0;
|
||||||
|
x=x+2;
|
||||||
|
while (*x)
|
||||||
|
{ if (*x++==(WCHAR)'\\')
|
||||||
|
foundbackslash++;
|
||||||
|
}
|
||||||
|
if (foundbackslash<=1) /* max 1 \ more ... */
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
BOOL32 WINAPI PathIsRoot32AW(LPCVOID x)
|
||||||
|
{ if (VERSION_OsIsUnicode())
|
||||||
|
return PathIsRoot32W(x);
|
||||||
|
return PathIsRoot32A(x);
|
||||||
|
|
||||||
|
}
|
||||||
|
/*************************************************************************
|
||||||
|
* PathBuildRoot [SHELL32.30]
|
||||||
|
*/
|
||||||
|
LPSTR WINAPI PathBuildRoot(LPSTR root,BYTE drive) {
|
||||||
|
TRACE(shell,"%p %i\n",root, drive);
|
||||||
|
strcpy(root,"A:\\");
|
||||||
|
root[0]+=drive;
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* PathFindExtension [SHELL32.31]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* returns pointer to last . in last pathcomponent or at \0.
|
||||||
|
*/
|
||||||
|
LPCSTR WINAPI PathFindExtension32A(LPCSTR path)
|
||||||
|
{ LPCSTR lastpoint = NULL;
|
||||||
|
TRACE(shell,"%p %s\n",path,path);
|
||||||
|
while (*path)
|
||||||
|
{ if (*path=='\\'||*path==' ')
|
||||||
|
lastpoint=NULL;
|
||||||
|
if (*path=='.')
|
||||||
|
lastpoint=path;
|
||||||
|
path++;
|
||||||
|
}
|
||||||
|
return lastpoint?lastpoint:path;
|
||||||
|
}
|
||||||
|
LPCWSTR WINAPI PathFindExtension32W(LPCWSTR path)
|
||||||
|
{ LPCWSTR lastpoint = NULL;
|
||||||
|
TRACE(shell,"%p L%s\n",path,debugstr_w(path));
|
||||||
|
while (*path)
|
||||||
|
{ if (*path==(WCHAR)'\\'||*path==(WCHAR)' ')
|
||||||
|
lastpoint=NULL;
|
||||||
|
if (*path==(WCHAR)'.')
|
||||||
|
lastpoint=path;
|
||||||
|
path++;
|
||||||
|
}
|
||||||
|
return lastpoint?lastpoint:path;
|
||||||
|
}
|
||||||
|
LPCVOID WINAPI PathFindExtension32AW(LPCVOID path)
|
||||||
|
{ if (VERSION_OsIsUnicode())
|
||||||
|
return PathFindExtension32W(path);
|
||||||
|
return PathFindExtension32A(path);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* PathAddBackslash [SHELL32.32]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* append \ if there is none
|
||||||
|
*/
|
||||||
|
LPSTR WINAPI PathAddBackslash32A(LPSTR path)
|
||||||
|
{ int len;
|
||||||
|
TRACE(shell,"%p->%s\n",path,path);
|
||||||
|
|
||||||
|
len = strlen(path);
|
||||||
|
if (len && path[len-1]!='\\')
|
||||||
|
{ path[len] = '\\';
|
||||||
|
path[len+1]= 0x00;
|
||||||
|
return path+len+1;
|
||||||
|
}
|
||||||
|
return path+len;
|
||||||
|
}
|
||||||
|
LPWSTR WINAPI PathAddBackslash32W(LPWSTR path)
|
||||||
|
{ int len;
|
||||||
|
TRACE(shell,"%p->%s\n",path,debugstr_w(path));
|
||||||
|
|
||||||
|
len = lstrlen32W(path);
|
||||||
|
if (len && path[len-1]!=(WCHAR)'\\')
|
||||||
|
{ path[len] = (WCHAR)'\\';
|
||||||
|
path[len+1]= 0x00;
|
||||||
|
return path+len+1;
|
||||||
|
}
|
||||||
|
return path+len;
|
||||||
|
}
|
||||||
|
LPVOID WINAPI PathAddBackslash32AW(LPVOID path)
|
||||||
|
{ if(VERSION_OsIsUnicode())
|
||||||
|
return PathAddBackslash32W(path);
|
||||||
|
return PathAddBackslash32A(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* PathRemoveBlanks [SHELL32.33]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* remove spaces from beginning and end of passed string
|
||||||
|
*/
|
||||||
|
LPSTR WINAPI PathRemoveBlanks32A(LPSTR str)
|
||||||
|
{ LPSTR x = str;
|
||||||
|
TRACE(shell,"%s\n",str);
|
||||||
|
while (*x==' ') x++;
|
||||||
|
if (x!=str)
|
||||||
|
strcpy(str,x);
|
||||||
|
if (!*str)
|
||||||
|
return str;
|
||||||
|
x=str+strlen(str)-1;
|
||||||
|
while (*x==' ')
|
||||||
|
x--;
|
||||||
|
if (*x==' ')
|
||||||
|
*x='\0';
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
LPWSTR WINAPI PathRemoveBlanks32W(LPWSTR str)
|
||||||
|
{ LPWSTR x = str;
|
||||||
|
TRACE(shell,"%s\n",debugstr_w(str));
|
||||||
|
while (*x==' ') x++;
|
||||||
|
if (x!=str)
|
||||||
|
lstrcpy32W(str,x);
|
||||||
|
if (!*str)
|
||||||
|
return str;
|
||||||
|
x=str+lstrlen32W(str)-1;
|
||||||
|
while (*x==' ')
|
||||||
|
x--;
|
||||||
|
if (*x==' ')
|
||||||
|
*x='\0';
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
LPVOID WINAPI PathRemoveBlanks32AW(LPVOID str)
|
||||||
|
{ if(VERSION_OsIsUnicode())
|
||||||
|
return PathRemoveBlanks32W(str);
|
||||||
|
return PathRemoveBlanks32A(str);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* PathFindFilename [SHELL32.34]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* basename(char *fn);
|
||||||
|
*/
|
||||||
|
LPCSTR WINAPI PathFindFilename32A(LPCSTR aptr)
|
||||||
|
{ LPCSTR aslash;
|
||||||
|
aslash = aptr;
|
||||||
|
|
||||||
|
TRACE(shell,"%s\n",aslash);
|
||||||
|
while (aptr[0])
|
||||||
|
{ if (((aptr[0]=='\\') || (aptr[0]==':')) && aptr[1] && aptr[1]!='\\')
|
||||||
|
aslash = aptr+1;
|
||||||
|
aptr++;
|
||||||
|
}
|
||||||
|
return aslash;
|
||||||
|
|
||||||
|
}
|
||||||
|
LPCWSTR WINAPI PathFindFilename32W(LPCWSTR wptr)
|
||||||
|
{ LPCWSTR wslash;
|
||||||
|
wslash = wptr;
|
||||||
|
|
||||||
|
TRACE(shell,"L%s\n",debugstr_w(wslash));
|
||||||
|
while (wptr[0])
|
||||||
|
{ if (((wptr[0]=='\\') || (wptr[0]==':')) && wptr[1] && wptr[1]!='\\')
|
||||||
|
wslash = wptr+1;
|
||||||
|
wptr++;
|
||||||
|
}
|
||||||
|
return wslash;
|
||||||
|
}
|
||||||
|
LPCVOID WINAPI PathFindFilename32AW(LPCVOID fn)
|
||||||
|
{
|
||||||
|
if(VERSION_OsIsUnicode())
|
||||||
|
return PathFindFilename32W(fn);
|
||||||
|
return PathFindFilename32A(fn);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* PathRemoveFileSpec [SHELL32.35]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* bool getpath(char *pathname); truncates passed argument to a valid path
|
||||||
|
* returns if the string was modified or not.
|
||||||
|
* "\foo\xx\foo"-> "\foo\xx"
|
||||||
|
* "\" -> "\"
|
||||||
|
* "a:\foo" -> "a:\"
|
||||||
|
*/
|
||||||
|
DWORD WINAPI PathRemoveFileSpec(LPSTR fn) {
|
||||||
|
LPSTR x,cutplace;
|
||||||
|
TRACE(shell,"%s\n",fn);
|
||||||
|
if (!fn[0])
|
||||||
|
return 0;
|
||||||
|
x=fn;
|
||||||
|
cutplace = fn;
|
||||||
|
while (*x) {
|
||||||
|
if (*x=='\\') {
|
||||||
|
cutplace=x++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (*x==':') {
|
||||||
|
x++;
|
||||||
|
if (*x=='\\')
|
||||||
|
cutplace=++x;
|
||||||
|
continue; /* already x++ed */
|
||||||
|
}
|
||||||
|
x++;
|
||||||
|
}
|
||||||
|
if (!*cutplace)
|
||||||
|
return 0;
|
||||||
|
if (cutplace==fn) {
|
||||||
|
if (fn[0]=='\\') {
|
||||||
|
if (!fn[1])
|
||||||
|
return 0;
|
||||||
|
fn[0]='\0';
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*cutplace='\0';
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* PathAppend [SHELL32.36]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* concat_paths(char*target,const char*add);
|
||||||
|
* concats "target\\add" and writes them to target
|
||||||
|
*/
|
||||||
|
LPSTR WINAPI PathAppend(LPSTR x1,LPSTR x2) {
|
||||||
|
TRACE(shell,"%s %s\n",x1,x2);
|
||||||
|
while (x2[0]=='\\') x2++;
|
||||||
|
return PathCombine32A(x1,x1,x2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* PathCombine [SHELL32.37]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* if lpszFile='.' skip it
|
||||||
|
* szDest can be equal to lpszFile. Thats why we use sTemp
|
||||||
|
*/
|
||||||
|
LPSTR WINAPI PathCombine32A(LPSTR szDest, LPCSTR lpszDir, LPCSTR lpszFile)
|
||||||
|
{ char sTemp[MAX_PATH];
|
||||||
|
TRACE(shell,"%p %p->%s %p->%s\n",szDest, lpszDir, lpszDir, lpszFile, lpszFile);
|
||||||
|
|
||||||
|
|
||||||
|
if (!lpszFile || !lpszFile[0] || (lpszFile[0]=='.' && !lpszFile[1]) )
|
||||||
|
{ strcpy(szDest,lpszDir);
|
||||||
|
return szDest;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* if lpszFile is a complete path don't care about lpszDir */
|
||||||
|
if (PathIsRoot32A(lpszFile))
|
||||||
|
{ strcpy(szDest,lpszFile);
|
||||||
|
}
|
||||||
|
strcpy(sTemp,lpszDir);
|
||||||
|
PathAddBackslash32A(sTemp);
|
||||||
|
strcat(sTemp,lpszFile);
|
||||||
|
strcpy(szDest,sTemp);
|
||||||
|
return szDest;
|
||||||
|
}
|
||||||
|
LPWSTR WINAPI PathCombine32W(LPWSTR szDest, LPCWSTR lpszDir, LPCWSTR lpszFile)
|
||||||
|
{ WCHAR sTemp[MAX_PATH];
|
||||||
|
TRACE(shell,"%p %p->%s %p->%s\n",szDest, lpszDir, debugstr_w(lpszDir),
|
||||||
|
lpszFile, debugstr_w(lpszFile));
|
||||||
|
|
||||||
|
|
||||||
|
if (!lpszFile || !lpszFile[0] || (lpszFile[0]==(WCHAR)'.' && !lpszFile[1]) )
|
||||||
|
{ lstrcpy32W(szDest,lpszDir);
|
||||||
|
return szDest;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* if lpszFile is a complete path don't care about lpszDir */
|
||||||
|
if (PathIsRoot32W(lpszFile))
|
||||||
|
{ lstrcpy32W(szDest,lpszFile);
|
||||||
|
}
|
||||||
|
lstrcpy32W(sTemp,lpszDir);
|
||||||
|
PathAddBackslash32W(sTemp);
|
||||||
|
lstrcat32W(sTemp,lpszFile);
|
||||||
|
lstrcpy32W(szDest,sTemp);
|
||||||
|
return szDest;
|
||||||
|
}
|
||||||
|
LPVOID WINAPI PathCombine32AW(LPVOID szDest, LPCVOID lpszDir, LPCVOID lpszFile)
|
||||||
|
{ if (VERSION_OsIsUnicode())
|
||||||
|
return PathCombine32W( szDest, lpszDir, lpszFile );
|
||||||
|
return PathCombine32A( szDest, lpszDir, lpszFile );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* PathIsUNC [SHELL32.39]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* PathIsUNC(char*path);
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI PathIsUNC(LPCSTR path) {
|
||||||
|
TRACE(shell,"%s\n",path);
|
||||||
|
if ((path[0]=='\\') && (path[1]=='\\'))
|
||||||
|
return TRUE;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
/*************************************************************************
|
||||||
|
* PathIsExe [SHELL32.43]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI PathIsExe (LPCSTR path)
|
||||||
|
{ TRACE(shell,"path=%s\n",path);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* PathFileExists [SHELL32.45]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* file_exists(char *fn);
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI PathFileExists(LPSTR fn) {
|
||||||
|
TRACE(shell,"%s\n",fn);
|
||||||
|
if (GetFileAttributes32A(fn)==-1)
|
||||||
|
return FALSE;
|
||||||
|
else
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
/*************************************************************************
|
||||||
|
* PathMatchSpec [SHELL32.46]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* used from COMDLG32
|
||||||
|
*/
|
||||||
|
|
||||||
|
BOOL32 WINAPI PathMatchSpec32A(LPCSTR name, LPCSTR mask)
|
||||||
|
{ LPCSTR _name;
|
||||||
|
|
||||||
|
TRACE(shell,"%s %s stub\n",name,mask);
|
||||||
|
|
||||||
|
_name = name;
|
||||||
|
while (*_name && *mask)
|
||||||
|
{ if (*mask ==';')
|
||||||
|
{ mask++;
|
||||||
|
_name = name;
|
||||||
|
}
|
||||||
|
else if (*mask == '*')
|
||||||
|
{ mask++;
|
||||||
|
while (*mask == '*') mask++; /* Skip consecutive '*' */
|
||||||
|
if (!*mask || *mask==';') return TRUE; /* '*' matches everything */
|
||||||
|
while (*_name && (toupper(*_name) != toupper(*mask))) _name++;
|
||||||
|
if (!*_name)
|
||||||
|
{ while ( *mask && *mask != ';') mask++;
|
||||||
|
_name = name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ( (*mask == '?') || (toupper(*mask) == toupper(*_name)) )
|
||||||
|
{ mask++;
|
||||||
|
_name++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ while ( *mask && *mask != ';') mask++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (!*_name && (!*mask || *mask==';'));
|
||||||
|
}
|
||||||
|
BOOL32 WINAPI PathMatchSpec32W(LPCWSTR name, LPCWSTR mask)
|
||||||
|
{ WCHAR stemp[4];
|
||||||
|
LPCWSTR _name;
|
||||||
|
|
||||||
|
TRACE(shell,"%s %s stub\n",debugstr_w(name),debugstr_w(mask));
|
||||||
|
|
||||||
|
lstrcpyAtoW(stemp,"*.*");
|
||||||
|
if (!lstrcmp32W( mask, stemp )) return 1;
|
||||||
|
|
||||||
|
_name = name;
|
||||||
|
while (*_name && *mask)
|
||||||
|
{ if (*mask ==';')
|
||||||
|
{ mask++;
|
||||||
|
_name = name;
|
||||||
|
}
|
||||||
|
else if (*mask == '*')
|
||||||
|
{ mask++;
|
||||||
|
while (*mask == '*') mask++; /* Skip consecutive '*' */
|
||||||
|
if (!*mask || *mask==';') return TRUE; /* '*' matches everything */
|
||||||
|
while (*_name && (towupper(*_name) != towupper(*mask))) _name++;
|
||||||
|
if (!*_name)
|
||||||
|
{ while ( *mask && *mask != ';') mask++;
|
||||||
|
_name = name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ( (*mask == '?') || (towupper(*mask) == towupper(*_name)) )
|
||||||
|
{ mask++;
|
||||||
|
_name++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ while ( *mask && *mask != ';') mask++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (!*_name && (!*mask || *mask==';'));
|
||||||
|
}
|
||||||
|
BOOL32 WINAPI PathMatchSpec32AW(LPVOID name, LPVOID mask)
|
||||||
|
{ if (VERSION_OsIsUnicode())
|
||||||
|
return PathMatchSpec32W( name, mask );
|
||||||
|
return PathMatchSpec32A( name, mask );
|
||||||
|
}
|
||||||
|
/*************************************************************************
|
||||||
|
* PathSetDlgItemPath32AW [SHELL32.48]
|
||||||
|
* NOTES
|
||||||
|
* use PathCompactPath to make sure, the path fits into the control
|
||||||
|
*/
|
||||||
|
|
||||||
|
BOOL32 WINAPI PathSetDlgItemPath32A(HWND32 hDlg, int id, LPCSTR pszPath)
|
||||||
|
{ TRACE(shell,"%x %x %s\n",hDlg, id, pszPath);
|
||||||
|
return SetDlgItemText32A(hDlg, id, pszPath);
|
||||||
|
}
|
||||||
|
BOOL32 WINAPI PathSetDlgItemPath32W(HWND32 hDlg, int id, LPCWSTR pszPath)
|
||||||
|
{ TRACE(shell,"%x %x %s\n",hDlg, id, debugstr_w(pszPath));
|
||||||
|
return SetDlgItemText32W(hDlg, id, pszPath);
|
||||||
|
}
|
||||||
|
BOOL32 WINAPI PathSetDlgItemPath32AW(HWND32 hDlg, int id, LPCVOID pszPath)
|
||||||
|
{ if (VERSION_OsIsUnicode())
|
||||||
|
return PathSetDlgItemPath32W(hDlg, id, pszPath);
|
||||||
|
return PathSetDlgItemPath32A(hDlg, id, pszPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* PathResolve [SHELL32.51]
|
||||||
|
*/
|
||||||
|
DWORD WINAPI PathResolve(LPCSTR s,DWORD x2,DWORD x3) {
|
||||||
|
FIXME(shell,"(%s,0x%08lx,0x%08lx),stub!\n",s,x2,x3);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* PathGetArgs [SHELL32.52]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* look for next arg in string. handle "quoted" strings
|
||||||
|
* returns pointer to argument *AFTER* the space. Or to the \0.
|
||||||
|
*/
|
||||||
|
LPVOID WINAPI PathGetArgs(LPVOID cmdline)
|
||||||
|
{ BOOL32 qflag = FALSE;
|
||||||
|
LPWSTR wptr;
|
||||||
|
LPSTR aptr;
|
||||||
|
|
||||||
|
if (VERSION_OsIsUnicode())
|
||||||
|
{ TRACE(shell,"%sL\n",debugstr_w((LPWSTR)cmdline));
|
||||||
|
wptr=(LPWSTR) cmdline;
|
||||||
|
while (*wptr)
|
||||||
|
{ if ((*wptr==' ') && !qflag)
|
||||||
|
return wptr+1;
|
||||||
|
if (*wptr=='"')
|
||||||
|
qflag=!qflag;
|
||||||
|
wptr++;
|
||||||
|
}
|
||||||
|
return (LPVOID) wptr;
|
||||||
|
}
|
||||||
|
TRACE(shell,"%s\n",(LPSTR)cmdline);
|
||||||
|
aptr=(LPSTR) cmdline;
|
||||||
|
while (*aptr)
|
||||||
|
{ if ((*aptr==' ') && !qflag)
|
||||||
|
return aptr+1;
|
||||||
|
if (*aptr=='"')
|
||||||
|
qflag=!qflag;
|
||||||
|
aptr++;
|
||||||
|
}
|
||||||
|
return (LPVOID) aptr;
|
||||||
|
}
|
||||||
|
/*************************************************************************
|
||||||
|
* PathQuoteSpaces [SHELL32.55]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* basename(char *fn);
|
||||||
|
*/
|
||||||
|
LPSTR WINAPI PathQuoteSpaces32A(LPCSTR aptr)
|
||||||
|
{ FIXME(shell,"%s\n",aptr);
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
LPWSTR WINAPI PathQuoteSpaces32W(LPCWSTR wptr)
|
||||||
|
{ FIXME(shell,"L%s\n",debugstr_w(wptr));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
LPVOID WINAPI PathQuoteSpaces32AW (LPCVOID fn)
|
||||||
|
{ if(VERSION_OsIsUnicode())
|
||||||
|
return PathQuoteSpaces32W(fn);
|
||||||
|
return PathQuoteSpaces32A(fn);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* PathUnquoteSpaces [SHELL32.56]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* unquote string (remove ")
|
||||||
|
*/
|
||||||
|
VOID WINAPI PathUnquoteSpaces(LPSTR str) {
|
||||||
|
DWORD len = lstrlen32A(str);
|
||||||
|
TRACE(shell,"%s\n",str);
|
||||||
|
if (*str!='"') return;
|
||||||
|
if (str[len-1]!='"') return;
|
||||||
|
str[len-1]='\0';
|
||||||
|
lstrcpy32A(str,str+1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* PathGetDriveNumber32 [SHELL32.57]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
HRESULT WINAPI PathGetDriveNumber32(LPSTR u)
|
||||||
|
{ FIXME(shell,"%s stub\n",debugstr_a(u));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* PathYetAnotherMakeUniqueName [SHELL32.75]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* exported by ordinal
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI PathYetAnotherMakeUniqueName(LPDWORD x,LPDWORD y) {
|
||||||
|
FIXME(shell,"(%p,%p):stub.\n",x,y);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* IsLFNDrive [SHELL32.119]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* exported by ordinal Name
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI IsLFNDrive(LPCSTR path) {
|
||||||
|
DWORD fnlen;
|
||||||
|
|
||||||
|
if (!GetVolumeInformation32A(path,NULL,0,NULL,&fnlen,NULL,NULL,0))
|
||||||
|
return FALSE;
|
||||||
|
return fnlen>12;
|
||||||
|
}
|
||||||
|
/*************************************************************************
|
||||||
|
* PathGetExtension [SHELL32.158]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* exported by ordinal
|
||||||
|
*/
|
||||||
|
LPCSTR WINAPI PathGetExtension32A(LPCSTR path,DWORD y,DWORD z)
|
||||||
|
{ TRACE(shell,"(%s,%08lx,%08lx)\n",path,y,z);
|
||||||
|
path = PathFindExtension32A(path);
|
||||||
|
return *path?(path+1):path;
|
||||||
|
}
|
||||||
|
LPCWSTR WINAPI PathGetExtension32W(LPCWSTR path,DWORD y,DWORD z)
|
||||||
|
{ TRACE(shell,"(L%s,%08lx,%08lx)\n",debugstr_w(path),y,z);
|
||||||
|
path = PathFindExtension32W(path);
|
||||||
|
return *path?(path+1):path;
|
||||||
|
}
|
||||||
|
LPCVOID WINAPI PathGetExtension32AW(LPCVOID path,DWORD y,DWORD z)
|
||||||
|
{ if (VERSION_OsIsUnicode())
|
||||||
|
return PathGetExtension32W(path,y,z);
|
||||||
|
return PathGetExtension32A(path,y,z);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* SheGetDirW [SHELL32.281]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
HRESULT WINAPI SheGetDir32W(LPWSTR u, LPWSTR v)
|
||||||
|
{ FIXME(shell,"%s %s stub\n",debugstr_w(u),debugstr_w(v) );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* SheChangeDirW [SHELL32.274]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
HRESULT WINAPI SheChangeDir32W(LPWSTR u)
|
||||||
|
{ FIXME(shell,"(%s),stub\n",debugstr_w(u));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* PathProcessCommand [SHELL32.653]
|
||||||
|
*/
|
||||||
|
HRESULT WINAPI PathProcessCommand (DWORD u, DWORD v, DWORD w, DWORD x)
|
||||||
|
{ FIXME(shell,"0x%04lx 0x%04lx 0x%04lx 0x%04lx stub\n",u,v,w,x);
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -206,13 +206,13 @@ static void MergeToolBar(LPSHELLVIEW this)
|
||||||
IShellBrowser_SendControlMsg(this->pShellBrowser,FCW_TOOLBAR,
|
IShellBrowser_SendControlMsg(this->pShellBrowser,FCW_TOOLBAR,
|
||||||
TB_ADDBITMAP, 8, (LPARAM)&ab, &iStdBMOffset);
|
TB_ADDBITMAP, 8, (LPARAM)&ab, &iStdBMOffset);
|
||||||
|
|
||||||
TRACE(shell,"TB_ADDBITMAP returns %x\n", iStdBMOffset);
|
TRACE(shell,"TB_ADDBITMAP returns %lx\n", iStdBMOffset);
|
||||||
|
|
||||||
ab.nID = IDB_VIEW_SMALL_COLOR; // std view bitmaps
|
ab.nID = IDB_VIEW_SMALL_COLOR; // std view bitmaps
|
||||||
IShellBrowser_SendControlMsg(this->pShellBrowser,FCW_TOOLBAR,
|
IShellBrowser_SendControlMsg(this->pShellBrowser,FCW_TOOLBAR,
|
||||||
TB_ADDBITMAP, 8, (LPARAM)&ab, &iViewBMOffset);
|
TB_ADDBITMAP, 8, (LPARAM)&ab, &iViewBMOffset);
|
||||||
|
|
||||||
TRACE(shell,"TB_ADDBITMAP returns %x\n", iViewBMOffset);
|
TRACE(shell,"TB_ADDBITMAP returns %lx\n", iViewBMOffset);
|
||||||
|
|
||||||
for (i=0; i<6; ++i)
|
for (i=0; i<6; ++i)
|
||||||
{ tbActual[i] = c_tbDefault[i];
|
{ tbActual[i] = c_tbDefault[i];
|
||||||
|
@ -279,7 +279,7 @@ BOOL32 ShellView_CreateList (LPSHELLVIEW this)
|
||||||
* internal
|
* internal
|
||||||
*/
|
*/
|
||||||
int nColumn1=120; /* width of column */
|
int nColumn1=120; /* width of column */
|
||||||
int nColumn2=50;
|
int nColumn2=80;
|
||||||
int nColumn3=170;
|
int nColumn3=170;
|
||||||
int nColumn4=60;
|
int nColumn4=60;
|
||||||
|
|
||||||
|
@ -883,7 +883,7 @@ void ShellView_DoContextMenu(LPSHELLVIEW this, WORD x, WORD y, BOOL32 fDefault)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ TRACE(shell,"-- invoke command\n", this->aSelectedItems[0]);
|
{ TRACE(shell,"-- invoke command\n");
|
||||||
ZeroMemory(&cmi, sizeof(cmi));
|
ZeroMemory(&cmi, sizeof(cmi));
|
||||||
cmi.cbSize = sizeof(cmi);
|
cmi.cbSize = sizeof(cmi);
|
||||||
cmi.hwnd = this->hWndParent;
|
cmi.hwnd = this->hWndParent;
|
||||||
|
@ -1011,20 +1011,24 @@ LRESULT ShellView_OnNotify(LPSHELLVIEW this, UINT32 CtlID, LPNMHDR lpnmh)
|
||||||
{ if(lpdi->item.mask & LVIF_TEXT) /*is the text being requested?*/
|
{ if(lpdi->item.mask & LVIF_TEXT) /*is the text being requested?*/
|
||||||
{ if(_ILIsValue(pidl)) /*is this a value or a folder?*/
|
{ if(_ILIsValue(pidl)) /*is this a value or a folder?*/
|
||||||
{ switch (lpdi->item.iSubItem)
|
{ switch (lpdi->item.iSubItem)
|
||||||
{ case 1:
|
{ case 1: /* size */
|
||||||
_ILGetFileSize (pidl, lpdi->item.pszText, lpdi->item.cchTextMax);
|
_ILGetFileSize (pidl, lpdi->item.pszText, lpdi->item.cchTextMax);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2: /* extension */
|
||||||
{ char sTemp[64];
|
{ char sTemp[64];
|
||||||
if (!( _ILGetExtension (pidl, sTemp, 64)
|
if (_ILGetExtension (pidl, sTemp, 64))
|
||||||
&& HCR_MapTypeToValue(sTemp, sTemp, 64)
|
{ if (!( HCR_MapTypeToValue(sTemp, sTemp, 64)
|
||||||
&& HCR_MapTypeToValue(sTemp, lpdi->item.pszText, lpdi->item.cchTextMax )))
|
&& HCR_MapTypeToValue(sTemp, lpdi->item.pszText, lpdi->item.cchTextMax )))
|
||||||
{ strncpy (lpdi->item.pszText, sTemp, lpdi->item.cchTextMax);
|
{ strncpy (lpdi->item.pszText, sTemp, lpdi->item.cchTextMax);
|
||||||
strncat (lpdi->item.pszText, "-file", lpdi->item.cchTextMax);
|
strncat (lpdi->item.pszText, "-file", lpdi->item.cchTextMax);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else /* no extension found */
|
||||||
|
{ lpdi->item.pszText[0]=0x00;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3: /* date */
|
||||||
_ILGetFileDate (pidl, lpdi->item.pszText, lpdi->item.cchTextMax);
|
_ILGetFileDate (pidl, lpdi->item.pszText, lpdi->item.cchTextMax);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -283,7 +283,20 @@ LPCWSTR WINAPI PathFindFilename32W(LPCWSTR path);
|
||||||
#define PathFindFilename WINELIB_NAME_AW(PathFindFilename)
|
#define PathFindFilename WINELIB_NAME_AW(PathFindFilename)
|
||||||
LPCVOID WINAPI PathFindFilename32AW(LPCVOID path);
|
LPCVOID WINAPI PathFindFilename32AW(LPCVOID path);
|
||||||
|
|
||||||
LPSTR WINAPI PathRemoveBlanks(LPSTR str);
|
BOOL32 WINAPI PathMatchSpec32A(LPCSTR x, LPCSTR y);
|
||||||
|
BOOL32 WINAPI PathMatchSpec32W(LPCWSTR x, LPCWSTR y);
|
||||||
|
#define PathMatchSpec WINELIB_NAME_AW(PathMatchSpec)
|
||||||
|
BOOL32 WINAPI PathMatchSpec32AW(LPVOID x, LPVOID y);
|
||||||
|
|
||||||
|
LPSTR WINAPI PathRemoveBlanks32A(LPSTR str);
|
||||||
|
LPWSTR WINAPI PathRemoveBlanks32W(LPWSTR str);
|
||||||
|
#define PathRemoveBlanks WINELIB_NAME_AW(PathRemoveBlanks)
|
||||||
|
LPVOID WINAPI PathRemoveBlanks32AW(LPVOID str);
|
||||||
|
|
||||||
|
LPSTR WINAPI StrFormatByteSize32A ( DWORD dw, LPSTR pszBuf, UINT32 cchBuf );
|
||||||
|
LPWSTR WINAPI StrFormatByteSize32W ( DWORD dw, LPWSTR pszBuf, UINT32 cchBuf );
|
||||||
|
#define StrFormatByteSize WINELIB_NAME_AW(StrFormatByteSize)
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* other functions
|
* other functions
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -38,7 +38,7 @@ init Shell32LibMain
|
||||||
30 stdcall PathBuildRoot(ptr long) PathBuildRoot
|
30 stdcall PathBuildRoot(ptr long) PathBuildRoot
|
||||||
31 stdcall PathFindExtension(ptr) PathFindExtension32AW
|
31 stdcall PathFindExtension(ptr) PathFindExtension32AW
|
||||||
32 stdcall PathAddBackslash(ptr) PathAddBackslash32AW
|
32 stdcall PathAddBackslash(ptr) PathAddBackslash32AW
|
||||||
33 stdcall PathRemoveBlanks(str) PathRemoveBlanks
|
33 stdcall PathRemoveBlanks(str) PathRemoveBlanks32AW
|
||||||
34 stdcall PathFindFilename(ptr) PathFindFilename32AW
|
34 stdcall PathFindFilename(ptr) PathFindFilename32AW
|
||||||
35 stdcall PathRemoveFileSpec(str) PathRemoveFileSpec
|
35 stdcall PathRemoveFileSpec(str) PathRemoveFileSpec
|
||||||
36 stdcall PathAppend(str str) PathAppend
|
36 stdcall PathAppend(str str) PathAppend
|
||||||
|
@ -51,9 +51,9 @@ init Shell32LibMain
|
||||||
43 stdcall PathIsExe (ptr) PathIsExe
|
43 stdcall PathIsExe (ptr) PathIsExe
|
||||||
44 stub DoEnvironmentSubstA@8
|
44 stub DoEnvironmentSubstA@8
|
||||||
45 stdcall PathFileExists(str) PathFileExists
|
45 stdcall PathFileExists(str) PathFileExists
|
||||||
46 stdcall PathMatchSpec (str str) PathMatchSpec
|
46 stdcall PathMatchSpec (str str) PathMatchSpec32AW
|
||||||
47 stub PathMakeUniqueName@20
|
47 stub PathMakeUniqueName@20
|
||||||
48 stub PathSetDlgItemPath@12
|
48 stdcall PathSetDlgItemPath (long long ptr) PathSetDlgItemPath32AW
|
||||||
49 stub PathQualify@4
|
49 stub PathQualify@4
|
||||||
50 stub PathStripToRoot@4
|
50 stub PathStripToRoot@4
|
||||||
51 stdcall PathResolve(str long long) PathResolve
|
51 stdcall PathResolve(str long long) PathResolve
|
||||||
|
|
Loading…
Reference in New Issue