61#if (_WIN32_WINNT < _WIN32_WINNT_VISTA) || (DLL_EXPORT_VERSION < _WIN32_WINNT_VISTA)
63static inline size_t compat_wcsnlen(
const wchar_t*
str,
size_t size)
68#define wcsnlen compat_wcsnlen
96 0x01, 0x0e, 0x6e, 0x19, 0x61, 0xae, 0x84, 0x77, 0x8a, 0xaa, 0x7d, 0x76, 0x1b, 0xe9, 0x8c, 0x33,
97 0x57, 0xc5, 0xb1, 0x6b, 0xea, 0xa9, 0x38, 0x44, 0x1e, 0x07, 0xad, 0x49, 0xbc, 0x28, 0x24, 0x41,
98 0x31, 0xd5, 0x68, 0xbe, 0x39, 0xd3, 0x94, 0xdf, 0x30, 0x73, 0x0f, 0x02, 0x43, 0xba, 0xd2, 0x1c,
99 0x0c, 0xb5, 0x67, 0x46, 0x16, 0x3a, 0x4b, 0x4e, 0xb7, 0xa7, 0xee, 0x9d, 0x7c, 0x93, 0xac, 0x90,
100 0xb0, 0xa1, 0x8d, 0x56, 0x3c, 0x42, 0x80, 0x53, 0x9c, 0xf1, 0x4f, 0x2e, 0xa8, 0xc6, 0x29, 0xfe,
101 0xb2, 0x55, 0xfd, 0xed, 0xfa, 0x9a, 0x85, 0x58, 0x23, 0xce, 0x5f, 0x74, 0xfc, 0xc0, 0x36, 0xdd,
102 0x66, 0xda, 0xff, 0xf0, 0x52, 0x6a, 0x9e, 0xc9, 0x3d, 0x03, 0x59, 0x09, 0x2a, 0x9b, 0x9f, 0x5d,
103 0xa6, 0x50, 0x32, 0x22, 0xaf, 0xc3, 0x64, 0x63, 0x1a, 0x96, 0x10, 0x91, 0x04, 0x21, 0x08, 0xbd,
104 0x79, 0x40, 0x4d, 0x48, 0xd0, 0xf5, 0x82, 0x7a, 0x8f, 0x37, 0x69, 0x86, 0x1d, 0xa4, 0xb9, 0xc2,
105 0xc1, 0xef, 0x65, 0xf2, 0x05, 0xab, 0x7e, 0x0b, 0x4a, 0x3b, 0x89, 0xe4, 0x6c, 0xbf, 0xe8, 0x8b,
106 0x06, 0x18, 0x51, 0x14, 0x7f, 0x11, 0x5b, 0x5c, 0xfb, 0x97, 0xe1, 0xcf, 0x15, 0x62, 0x71, 0x70,
107 0x54, 0xe2, 0x12, 0xd6, 0xc7, 0xbb, 0x0d, 0x20, 0x5e, 0xdc, 0xe0, 0xd4, 0xf7, 0xcc, 0xc4, 0x2b,
108 0xf9, 0xec, 0x2d, 0xf4, 0x6f, 0xb6, 0x99, 0x88, 0x81, 0x5a, 0xd9, 0xca, 0x13, 0xa5, 0xe7, 0x47,
109 0xe6, 0x8e, 0x60, 0xe3, 0x3e, 0xb3, 0xf6, 0x72, 0xa2, 0x35, 0xa0, 0xd7, 0xcd, 0xb4, 0x2f, 0x6d,
110 0x2c, 0x26, 0x1f, 0x95, 0x87, 0x00, 0xd8, 0x34, 0x3f, 0x17, 0x25, 0x45, 0x27, 0x75, 0x92, 0xb8,
111 0xa3, 0xc8, 0xde, 0xeb, 0xf8, 0xf3, 0xdb, 0x0a, 0x98, 0x83, 0x7b, 0xe5, 0xcb, 0x4c, 0x78, 0xd1,
149 unsigned int new_capacity, max_capacity;
152 if (
count <= *capacity)
156 if (
count > max_capacity)
159 new_capacity =
max(4, *capacity);
160 while (new_capacity <
count && new_capacity <= max_capacity / 2)
162 if (new_capacity <
count)
163 new_capacity = max_capacity;
168 *elements = new_elements;
169 *capacity = new_capacity;
176 return c ==
'/' ||
c ==
'\\';
191#ifndef STATIC_PATHCCH
200 return !
wcsnicmp(
string,
L"\\\\?\\UNC\\", 8 );
250 *next_segment =
next + 1;
255 *next_segment =
next;
271 else if (
path[0] ==
'\\' &&
path[1] ==
'\\')
274 else if (
path[0] ==
'\\')
287 const WCHAR *root_end;
292 if (!path_in || !path_out
298 if (path_out) *path_out =
NULL;
326 if (root_end) root_end =
buffer + (root_end - path_in);
370 if (
dst >
buffer &&
dst[-1] ==
'\\' && (!root_end ||
dst - 1 > root_end))
386 else if (
src[2] ==
'\\')
403 else if (
src[1] ==
'\\')
416 if (
src[0] ==
'\\')
src++;
472 SIZE_T combined_length, length2;
473 WCHAR *combined_path;
535 BOOL needs_termination;
545 if (endptr) *endptr =
NULL;
546 if (remaining) *remaining = 0;
550 if (!needs_termination)
584 has_dot = extension[0] ==
'.';
588 if (*existing_extension)
return S_FALSE;
591 dot_length = has_dot ? 0 : 1;
592 extension_length =
lstrlenW(extension);
597 if (!extension[0] || (extension[0] ==
'.' && !extension[1]))
return S_OK;
747 else if (*
path ==
'.')
759 *extension = lastpoint ? lastpoint :
path;
765 const WCHAR *root_end;
774 if (!root_end)
return FALSE;
780 if ((is_unc && !*
next) || (!is_unc && !*
next))
return TRUE;
794 else if (*root_end ==
'\\' && !root_end[1])
812 const WCHAR *root_end;
817 if (!path_size || !path_end || !free_size)
819 if (path_end) *path_end =
NULL;
820 if (free_size) *free_size = 0;
851 const WCHAR *extension;
923 else if (
path[0] ==
'\\' &&
path[1] ==
'\\' &&
path[2] !=
'?')
961 const WCHAR *root_end;
970 if (root_end && root_end >
path && root_end[-1] ==
'\\'
975 segment_end =
path + (root_end -
path);
976 if (!*segment_end)
return S_FALSE;
996 else if (
path[0] ==
'\\' &&
path[1] ==
'\\' &&
path[2] !=
'?')
1003#ifndef STATIC_PATHCCH
1119 root_end =
path + 2;
1120 if (*root_end ==
'\\') ++root_end;
1125 if (*root_end ==
'\\') ++root_end;
1126 if (root_end[1] !=
'?')
1128 if (*root_end ==
'\\') ++root_end;
1130 if (*root_end ==
'\\' && root_end[1] && root_end[1] !=
'\\') ++root_end;
1134 if (
ptr &&
ptr != root_end)
1136 if (
ptr[-1] ==
'\\') --
ptr;
1140 if (!*root_end)
return FALSE;
1160 if (*root_end ==
'\\') ++root_end;
1161 if (root_end[1] !=
'?')
1163 if (*root_end ==
'\\') ++root_end;
1165 if (*root_end ==
'\\' && root_end[1] && root_end[1] !=
'\\') ++root_end;
1168 else if (*root_end ==
'\\') ++root_end;
1170 if (
ptr &&
ptr != root_end)
1172 if (
ptr[-1] ==
'\\') --
ptr;
1176 if (!*root_end)
return FALSE;
1243 if (
path[-1] !=
'\\')
1255 const char *lastpoint =
NULL;
1265 else if (*
path ==
'.')
1271 return (
LPSTR)(lastpoint ? lastpoint :
path);
1286 else if (*
path ==
'.')
1292 return (
LPWSTR)(lastpoint ? lastpoint :
path);
1357 else if (*
src &&
src[1] ==
':')
1572 const char *iter1 = file1;
1573 const char *iter2 = file2;
1574 unsigned int len = 0;
1581 if (!file1 || !file2)
1598 if ((!*iter1 || *iter1 ==
'\\') && (!*iter2 || *iter2 ==
'\\'))
1599 len = iter1 - file1;
1622 const WCHAR *iter1 = file1;
1623 const WCHAR *iter2 = file2;
1624 unsigned int len = 0;
1631 if (!file1 || !file2)
1648 if ((!*iter1 || *iter1 ==
'\\') && (!*iter2 || *iter2 ==
'\\'))
1649 len = iter1 - file1;
1686 const char *last_slash =
path;
1694 last_slash =
path + 1;
1698 return (
char *)last_slash;
1711 last_slash =
path + 1;
1715 return (
WCHAR *)last_slash;
1729 if (*
path ==
' ' && !seen_quote)
1730 return (
char *)
path + 1;
1733 seen_quote = !seen_quote;
1737 return (
char *)
path;
1751 if (*
path ==
' ' && !seen_quote)
1755 seen_quote = !seen_quote;
1768 if (!ch || ch <
' ' || ch ==
'<' || ch ==
'>' || ch ==
'"' || ch ==
'|' || ch ==
'/')
1770 else if (ch ==
'*' || ch ==
'?')
1772 else if (ch ==
'\\' || ch ==
':')
1778 if (((ch & 0x1) && ch !=
';') || !ch ||
iswalnum(ch) || ch ==
'$' || ch ==
'&' || ch ==
'(' ||
1779 ch ==
'.' || ch ==
'@' || ch ==
'^' || ch ==
'\'' || ch ==
'`')
1819 if (!
path[0] ||
path[1] !=
':')
return -1;
1820 if (
path[0] >=
'A' &&
path[0] <=
'Z')
return path[0] -
'A';
1821 if (
path[0] >=
'a' &&
path[0] <=
'z')
return path[0] -
'a';
1897 while (*
path ==
' ')
1904 while (
start[-1] ==
' ')
1921 while (*
path ==
' ')
1928 while (
start[-1] ==
' ')
2059 unsigned int name_len = 0, ext_len = 0;
2096 unsigned int name_len = 0, ext_len = 0;
2131#define PATH_CHAR_CLASS_LETTER 0x00000001
2132#define PATH_CHAR_CLASS_ASTERIX 0x00000002
2133#define PATH_CHAR_CLASS_DOT 0x00000004
2134#define PATH_CHAR_CLASS_BACKSLASH 0x00000008
2135#define PATH_CHAR_CLASS_COLON 0x00000010
2136#define PATH_CHAR_CLASS_SEMICOLON 0x00000020
2137#define PATH_CHAR_CLASS_COMMA 0x00000040
2138#define PATH_CHAR_CLASS_SPACE 0x00000080
2139#define PATH_CHAR_CLASS_OTHER_VALID 0x00000100
2140#define PATH_CHAR_CLASS_DOUBLEQUOTE 0x00000200
2142#define PATH_CHAR_CLASS_INVALID 0x00000000
2143#define PATH_CHAR_CLASS_ANY 0xffffffff
2215 if ((
unsigned)
c > 0x7e)
2240 if (slash[1] ==
'\\')
2259 if (slash[1] ==
'\\')
2274 if (*
path ==
'\\' &&
path[1] ==
'\\')
2280 return (
char *)
path;
2288 return (
char *)
path + 3;
2300 if (*
path ==
'\\' &&
path[1] ==
'\\')
2358 DWORD attributes_to)
2377 DWORD attributes_to)
2437 WCHAR *pathW, *maskW;
2484 while (*
mask ==
'*')
2505 while (*
mask ==
' ')
2674 if (!pathW)
return FALSE;
2681 if (buf_len <
len + 1)
return FALSE;
2700 if (
map->len)
map->len--;
2711 {
L"%ALLUSERSPROFILE%" },
2713 {
L"%ProgramFiles%" },
2714 {
L"%SystemRoot%" },
2715 {
L"%SystemDrive%" },
2716 {
L"%USERPROFILE%" },
2730 if (
cur->len == 0 ||
cur->len > pathlen ||
2743 if (
match->len == 0 || needed > buf_len)
return FALSE;
2781 while (*
p <= 0x7f && (
iswalnum( *
p ) || *
p ==
'+' || *
p ==
'-' || *
p ==
'.'))
2883 stop_unescaping =
TRUE;
2915 *unescaped_len = needed;
2927 else if ((
code & 0xe0) == 0xc0)
2929 else if ((
code & 0xf0) == 0xe0)
2931 else if ((
code & 0xf8) == 0xf0)
2940 int utf8_len, utf16_len,
i;
2964 stop_unescaping =
TRUE;
2981 for (
i = 1;
i < utf8_len && *(
src + 1) ==
'%' && *(
src + 2) && *(
src + 3);
i++)
2986 if ((ih & 0xc0) == 0x80)
2996 utf8_buf,
i, utf16_buf,
ARRAYSIZE(utf16_buf));
2998 needed += utf16_len - 1;
3012 memcpy(
dst, utf16_buf, utf16_len *
sizeof(*utf16_buf));
3032 *unescaped_len = needed;
3043 WCHAR *pathW = bufW;
3092 while (*
src ==
'/' || *
src ==
'\\')
3143 while (*
src && *
src !=
'/' && *
src !=
'\\')
3172 if (*
dst ==
'/') *
dst =
'\\';
3254#define WINE_URL_BASH_AS_SLASH 0x01
3255#define WINE_URL_COLLAPSE_SLASHES 0x02
3256#define WINE_URL_ESCAPE_SLASH 0x04
3257#define WINE_URL_ESCAPE_HASH 0x08
3258#define WINE_URL_ESCAPE_QUESTION 0x10
3259#define WINE_URL_STOP_ON_HASH 0x20
3260#define WINE_URL_STOP_ON_QUESTION 0x40
3273 if (ch <= 31 || (ch >= 127 && ch <= 255) )
3308 WCHAR *escapedW = bufW;
3313 if (!escaped || !escaped_len || !*escaped_len)
3334 if (*escaped_len > lenA)
3338 *escaped_len = lenA;
3342 *escaped_len = lenA + 1;
3346 if (escapedW != bufW)
3354 DWORD needed = 0, slashes = 0, int_flags;
3364 if (!
url || !escaped_len || !escaped || *escaped_len == 0)
3370 FIXME(
"Unimplemented flags: %08lx\n",
flags);
3402 int_flags &= ~WINE_URL_STOP_ON_HASH;
3435 while (
cur ==
'/' ||
cur ==
'\\')
3441 if(
src[9] ==
'/' ||
src[9] ==
'\\')
src += 10;
3464 stop_escaping =
TRUE;
3467 stop_escaping =
TRUE;
3477 if ((
cur >= 0xd800 &&
cur <= 0xdfff) && (
src[1] >= 0xdc00 &&
src[1] <= 0xdfff))
3493 for (
i = 0;
i <
len; ++
i)
3517 if (needed +
len <= *escaped_len)
3525 if (needed < *escaped_len)
3528 memcpy(escaped, dst_ptr, (needed+1)*
sizeof(
WCHAR));
3536 *escaped_len = needed;
3549 if (!src_url || !canonicalized || !canonicalized_len || !*canonicalized_len)
3554 if (!
url || !canonical)
3736 bool is_relative =
false, has_hostname =
false, has_initial_slash =
false;
3739 size_t query_len = 0, hash_len = 0;
3740 const WCHAR *scheme_end, *src_end;
3742 size_t hostname_len = 0;
3750 if (*scheme_end ==
':' && scheme_end >=
url + 2)
3752 size_t scheme_len = scheme_end + 1 -
url;
3756 for (
size_t i = 0;
i < scheme_len; ++
i)
3759 else if (
url[0] ==
'\\' &&
url[1] ==
'\\')
3766 has_hostname =
true;
3777 has_hostname =
true;
3783 while (*
src && *
src !=
'/')
3812 has_hostname =
true;
3813 has_initial_slash =
true;
3817 has_initial_slash =
true;
3836 has_hostname =
true;
3847 has_hostname =
true;
3866 bool is_drive =
false;
3940 for (
size_t i = 0;
i < hostname_len; ++
i)
3948 if (*
src ==
'/' || *
src ==
'\\')
3971 root_offset =
dst->len;
4037 while (
src < src_end)
4039 bool is_dots =
false;
4056 if (*
src ==
'/' || *
src ==
'\\')
4077 if (*
src ==
'/' || *
src ==
'\\')
4081 root_offset =
dst->len;
4086 if (
dst->len > root_offset)
4093 if (*
src ==
'/' || *
src ==
'\\')
4106 if (*
src ==
'?' || *
src ==
'#' || !*
src)
4122 if (!
dst->len && src_end !=
url)
4163 if (!src_url || !canonicalized || !canonicalized_len || !*canonicalized_len)
4174 flags &= ~URL_WININET_COMPATIBILITY;
4178 while (*
src > 0 && *
src <= 0x20)
4188 for (
size_t i = 0;
i <
len; ++
i)
4190 if (
src[
i] !=
'\t' &&
src[
i] !=
'\n' &&
src[
i] !=
'\r')
4216 if (rewritten.
len <= *canonicalized_len)
4219 *canonicalized_len = rewritten.
len - 1;
4224 *canonicalized_len = rewritten.
len;
4245 if (!
url || !
out || !out_len)
4280 DWORD value_len, data_len, dwType,
i;
4287 "Software\\Microsoft\\Windows\\CurrentVersion\\URL\\Prefixes", -1, reg_path,
MAX_PATH);
4290 while (value_len = data_len =
MAX_PATH,
4296 for (
i = 0;
i < value_len; ++
i)
4304 if ((
i == value_len) && !
j)
4338 if (needed >= *url_len)
4340 *url_len = needed + 1;
4362 DWORD data_len, dwType;
4369 data_len =
sizeof(
data);
4413 in_scheme.
cbSize =
sizeof(in_scheme);
4442 if (
url1[len1-1] ==
'/') len1--;
4444 if (
url2[len2-1] ==
'/') len2--;
4450 if (len1 > len2)
return 1;
4456 size_t len, len1, len2;
4462 if (
url1[len1-1] ==
'/') len1--;
4464 if (
url2[len2-1] ==
'/') len2--;
4470 if (len1 > len2)
return 1;
4486 lstrcpynW(translatedUrl,
url, (maxChars < srcLen) ? maxChars : srcLen);
4527 if (!
url || !
out || !out_len || !*out_len)
4544 if (len2 > *out_len)
4551 *out_len = len2 - 1;
4570 memset(pl, 0,
sizeof(*pl));
4573 if (work <
url + 2 || *work !=
':')
return;
4608 else if (*work ==
'@')
4639 pl->
port = work + 1;
4658 TRACE(
"%s, %p, %p(%ld), %#lx, %#lx\n",
wine_dbgstr_w(
url),
out, out_len, *out_len, part,
flags);
4660 if (!
url || !
out || !out_len || !*out_len)
4690 flags &= ~URL_PARTFLAG_KEEPSCHEME;
4722 flags &= ~URL_PARTFLAG_KEEPSCHEME;
4737 if (*out_len < schsize +
size + 2)
4739 *out_len = schsize +
size + 2;
4746 *out_len = schsize + 1 +
size;
4750 if (*out_len <
size + 1)
4752 *out_len =
size + 1;
4827 switch (
base.nScheme)
4898 if (*url_len > lenA)
4906 *url_len = lenA + 1;
4940 if (!
base || !relative || !combined_len)
4949 len = *combined_len;
4954 *combined_len =
len;
4960 if (len2 > *combined_len)
4962 *combined_len = len2;
4967 *combined_len = len2;
4974 DWORD i,
len, process_case = 0, myflags, sizeloc = 0;
4975 LPWSTR work, preliminary, mbase, canonicalized;
4981 if (!
baseW || !relativeW || !combined_len)
4985 relative.
cbSize =
sizeof(relative);
4991 *preliminary =
'\0';
5002 TRACE(
"no scheme detected in Base\n");
5023 base.cchProtocol += delta;
5024 base.pszSuffix += delta;
5025 base.cchSuffix -= delta;
5040 while (*work && (*work !=
'/')) work++;
5041 sizeloc = (
DWORD)(work -
base.pszSuffix);
5055 manual_search =
TRUE;
5056 else if (work -
base.pszSuffix > 4)
5061 if (!manual_search && work -
base.pszSuffix > 5)
5070 while (*work !=
'/' && work >
base.pszSuffix + sizeloc)
5072 base.cchSuffix = work -
base.pszSuffix + 1;
5084 base.cchSuffix = sizeloc;
5099 TRACE(
"no scheme detected in Relative\n");
5102 if (*relativeW ==
':')
5120 if ((relativeW[0] ==
'/' || relativeW[0] ==
'\\') &&
5121 (relativeW[1] ==
'/' || relativeW[1] ==
'\\'))
5127 if (*relativeW ==
'/' || *relativeW ==
'\\')
5133 if (*relativeW ==
'#')
5139 preliminary[work-
base.pszProtocol] =
'\0';
5171 process_case = (*
base.pszSuffix ==
'/') ? 5 : 1;
5186 switch (process_case)
5201 work = preliminary +
base.cchProtocol + 1;
5208 work = preliminary +
base.cchProtocol + 1 + sizeloc;
5217 work = preliminary +
base.cchProtocol + 1 +
base.cchSuffix - 1;
5224 FIXME(
"Unexpected case %ld.\n", process_case);
5230 if (*combined_len == 0)
5234 lstrcpyW( combined, canonicalized );
5236 TRACE(
"return-%ld len=%ld, %s\n", process_case, *combined_len,
debugstr_w(combined));
5245 INT src_count = src_len - 1, dest_count = dest_len - 1;
5250 while (dest_count >= 0)
5252 dest[dest_count] = (dest_count & 0xff);
5256 while (src_count >= 0)
5258 dest_count = dest_len - 1;
5259 while (dest_count >= 0)
static WCHAR baseW[MAX_PATH]
int strcmp(const char *String1, const char *String2)
ACPI_SIZE strlen(const char *String)
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
char * strchr(const char *String, int ch)
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 DECLSPEC_HOTPATCH CompareStringOrdinal(const WCHAR *str1, INT len1, const WCHAR *str2, INT len2, BOOL ignore_case)
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)
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)
static const struct @526 url_schemes[]
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)
static const WCHAR fileW[]
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
#define INTERNET_MAX_URL_LENGTH
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
_Check_return_ _CRTIMP int __cdecl isalnum(_In_ int _C)
_CONST_RETURN wchar_t *__cdecl wmemchr(_In_reads_(_N) const wchar_t *_S, _In_ wchar_t _C, _In_ size_t _N)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
#define URL_E_INVALID_SYNTAX
BOOL unescape(WCHAR *str, size_t *len)
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 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
static unsigned __int64 next
_Check_return_ long __cdecl strtol(_In_z_ const char *_Str, _Out_opt_ _Deref_post_z_ char **_EndPtr, _In_ int _Radix)
_Check_return_ _CRTIMP _CONST_RETURN wchar_t *__cdecl wcspbrk(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_Control)
_Check_return_ _CRTIMP int __cdecl wcsncmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
const char int int int static __inline const char * wine_dbgstr_a(const char *s)
#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
wchar_t const *const size_t const buffer_size
size_t __cdecl wcsnlen(wchar_t const *const string, size_t const maximum_count)
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_SCHEME_LENGTH
#define HKEY_LOCAL_MACHINE