2017-10-06 13:00:36 +00:00
|
|
|
Index: path.c
|
|
|
|
===================================================================
|
|
|
|
--- path.c (working copy)
|
|
|
|
+++ path.c (working copy)
|
|
|
|
@@ -21,23 +21,8 @@
|
|
|
|
|
|
|
|
#include "precomp.h"
|
|
|
|
|
|
|
|
-/* Get a function pointer from a DLL handle */
|
|
|
|
-#define GET_FUNC(func, module, name, fail) \
|
|
|
|
- do { \
|
|
|
|
- if (!func) { \
|
|
|
|
- if (!SHLWAPI_h##module && !(SHLWAPI_h##module = LoadLibraryA(#module ".dll"))) return fail; \
|
|
|
|
- func = (fn##func)GetProcAddress(SHLWAPI_h##module, name); \
|
|
|
|
- if (!func) return fail; \
|
|
|
|
- } \
|
|
|
|
- } while (0)
|
|
|
|
+int WINAPI IsNetDrive(int drive);
|
|
|
|
|
|
|
|
-/* DLL handles for late bound calls */
|
|
|
|
-static HMODULE SHLWAPI_hshell32;
|
|
|
|
-
|
|
|
|
-/* Function pointers for GET_FUNC macro; these need to be global because of gcc bug */
|
|
|
|
-typedef BOOL (WINAPI *fnpIsNetDrive)(int);
|
|
|
|
-static fnpIsNetDrive pIsNetDrive;
|
|
|
|
-
|
|
|
|
HRESULT WINAPI SHGetWebFolderFilePathW(LPCWSTR,LPWSTR,DWORD);
|
|
|
|
|
|
|
|
static inline WCHAR* heap_strdupAtoW(LPCSTR str)
|
|
|
|
@@ -2186,7 +2186,7 @@
|
|
|
|
{
|
|
|
|
TRACE("(%s)\n",debugstr_a(lpszPath));
|
|
|
|
|
|
|
|
- if (lpszPath && (lpszPath[0]=='\\') && (lpszPath[1]=='\\'))
|
|
|
|
+ if (lpszPath && (lpszPath[0]=='\\') && (lpszPath[1]=='\\') && (lpszPath[2]!='?'))
|
|
|
|
return TRUE;
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
@@ -2200,7 +2200,7 @@
|
|
|
|
{
|
|
|
|
TRACE("(%s)\n",debugstr_w(lpszPath));
|
|
|
|
|
|
|
|
- if (lpszPath && (lpszPath[0]=='\\') && (lpszPath[1]=='\\'))
|
|
|
|
+ if (lpszPath && (lpszPath[0]=='\\') && (lpszPath[1]=='\\') && (lpszPath[2]!='?'))
|
|
|
|
return TRUE;
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
@@ -3699,8 +3684,7 @@
|
|
|
|
dwDriveNum = PathGetDriveNumberA(lpszPath);
|
|
|
|
if (dwDriveNum == -1)
|
|
|
|
return FALSE;
|
|
|
|
- GET_FUNC(pIsNetDrive, shell32, (LPCSTR)66, FALSE); /* ord 66 = shell32.IsNetDrive */
|
|
|
|
- return pIsNetDrive(dwDriveNum);
|
|
|
|
+ return IsNetDrive(dwDriveNum);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
@@ -3721,8 +3705,7 @@
|
|
|
|
dwDriveNum = PathGetDriveNumberW(lpszPath);
|
|
|
|
if (dwDriveNum == -1)
|
|
|
|
return FALSE;
|
|
|
|
- GET_FUNC(pIsNetDrive, shell32, (LPCSTR)66, FALSE); /* ord 66 = shell32.IsNetDrive */
|
|
|
|
- return pIsNetDrive(dwDriveNum);
|
|
|
|
+ return IsNetDrive(dwDriveNum);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*************************************************************************
|