54#if (_WIN32_WINNT < _WIN32_WINNT_VISTA) || (DLL_EXPORT_VERSION < _WIN32_WINNT_VISTA)
56static inline size_t compat_wcsnlen(
const wchar_t*
str,
size_t size)
61#define wcsnlen compat_wcsnlen
72 0x01, 0x0e, 0x6e, 0x19, 0x61, 0xae, 0x84, 0x77, 0x8a, 0xaa, 0x7d, 0x76, 0x1b, 0xe9, 0x8c, 0x33,
73 0x57, 0xc5, 0xb1, 0x6b, 0xea, 0xa9, 0x38, 0x44, 0x1e, 0x07, 0xad, 0x49, 0xbc, 0x28, 0x24, 0x41,
74 0x31, 0xd5, 0x68, 0xbe, 0x39, 0xd3, 0x94, 0xdf, 0x30, 0x73, 0x0f, 0x02, 0x43, 0xba, 0xd2, 0x1c,
75 0x0c, 0xb5, 0x67, 0x46, 0x16, 0x3a, 0x4b, 0x4e, 0xb7, 0xa7, 0xee, 0x9d, 0x7c, 0x93, 0xac, 0x90,
76 0xb0, 0xa1, 0x8d, 0x56, 0x3c, 0x42, 0x80, 0x53, 0x9c, 0xf1, 0x4f, 0x2e, 0xa8, 0xc6, 0x29, 0xfe,
77 0xb2, 0x55, 0xfd, 0xed, 0xfa, 0x9a, 0x85, 0x58, 0x23, 0xce, 0x5f, 0x74, 0xfc, 0xc0, 0x36, 0xdd,
78 0x66, 0xda, 0xff, 0xf0, 0x52, 0x6a, 0x9e, 0xc9, 0x3d, 0x03, 0x59, 0x09, 0x2a, 0x9b, 0x9f, 0x5d,
79 0xa6, 0x50, 0x32, 0x22, 0xaf, 0xc3, 0x64, 0x63, 0x1a, 0x96, 0x10, 0x91, 0x04, 0x21, 0x08, 0xbd,
80 0x79, 0x40, 0x4d, 0x48, 0xd0, 0xf5, 0x82, 0x7a, 0x8f, 0x37, 0x69, 0x86, 0x1d, 0xa4, 0xb9, 0xc2,
81 0xc1, 0xef, 0x65, 0xf2, 0x05, 0xab, 0x7e, 0x0b, 0x4a, 0x3b, 0x89, 0xe4, 0x6c, 0xbf, 0xe8, 0x8b,
82 0x06, 0x18, 0x51, 0x14, 0x7f, 0x11, 0x5b, 0x5c, 0xfb, 0x97, 0xe1, 0xcf, 0x15, 0x62, 0x71, 0x70,
83 0x54, 0xe2, 0x12, 0xd6, 0xc7, 0xbb, 0x0d, 0x20, 0x5e, 0xdc, 0xe0, 0xd4, 0xf7, 0xcc, 0xc4, 0x2b,
84 0xf9, 0xec, 0x2d, 0xf4, 0x6f, 0xb6, 0x99, 0x88, 0x81, 0x5a, 0xd9, 0xca, 0x13, 0xa5, 0xe7, 0x47,
85 0xe6, 0x8e, 0x60, 0xe3, 0x3e, 0xb3, 0xf6, 0x72, 0xa2, 0x35, 0xa0, 0xd7, 0xcd, 0xb4, 0x2f, 0x6d,
86 0x2c, 0x26, 0x1f, 0x95, 0x87, 0x00, 0xd8, 0x34, 0x3f, 0x17, 0x25, 0x45, 0x27, 0x75, 0x92, 0xb8,
87 0xa3, 0xc8, 0xde, 0xeb, 0xf8, 0xf3, 0xdb, 0x0a, 0x98, 0x83, 0x7b, 0xe5, 0xcb, 0x4c, 0x78, 0xd1,
125 unsigned int new_capacity, max_capacity;
128 if (
count <= *capacity)
132 if (
count > max_capacity)
135 new_capacity =
max(4, *capacity);
136 while (new_capacity <
count && new_capacity <= max_capacity / 2)
138 if (new_capacity <
count)
139 new_capacity = max_capacity;
144 *elements = new_elements;
145 *capacity = new_capacity;
152 return c ==
'/' ||
c ==
'\\';
167#ifndef STATIC_PATHCCH
176 return !
wcsnicmp(
string,
L"\\\\?\\UNC\\", 8 );
226 *next_segment =
next + 1;
231 *next_segment =
next;
247 else if (
path[0] ==
'\\' &&
path[1] ==
'\\')
250 else if (
path[0] ==
'\\')
263 const WCHAR *root_end;
268 if (!path_in || !path_out
274 if (path_out) *path_out =
NULL;
302 if (root_end) root_end =
buffer + (root_end - path_in);
346 if (
dst >
buffer &&
dst[-1] ==
'\\' && (!root_end ||
dst - 1 > root_end))
362 else if (
src[2] ==
'\\')
379 else if (
src[1] ==
'\\')
392 if (
src[0] ==
'\\')
src++;
448 SIZE_T combined_length, length2;
449 WCHAR *combined_path;
511 BOOL needs_termination;
521 if (endptr) *endptr =
NULL;
522 if (remaining) *remaining = 0;
526 if (!needs_termination)
560 has_dot = extension[0] ==
'.';
564 if (*existing_extension)
return S_FALSE;
567 dot_length = has_dot ? 0 : 1;
568 extension_length =
lstrlenW(extension);
573 if (!extension[0] || (extension[0] ==
'.' && !extension[1]))
return S_OK;
723 else if (*
path ==
'.')
735 *extension = lastpoint ? lastpoint :
path;
741 const WCHAR *root_end;
750 if (!root_end)
return FALSE;
756 if ((is_unc && !*
next) || (!is_unc && !*
next))
return TRUE;
770 else if (*root_end ==
'\\' && !root_end[1])
788 const WCHAR *root_end;
793 if (!path_size || !path_end || !free_size)
795 if (path_end) *path_end =
NULL;
796 if (free_size) *free_size = 0;
827 const WCHAR *extension;
899 else if (
path[0] ==
'\\' &&
path[1] ==
'\\' &&
path[2] !=
'?')
937 const WCHAR *root_end;
946 if (root_end && root_end >
path && root_end[-1] ==
'\\'
951 segment_end =
path + (root_end -
path);
952 if (!*segment_end)
return S_FALSE;
972 else if (
path[0] ==
'\\' &&
path[1] ==
'\\' &&
path[2] !=
'?')
979#ifndef STATIC_PATHCCH
1095 root_end =
path + 2;
1096 if (*root_end ==
'\\') ++root_end;
1101 if (*root_end ==
'\\') ++root_end;
1102 if (root_end[1] !=
'?')
1104 if (*root_end ==
'\\') ++root_end;
1106 if (*root_end ==
'\\' && root_end[1] && root_end[1] !=
'\\') ++root_end;
1110 if (
ptr &&
ptr != root_end)
1112 if (
ptr[-1] ==
'\\') --
ptr;
1116 if (!*root_end)
return FALSE;
1136 if (*root_end ==
'\\') ++root_end;
1137 if (root_end[1] !=
'?')
1139 if (*root_end ==
'\\') ++root_end;
1141 if (*root_end ==
'\\' && root_end[1] && root_end[1] !=
'\\') ++root_end;
1144 else if (*root_end ==
'\\') ++root_end;
1146 if (
ptr &&
ptr != root_end)
1148 if (
ptr[-1] ==
'\\') --
ptr;
1152 if (!*root_end)
return FALSE;
1219 if (
path[-1] !=
'\\')
1231 const char *lastpoint =
NULL;
1241 else if (*
path ==
'.')
1247 return (
LPSTR)(lastpoint ? lastpoint :
path);
1262 else if (*
path ==
'.')
1268 return (
LPWSTR)(lastpoint ? lastpoint :
path);
1333 else if (*
src &&
src[1] ==
':')
1548 const char *iter1 = file1;
1549 const char *iter2 = file2;
1550 unsigned int len = 0;
1557 if (!file1 || !file2)
1574 if ((!*iter1 || *iter1 ==
'\\') && (!*iter2 || *iter2 ==
'\\'))
1575 len = iter1 - file1;
1598 const WCHAR *iter1 = file1;
1599 const WCHAR *iter2 = file2;
1600 unsigned int len = 0;
1607 if (!file1 || !file2)
1624 if ((!*iter1 || *iter1 ==
'\\') && (!*iter2 || *iter2 ==
'\\'))
1625 len = iter1 - file1;
1662 const char *last_slash =
path;
1670 last_slash =
path + 1;
1674 return (
char *)last_slash;
1687 last_slash =
path + 1;
1691 return (
WCHAR *)last_slash;
1705 if (*
path ==
' ' && !seen_quote)
1706 return (
char *)
path + 1;
1709 seen_quote = !seen_quote;
1713 return (
char *)
path;
1727 if (*
path ==
' ' && !seen_quote)
1731 seen_quote = !seen_quote;
1744 if (!
ch ||
ch <
' ' ||
ch ==
'<' ||
ch ==
'>' ||
ch ==
'"' ||
ch ==
'|' ||
ch ==
'/')
1746 else if (
ch ==
'*' ||
ch ==
'?')
1748 else if (
ch ==
'\\' ||
ch ==
':')
1755 ch ==
'.' ||
ch ==
'@' ||
ch ==
'^' ||
ch ==
'\'' ||
ch ==
'`')
1795 if (!
path[0] ||
path[1] !=
':')
return -1;
1796 if (
path[0] >=
'A' &&
path[0] <=
'Z')
return path[0] -
'A';
1797 if (
path[0] >=
'a' &&
path[0] <=
'z')
return path[0] -
'a';
1873 while (*
path ==
' ')
1880 while (
start[-1] ==
' ')
1897 while (*
path ==
' ')
1904 while (
start[-1] ==
' ')
2035 unsigned int name_len = 0, ext_len = 0;
2072 unsigned int name_len = 0, ext_len = 0;
2107#define PATH_CHAR_CLASS_LETTER 0x00000001
2108#define PATH_CHAR_CLASS_ASTERIX 0x00000002
2109#define PATH_CHAR_CLASS_DOT 0x00000004
2110#define PATH_CHAR_CLASS_BACKSLASH 0x00000008
2111#define PATH_CHAR_CLASS_COLON 0x00000010
2112#define PATH_CHAR_CLASS_SEMICOLON 0x00000020
2113#define PATH_CHAR_CLASS_COMMA 0x00000040
2114#define PATH_CHAR_CLASS_SPACE 0x00000080
2115#define PATH_CHAR_CLASS_OTHER_VALID 0x00000100
2116#define PATH_CHAR_CLASS_DOUBLEQUOTE 0x00000200
2118#define PATH_CHAR_CLASS_INVALID 0x00000000
2119#define PATH_CHAR_CLASS_ANY 0xffffffff
2191 if ((
unsigned)
c > 0x7e)
2216 if (slash[1] ==
'\\')
2235 if (slash[1] ==
'\\')
2250 if (*
path ==
'\\' &&
path[1] ==
'\\')
2256 return (
char *)
path;
2264 return (
char *)
path + 3;
2276 if (*
path ==
'\\' &&
path[1] ==
'\\')
2334 DWORD attributes_to)
2353 DWORD attributes_to)
2460 while (*
mask ==
'*')
2481 while (*
mask ==
' ')
2657 if (buf_len <
len + 1)
return FALSE;
2676 if (
map->len)
map->len--;
2687 {
L"%ALLUSERSPROFILE%" },
2689 {
L"%ProgramFiles%" },
2690 {
L"%SystemRoot%" },
2691 {
L"%SystemDrive%" },
2692 {
L"%USERPROFILE%" },
2706 if (
cur->len == 0 ||
cur->len > pathlen ||
2719 if (
match->len == 0 || needed > buf_len)
return FALSE;
2757 while (*
p <= 0x7f && (
iswalnum( *
p ) || *
p ==
'+' || *
p ==
'-' || *
p ==
'.'))
2859 stop_unescaping =
TRUE;
2891 *unescaped_len = needed;
2903 else if ((
code & 0xe0) == 0xc0)
2905 else if ((
code & 0xf0) == 0xe0)
2907 else if ((
code & 0xf8) == 0xf0)
2916 int utf8_len, utf16_len,
i;
2940 stop_unescaping =
TRUE;
2957 for (
i = 1;
i < utf8_len && *(
src + 1) ==
'%' && *(
src + 2) && *(
src + 3);
i++)
2962 if ((ih & 0xc0) == 0x80)
2972 utf8_buf,
i, utf16_buf,
ARRAYSIZE(utf16_buf));
2974 needed += utf16_len - 1;
2988 memcpy(
dst, utf16_buf, utf16_len *
sizeof(*utf16_buf));
3008 *unescaped_len = needed;
3068 while (*
src ==
'/' || *
src ==
'\\')
3119 while (*
src && *
src !=
'/' && *
src !=
'\\')
3148 if (*
dst ==
'/') *
dst =
'\\';
3230#define WINE_URL_BASH_AS_SLASH 0x01
3231#define WINE_URL_COLLAPSE_SLASHES 0x02
3232#define WINE_URL_ESCAPE_SLASH 0x04
3233#define WINE_URL_ESCAPE_HASH 0x08
3234#define WINE_URL_ESCAPE_QUESTION 0x10
3235#define WINE_URL_STOP_ON_HASH 0x20
3236#define WINE_URL_STOP_ON_QUESTION 0x40
3249 if (
ch <= 31 || (
ch >= 127 &&
ch <= 255) )
3284 WCHAR *escapedW = bufW;
3289 if (!escaped || !escaped_len || !*escaped_len)
3310 if (*escaped_len > lenA)
3314 *escaped_len = lenA;
3318 *escaped_len = lenA + 1;
3322 if (escapedW != bufW)
3330 DWORD needed = 0, slashes = 0, int_flags;
3340 if (!
url || !escaped_len || !escaped || *escaped_len == 0)
3346 FIXME(
"Unimplemented flags: %08lx\n",
flags);
3378 int_flags &= ~WINE_URL_STOP_ON_HASH;
3411 while (
cur ==
'/' ||
cur ==
'\\')
3417 if(
src[9] ==
'/' ||
src[9] ==
'\\')
src += 10;
3440 stop_escaping =
TRUE;
3443 stop_escaping =
TRUE;
3453 if ((
cur >= 0xd800 &&
cur <= 0xdfff) && (
src[1] >= 0xdc00 &&
src[1] <= 0xdfff))
3469 for (
i = 0;
i <
len; ++
i)
3493 if (needed +
len <= *escaped_len)
3501 if (needed < *escaped_len)
3504 memcpy(escaped, dst_ptr, (needed+1)*
sizeof(
WCHAR));
3512 *escaped_len = needed;
3525 if (!src_url || !canonicalized || !canonicalized_len || !*canonicalized_len)
3530 if (!
url || !canonical)
3712 bool is_relative =
false, has_hostname =
false, has_initial_slash =
false;
3715 size_t query_len = 0, hash_len = 0;
3716 const WCHAR *scheme_end, *src_end;
3718 size_t hostname_len = 0;
3726 if (*scheme_end ==
':' && scheme_end >=
url + 2)
3728 size_t scheme_len = scheme_end + 1 -
url;
3732 for (
size_t i = 0;
i < scheme_len; ++
i)
3735 else if (
url[0] ==
'\\' &&
url[1] ==
'\\')
3742 has_hostname =
true;
3753 has_hostname =
true;
3759 while (*
src && *
src !=
'/')
3788 has_hostname =
true;
3789 has_initial_slash =
true;
3793 has_initial_slash =
true;
3812 has_hostname =
true;
3823 has_hostname =
true;
3842 bool is_drive =
false;
3916 for (
size_t i = 0;
i < hostname_len; ++
i)
3924 if (*
src ==
'/' || *
src ==
'\\')
3947 root_offset =
dst->len;
4013 while (
src < src_end)
4015 bool is_dots =
false;
4032 if (*
src ==
'/' || *
src ==
'\\')
4053 if (*
src ==
'/' || *
src ==
'\\')
4057 root_offset =
dst->len;
4062 if (
dst->len > root_offset)
4069 if (*
src ==
'/' || *
src ==
'\\')
4082 if (*
src ==
'?' || *
src ==
'#' || !*
src)
4098 if (!
dst->len && src_end !=
url)
4139 if (!src_url || !canonicalized || !canonicalized_len || !*canonicalized_len)
4150 flags &= ~URL_WININET_COMPATIBILITY;
4154 while (*
src > 0 && *
src <= 0x20)
4164 for (
size_t i = 0;
i <
len; ++
i)
4166 if (
src[
i] !=
'\t' &&
src[
i] !=
'\n' &&
src[
i] !=
'\r')
4192 if (rewritten.
len <= *canonicalized_len)
4195 *canonicalized_len = rewritten.
len - 1;
4200 *canonicalized_len = rewritten.
len;
4221 if (!
url || !
out || !out_len)
4256 DWORD value_len, data_len, dwType,
i;
4263 "Software\\Microsoft\\Windows\\CurrentVersion\\URL\\Prefixes", -1, reg_path,
MAX_PATH);
4266 while (value_len = data_len =
MAX_PATH,
4272 for (
i = 0;
i < value_len; ++
i)
4280 if ((
i == value_len) && !
j)
4314 if (needed >= *url_len)
4316 *url_len = needed + 1;
4338 DWORD data_len, dwType;
4345 data_len =
sizeof(
data);
4389 in_scheme.
cbSize =
sizeof(in_scheme);
4418 if (
url1[len1-1] ==
'/') len1--;
4420 if (
url2[len2-1] ==
'/') len2--;
4426 if (len1 > len2)
return 1;
4432 size_t len, len1, len2;
4438 if (
url1[len1-1] ==
'/') len1--;
4440 if (
url2[len2-1] ==
'/') len2--;
4446 if (len1 > len2)
return 1;
4462 lstrcpynW(translatedUrl,
url, (maxChars < srcLen) ? maxChars : srcLen);
4503 if (!
url || !
out || !out_len || !*out_len)
4520 if (len2 > *out_len)
4527 *out_len = len2 - 1;
4546 memset(pl, 0,
sizeof(*pl));
4549 if (work <
url + 2 || *work !=
':')
return;
4584 else if (*work ==
'@')
4615 pl->
port = work + 1;
4634 TRACE(
"%s, %p, %p(%ld), %#lx, %#lx\n",
wine_dbgstr_w(
url),
out, out_len, *out_len, part,
flags);
4636 if (!
url || !
out || !out_len || !*out_len)
4666 flags &= ~URL_PARTFLAG_KEEPSCHEME;
4698 flags &= ~URL_PARTFLAG_KEEPSCHEME;
4713 if (*out_len < schsize +
size + 2)
4715 *out_len = schsize +
size + 2;
4722 *out_len = schsize + 1 +
size;
4726 if (*out_len <
size + 1)
4728 *out_len =
size + 1;
4803 switch (
base.nScheme)
4874 if (*url_len > lenA)
4882 *url_len = lenA + 1;
4916 if (!
base || !relative || !combined_len)
4925 len = *combined_len;
4930 *combined_len =
len;
4936 if (len2 > *combined_len)
4938 *combined_len = len2;
4943 *combined_len = len2;
4950 DWORD i,
len, process_case = 0, myflags, sizeloc = 0;
4951 LPWSTR work, preliminary, mbase, canonicalized;
4957 if (!
baseW || !relativeW || !combined_len)
4961 relative.
cbSize =
sizeof(relative);
4967 *preliminary =
'\0';
4978 TRACE(
"no scheme detected in Base\n");
4999 base.cchProtocol += delta;
5000 base.pszSuffix += delta;
5001 base.cchSuffix -= delta;
5016 while (*work && (*work !=
'/')) work++;
5017 sizeloc = (
DWORD)(work -
base.pszSuffix);
5031 manual_search =
TRUE;
5032 else if (work -
base.pszSuffix > 4)
5037 if (!manual_search && work -
base.pszSuffix > 5)
5046 while (*work !=
'/' && work >
base.pszSuffix + sizeloc)
5048 base.cchSuffix = work -
base.pszSuffix + 1;
5060 base.cchSuffix = sizeloc;
5075 TRACE(
"no scheme detected in Relative\n");
5078 if (*relativeW ==
':')
5096 if ((relativeW[0] ==
'/' || relativeW[0] ==
'\\') &&
5097 (relativeW[1] ==
'/' || relativeW[1] ==
'\\'))
5103 if (*relativeW ==
'/' || *relativeW ==
'\\')
5109 if (*relativeW ==
'#')
5115 preliminary[work-
base.pszProtocol] =
'\0';
5147 process_case = (*
base.pszSuffix ==
'/') ? 5 : 1;
5162 switch (process_case)
5177 work = preliminary +
base.cchProtocol + 1;
5184 work = preliminary +
base.cchProtocol + 1 + sizeloc;
5193 work = preliminary +
base.cchProtocol + 1 +
base.cchSuffix - 1;
5200 FIXME(
"Unexpected case %ld.\n", process_case);
5206 if (*combined_len == 0)
5210 lstrcpyW( combined, canonicalized );
5212 TRACE(
"return-%ld len=%ld, %s\n", process_case, *combined_len,
debugstr_w(combined));
5221 INT src_count = src_len - 1, dest_count = dest_len - 1;
5226 while (dest_count >= 0)
5228 dest[dest_count] = (dest_count & 0xff);
5232 while (src_count >= 0)
5234 dest_count = dest_len - 1;
5235 while (dest_count >= 0)
static WCHAR baseW[MAX_PATH]
static void * heap_alloc(size_t len)
static BOOL heap_free(void *mem)
static void * heap_realloc(void *mem, size_t len)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define RegCloseKey(hKey)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegEnumValueW(_In_ HKEY hKey, _In_ DWORD index, _Out_ LPWSTR value, _Inout_ PDWORD val_count, _Reserved_ PDWORD reserved, _Out_opt_ PDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ PDWORD count)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
INT WINAPI StrToIntW(LPCWSTR lpString)
LPWSTR WINAPI StrChrW(LPCWSTR lpszStr, WCHAR ch)
LPWSTR WINAPI StrRChrW(LPCWSTR str, LPCWSTR end, WORD ch)
LPSTR WINAPI StrRChrA(LPCSTR lpszStr, LPCSTR lpszEnd, WORD ch)
INT WINAPI StrToIntA(LPCSTR lpszStr)
LPSTR WINAPI StrChrA(LPCSTR lpszStr, WORD ch)
#define ERROR_INVALID_PARAMETER
#define HeapFree(x, y, z)
#define WideCharToMultiByte
#define MultiByteToWideChar
#define __EXCEPT_PAGE_FAULT
static const WCHAR *const ext[]
static void cleanup(void)
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
UINT WINAPI SetErrorMode(IN UINT uMode)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
DWORD WINAPI GetFileAttributesA(LPCSTR lpFileName)
DWORD WINAPI SearchPathA(IN LPCSTR lpPath OPTIONAL, IN LPCSTR lpFileName, IN LPCSTR lpExtension OPTIONAL, IN DWORD nBufferLength, OUT LPSTR lpBuffer, OUT LPSTR *lpFilePart OPTIONAL)
DWORD WINAPI SearchPathW(IN LPCWSTR lpPath OPTIONAL, IN LPCWSTR lpFileName, IN LPCWSTR lpExtension OPTIONAL, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart OPTIONAL)
DWORD WINAPI GetFullPathNameA(IN LPCSTR lpFileName, IN DWORD nBufferLength, OUT LPSTR lpBuffer, OUT LPSTR *lpFilePart)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
BOOL WINAPI IsDBCSLeadByte(BYTE testchar)
INT WINAPI CompareStringA(LCID lcid, DWORD flags, LPCSTR str1, INT len1, LPCSTR str2, INT len2)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
int WINAPI lstrcmpA(LPCSTR str1, LPCSTR str2)
int WINAPI PathCommonPrefixW(const WCHAR *file1, const WCHAR *file2, WCHAR *path)
HRESULT WINAPI PathCchRemoveFileSpec(WCHAR *path, SIZE_T size)
HRESULT WINAPI UrlCreateFromPathW(const WCHAR *path, WCHAR *url, DWORD *url_len, DWORD reserved)
HRESULT WINAPI ParseURLW(const WCHAR *url, PARSEDURLW *result)
BOOL WINAPI PathIsRootA(const char *path)
#define WINE_URL_STOP_ON_QUESTION
static int get_utf8_len(unsigned char code)
#define PATH_CHAR_CLASS_DOUBLEQUOTE
static bool array_reserve(void **elements, size_t *capacity, size_t count, size_t size)
HRESULT WINAPI UrlApplySchemeA(const char *url, char *out, DWORD *out_len, DWORD flags)
BOOL WINAPI PathMatchSpecA(const char *path, const char *mask)
BOOL WINAPI PathIsSameRootW(const WCHAR *path1, const WCHAR *path2)
HRESULT WINAPI PathCchAppendEx(WCHAR *path1, SIZE_T size, const WCHAR *path2, DWORD flags)
void WINAPI PathRemoveExtensionW(WCHAR *path)
#define PATH_CHAR_CLASS_OTHER_VALID
void WINAPI PathRemoveBlanksW(WCHAR *path)
BOOL WINAPI PathIsUNCW(const WCHAR *path)
HRESULT WINAPI PathMatchSpecExA(const char *path, const char *mask, DWORD flags)
const WCHAR *WINAPI UrlGetLocationW(const WCHAR *url)
LPSTR WINAPI PathFindExtensionA(const char *path)
INT WINAPI UrlCompareW(const WCHAR *url1, const WCHAR *url2, BOOL ignore_slash)
BOOL WINAPI PathIsPrefixA(const char *prefix, const char *path)
HRESULT WINAPI PathMatchSpecExW(const WCHAR *path, const WCHAR *mask, DWORD flags)
BOOL WINAPI IsInternetESCEnabled(void)
HRESULT WINAPI UrlCombineW(const WCHAR *baseW, const WCHAR *relativeW, WCHAR *combined, DWORD *combined_len, DWORD flags)
HRESULT WINAPI PathCchFindExtension(const WCHAR *path, SIZE_T size, const WCHAR **extension)
HRESULT WINAPI UrlUnescapeW(WCHAR *url, WCHAR *unescaped, DWORD *unescaped_len, DWORD flags)
static WCHAR * heap_strdupAtoW(const char *str)
int WINAPI PathCommonPrefixA(const char *file1, const char *file2, char *path)
static BOOL is_prefixed_unc(const WCHAR *string)
void WINAPI PathRemoveBlanksA(char *path)
static const WCHAR * parse_url_element(const WCHAR *url, const WCHAR *separators)
void WINAPI PathUnquoteSpacesW(WCHAR *path)
int WINAPI PathGetDriveNumberW(const WCHAR *path)
#define PATH_CHAR_CLASS_SPACE
#define PATH_CHAR_CLASS_ASTERIX
void WINAPI PathQuoteSpacesA(char *path)
HRESULT WINAPI PathCchStripPrefix(WCHAR *path, SIZE_T size)
BOOL WINAPI PathRemoveFileSpecA(char *path)
WCHAR *WINAPI PathRemoveBackslashW(WCHAR *path)
BOOL WINAPI UrlIsNoHistoryA(const char *url)
HRESULT WINAPI PathCreateFromUrlW(const WCHAR *url, WCHAR *path, DWORD *pcchPath, DWORD dwReserved)
#define WINE_URL_ESCAPE_SLASH
const WCHAR * scheme_name
BOOL WINAPI PathIsUNCServerShareW(const WCHAR *path)
BOOL WINAPI PathIsUNCServerA(const char *path)
BOOL WINAPI PathIsFileSpecA(const char *path)
INT WINAPI UrlCompareA(const char *url1, const char *url2, BOOL ignore_slash)
WCHAR *WINAPI PathFindFileNameW(const WCHAR *path)
const char *WINAPI UrlGetLocationA(const char *url)
HRESULT WINAPI PathCchCombine(WCHAR *out, SIZE_T size, const WCHAR *path1, const WCHAR *path2)
BOOL WINAPI PathFileExistsA(const char *path)
static BOOL is_prefixed_volume(const WCHAR *string)
BOOL WINAPI UrlIsW(const WCHAR *url, URLIS Urlis)
UINT WINAPI PathGetCharTypeA(UCHAR ch)
BOOL WINAPI UrlIsOpaqueA(const char *url)
HRESULT WINAPI HashData(const unsigned char *src, DWORD src_len, unsigned char *dest, DWORD dest_len)
BOOL WINAPI PathRelativePathToA(char *path, const char *from, DWORD attributes_from, const char *to, DWORD attributes_to)
HRESULT WINAPI UrlFixupW(const WCHAR *url, WCHAR *translatedUrl, DWORD maxChars)
static BOOL is_prefixed_disk(const WCHAR *string)
HRESULT WINAPI PathCchAddBackslashEx(WCHAR *path, SIZE_T size, WCHAR **endptr, SIZE_T *remaining)
HRESULT WINAPI UrlCanonicalizeA(const char *src_url, char *canonicalized, DWORD *canonicalized_len, DWORD flags)
HRESULT WINAPI PathCreateFromUrlA(const char *pszUrl, char *pszPath, DWORD *pcchPath, DWORD dwReserved)
#define PATH_CHAR_CLASS_ANY
HRESULT WINAPI UrlCombineA(const char *base, const char *relative, char *combined, DWORD *combined_len, DWORD flags)
HRESULT WINAPI UrlEscapeW(const WCHAR *url, WCHAR *escaped, DWORD *escaped_len, DWORD flags)
HRESULT WINAPI PathCchAppend(WCHAR *path1, SIZE_T size, const WCHAR *path2)
static void append_string(struct string_buffer *buffer, const WCHAR *str, size_t len)
HRESULT WINAPI UrlGetPartW(const WCHAR *url, WCHAR *out, DWORD *out_len, DWORD part, DWORD flags)
static const DWORD path_charclass[]
static BOOL path_match_maskW(const WCHAR *name, const WCHAR *mask)
char *WINAPI PathFindNextComponentA(const char *path)
char *WINAPI PathGetArgsA(const char *path)
#define PATH_CHAR_CLASS_LETTER
BOOL WINAPI PathSearchAndQualifyA(const char *path, char *buffer, UINT length)
HRESULT WINAPI PathCchCanonicalizeEx(WCHAR *out, SIZE_T size, const WCHAR *in, DWORD flags)
static bool scheme_uses_hostname(URL_SCHEME scheme)
#define WINE_URL_ESCAPE_HASH
BOOL WINAPI UrlIsOpaqueW(const WCHAR *url)
void WINAPI PathStripPathA(char *path)
static bool scheme_is_always_relative(URL_SCHEME scheme, DWORD flags)
void WINAPI PathStripPathW(WCHAR *path)
static void parse_url(const WCHAR *url, struct parsed_url *pl)
HRESULT WINAPI PathCchStripToRoot(WCHAR *path, SIZE_T size)
static void append_char(struct string_buffer *buffer, WCHAR c)
BOOL WINAPI PathRemoveFileSpecW(WCHAR *path)
void WINAPI PathRemoveExtensionA(char *path)
static BOOL is_drive_spec(const WCHAR *str)
HRESULT WINAPI PathCchRemoveExtension(WCHAR *path, SIZE_T size)
LPWSTR WINAPI PathFindExtensionW(const WCHAR *path)
static HRESULT url_create_from_path(const WCHAR *path, WCHAR *url, DWORD *url_len)
char *WINAPI PathSkipRootA(const char *path)
BOOL WINAPI PathUnExpandEnvStringsW(const WCHAR *path, WCHAR *buffer, UINT buf_len)
static bool scheme_char_is_hostname_separator(URL_SCHEME scheme, DWORD flags, WCHAR c)
int WINAPI PathGetDriveNumberA(const char *path)
HRESULT WINAPI UrlUnescapeA(char *url, char *unescaped, DWORD *unescaped_len, DWORD flags)
HRESULT WINAPI UrlCanonicalizeW(const WCHAR *src_url, WCHAR *canonicalized, DWORD *canonicalized_len, DWORD flags)
#define PATH_CHAR_CLASS_SEMICOLON
HRESULT WINAPI PathCchRenameExtension(WCHAR *path, SIZE_T size, const WCHAR *extension)
BOOL WINAPI PathIsRelativeA(const char *path)
HRESULT WINAPI PathAllocCombine(const WCHAR *path1, const WCHAR *path2, DWORD flags, WCHAR **out)
BOOL WINAPI PathCchIsRoot(const WCHAR *path)
#define WINE_URL_STOP_ON_HASH
int WINAPI PathParseIconLocationA(char *path)
static DWORD get_scheme_code(const WCHAR *scheme, DWORD scheme_len)
void WINAPI PathUnquoteSpacesA(char *path)
static bool scheme_is_opaque(URL_SCHEME scheme)
#define PATH_CHAR_CLASS_COLON
BOOL WINAPI PathIsRelativeW(const WCHAR *path)
HRESULT WINAPI PathAllocCanonicalize(const WCHAR *path_in, DWORD flags, WCHAR **path_out)
int WINAPI PathParseIconLocationW(WCHAR *path)
static HRESULT url_apply_default_scheme(const WCHAR *url, WCHAR *out, DWORD *length)
BOOL WINAPI UrlIsA(const char *url, URLIS Urlis)
HRESULT WINAPI PathCchAddExtension(WCHAR *path, SIZE_T size, const WCHAR *extension)
static bool scheme_char_is_separator(URL_SCHEME scheme, WCHAR c)
#define WINE_URL_BASH_AS_SLASH
BOOL WINAPI PathSearchAndQualifyW(const WCHAR *path, WCHAR *buffer, UINT length)
static bool scheme_char_is_dot_separator(URL_SCHEME scheme, DWORD flags, WCHAR c)
HRESULT WINAPI PathCchCanonicalize(WCHAR *out, SIZE_T size, const WCHAR *in)
static BOOL url_needs_escape(WCHAR ch, DWORD flags, DWORD int_flags)
char *WINAPI PathRemoveBackslashA(char *path)
BOOL WINAPI PathStripToRootW(WCHAR *path)
static bool scheme_preserves_backslashes(URL_SCHEME scheme)
static const char hexDigits[]
BOOL WINAPI PathStripToRootA(char *path)
HRESULT WINAPI UrlHashW(const WCHAR *url, unsigned char *dest, DWORD dest_len)
BOOL WINAPI PathIsSameRootA(const char *path1, const char *path2)
BOOL WINAPI UrlIsNoHistoryW(const WCHAR *url)
static const struct @479 url_schemes[]
HRESULT WINAPI UrlApplySchemeW(const WCHAR *url, WCHAR *out, DWORD *length, DWORD flags)
BOOL WINAPI PathIsUNCServerW(const WCHAR *path)
static void init_envvars_map(struct envvars_map *map)
HRESULT WINAPI PathCreateFromUrlAlloc(const WCHAR *url, WCHAR **path, DWORD reserved)
BOOL WINAPI PathIsURLW(const WCHAR *path)
#define WINE_URL_COLLAPSE_SLASHES
BOOL WINAPI PathIsUNCEx(const WCHAR *path, const WCHAR **server)
BOOL WINAPI PathIsValidCharW(WCHAR c, DWORD class)
HRESULT WINAPI UrlGetPartA(const char *url, char *out, DWORD *out_len, DWORD part, DWORD flags)
BOOL WINAPI PathMatchSpecW(const WCHAR *path, const WCHAR *mask)
static void rewrite_url(struct string_buffer *dst, const WCHAR *url, DWORD *flags_ptr)
WCHAR *WINAPI PathGetArgsW(const WCHAR *path)
BOOL WINAPI PathIsLFNFileSpecA(const char *path)
UINT WINAPI PathGetCharTypeW(WCHAR ch)
static const WCHAR * get_root_end(const WCHAR *path)
BOOL WINAPI PathIsValidCharA(char c, DWORD class)
static bool is_slash(char c)
HRESULT WINAPI PathCchAddBackslash(WCHAR *path, SIZE_T size)
WCHAR *WINAPI PathSkipRootW(const WCHAR *path)
#define PATH_CHAR_CLASS_COMMA
static BOOL is_drive_specA(const char *str)
static BOOL is_escaped_drive_spec(const WCHAR *str)
BOOL WINAPI PathRelativePathToW(WCHAR *path, const WCHAR *from, DWORD attributes_from, const WCHAR *to, DWORD attributes_to)
HRESULT WINAPI PathCchRemoveBackslashEx(WCHAR *path, SIZE_T path_size, WCHAR **path_end, SIZE_T *free_size)
HRESULT WINAPI UrlEscapeA(const char *url, char *escaped, DWORD *escaped_len, DWORD flags)
BOOL WINAPI PathFileExistsW(const WCHAR *path)
static BOOL get_next_segment(const WCHAR *next, const WCHAR **next_segment)
BOOL WINAPI PathUnExpandEnvStringsA(const char *path, char *buffer, UINT buf_len)
#define PATH_CHAR_CLASS_INVALID
static HRESULT url_guess_scheme(const WCHAR *url, WCHAR *out, DWORD *out_len)
char *WINAPI PathFindFileNameA(const char *path)
static char get_slash_dir(URL_SCHEME scheme, DWORD flags, char src, const struct string_buffer *dst)
HRESULT WINAPI UrlCreateFromPathA(const char *path, char *url, DWORD *url_len, DWORD reserved)
BOOL WINAPI PathIsFileSpecW(const WCHAR *path)
HRESULT WINAPI PathCchRemoveBackslash(WCHAR *path, SIZE_T path_size)
BOOL WINAPI PathIsRootW(const WCHAR *path)
HRESULT WINAPI ParseURLA(const char *url, PARSEDURLA *result)
static const unsigned char hashdata_lookup[256]
HRESULT WINAPI PathCchSkipRoot(const WCHAR *path, const WCHAR **root_end)
BOOL WINAPI PathIsLFNFileSpecW(const WCHAR *path)
BOOL WINAPI PathIsPrefixW(const WCHAR *prefix, const WCHAR *path)
#define PATH_CHAR_CLASS_BACKSLASH
HRESULT WINAPI UrlHashA(const char *url, unsigned char *dest, DWORD dest_len)
#define PATH_CHAR_CLASS_DOT
WCHAR *WINAPI PathFindNextComponentW(const WCHAR *path)
BOOL WINAPI PathIsUNCA(const char *path)
BOOL WINAPI PathIsUNCServerShareA(const char *path)
#define WINE_URL_ESCAPE_QUESTION
HRESULT WINAPI PathCchCombineEx(WCHAR *out, SIZE_T size, const WCHAR *path1, const WCHAR *path2, DWORD flags)
BOOL WINAPI PathIsURLA(const char *path)
static const WCHAR * parse_scheme(const WCHAR *p)
void WINAPI PathQuoteSpacesW(WCHAR *path)
BOOL WINAPI ChrCmpIW(WCHAR ch1, WCHAR ch2)
BOOL WINAPI StrToIntExW(const WCHAR *str, DWORD flags, INT *ret)
LPSTR WINAPI CharNextA(const char *ptr)
WCHAR *WINAPI StrDupW(const WCHAR *str)
LPSTR WINAPI CharPrevA(const char *start, const char *ptr)
WCHAR *WINAPI StrCpyNW(WCHAR *dst, const WCHAR *src, int count)
_ACRTIMP wchar_t *__cdecl wcspbrk(const wchar_t *, const wchar_t *)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
_ACRTIMP wchar_t *__cdecl wcsstr(const wchar_t *, const wchar_t *)
_ACRTIMP size_t __cdecl wcsnlen(const wchar_t *, size_t)
_ACRTIMP int __cdecl wcsncmp(const wchar_t *, const wchar_t *, size_t)
_ACRTIMP __msvcrt_long __cdecl strtol(const char *, char **, int)
_ACRTIMP char *__cdecl strchr(const char *, int)
_ACRTIMP size_t __cdecl strlen(const char *)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
_ACRTIMP int __cdecl strncmp(const char *, const char *, size_t)
static wchar_t * wmemchr(const wchar_t *s, wchar_t c, size_t n)
static const WCHAR fileW[]
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei GLsizei * length
GLuint GLenum GLenum GLenum GLenum outW
GLenum const GLvoid * addr
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
#define WC_ERR_INVALID_CHARS
#define MB_ERR_INVALID_CHARS
#define URL_E_INVALID_SYNTAX
BOOL unescape(WCHAR *str, size_t *len)
INT WINAPI CompareStringOrdinal(const WCHAR *str1, INT len1, const WCHAR *str2, INT len2, BOOL ignore_case)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
static void append(struct dump_context *dc, const void *data, unsigned size)
#define memcpy(s1, s2, n)
#define memmove(s1, s2, n)
static LPWSTR PDWORD pcchPath
static const WCHAR pathW[]
static const LARGE_INTEGER *static const HANDLE const LARGE_INTEGER *static PSLIST_ENTRY PSLIST_ENTRY last
static unsigned(__cdecl *hash_bstr)(bstr_t s)
static const WCHAR url1[]
static const WCHAR url2[]
static const WCHAR path1[]
static const WCHAR path2[]
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeStringFromAsciiz(_Out_ PUNICODE_STRING Destination, _In_ PCSZ Source)
#define SEM_FAILCRITICALERRORS
_Use_decl_annotations_ NTSTATUS NTAPI RtlUnicodeToMultiByteN(_Out_ PCHAR MbString, _In_ ULONG MbSize, _Out_opt_ PULONG ResultSize, _In_ PCWCH UnicodeString, _In_ ULONG UnicodeSize)
WCHAR NTAPI RtlDowncaseUnicodeChar(_In_ WCHAR Source)
_Use_decl_annotations_ NTSTATUS NTAPI RtlUnicodeToMultiByteSize(_Out_ PULONG MbSize, _In_ PCWCH UnicodeString, _In_ ULONG UnicodeSize)
#define FILE_ATTRIBUTE_DIRECTORY
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
@ PATHCCH_ENSURE_TRAILING_SLASH
@ PATHCCH_FORCE_ENABLE_LONG_NAME_PROCESS
@ PATHCCH_ALLOW_LONG_PATHS
@ PATHCCH_DO_NOT_NORMALIZE_SEGMENTS
@ PATHCCH_FORCE_DISABLE_LONG_NAME_PROCESS
@ PATHCCH_ENSURE_IS_EXTENDED_LENGTH_PATH
#define PathAddExtensionA
#define PathCanonicalizeA
#define PathAddExtensionW
#define PathCanonicalizeW
#define PathAddBackslashA
#define PathRenameExtensionA
#define PathRenameExtensionW
#define PathAddBackslashW
#define URL_ESCAPE_UNSAFE
#define URL_WININET_COMPATIBILITY
#define URL_DONT_ESCAPE_EXTRA_INFO
#define URL_UNESCAPE_AS_UTF8
#define URL_APPLY_FORCEAPPLY
#define URL_ESCAPE_AS_UTF8
#define URL_APPLY_GUESSSCHEME
#define URL_APPLY_DEFAULT
#define URL_PLUGGABLE_PROTOCOL
#define URL_ESCAPE_SPACES_ONLY
#define URL_ESCAPE_SEGMENT_ONLY
#define URL_DONT_SIMPLIFY
#define URL_UNESCAPE_INPLACE
#define URL_FILE_USE_PATHURL
#define URL_DONT_UNESCAPE_EXTRA_INFO
#define URL_PARTFLAG_KEEPSCHEME
#define URL_APPLY_GUESSFILE
#define URL_ESCAPE_PERCENT
for(i=0;i< sizeof(testsuite)/sizeof(testsuite[0]);++i) ok(call_test(testsuite[i].func)
static unsigned __int64 next
const char int int int static __inline const char * wine_dbgstr_a(const char *s)
wchar_t const *const size_t const buffer_size
STRSAFEAPI StringCchLengthW(STRSAFE_LPCWSTR psz, size_t cchMax, size_t *pcchLength)
#define STRSAFE_E_INSUFFICIENT_BUFFER
Character const *const prefix
#define RtlMoveMemory(Destination, Source, Length)
#define INVALID_FILE_ATTRIBUTES
static rfbScreenInfoPtr server
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
#define ERROR_FILENAME_EXCED_RANGE
#define INTERNET_MAX_URL_LENGTH
#define INTERNET_MAX_SCHEME_LENGTH
#define HKEY_LOCAL_MACHINE