50 {
"file:c:/foo/bar",
"c:\\foo\\bar",
S_OK, 0},
51 {
"file:c|/foo/bar",
"c:\\foo\\bar",
S_OK, 0},
52 {
"file:cx|/foo/bar",
"cx|\\foo\\bar",
S_OK, 0},
53 {
"file:c:foo/bar",
"c:foo\\bar",
S_OK, 0},
54 {
"file:c|foo/bar",
"c:foo\\bar",
S_OK, 0},
55 {
"file:c:/foo%20ba%2fr",
"c:\\foo ba/r",
S_OK, 0},
56 {
"file:foo%20ba%2fr",
"foo ba/r",
S_OK, 0},
57 {
"file:foo/bar/",
"foo\\bar\\",
S_OK, 0},
60 {
"file:/c:/foo/bar",
"c:\\foo\\bar",
S_OK, 0},
61 {
"file:\\c:/foo/bar",
"c:\\foo\\bar",
S_OK, 0},
62 {
"file:/c|/foo/bar",
"c:\\foo\\bar",
S_OK, 0},
63 {
"file:/cx|/foo/bar",
"\\cx|\\foo\\bar",
S_OK, 0},
64 {
"file:/c:foo/bar",
"c:foo\\bar",
S_OK, 0},
65 {
"file:/c|foo/bar",
"c:foo\\bar",
S_OK, 0},
66 {
"file:/c:/foo%20ba%2fr",
"c:\\foo ba/r",
S_OK, 0},
67 {
"file:/foo%20ba%2fr",
"\\foo ba/r",
S_OK, 0},
68 {
"file:/foo/bar/",
"\\foo\\bar\\",
S_OK, 0},
71 {
"file://c:/foo/bar",
"c:\\foo\\bar",
S_OK, 0},
72 {
"file://c:/d:/foo/bar",
"c:\\d:\\foo\\bar",
S_OK, 0},
73 {
"file://c|/d|/foo/bar",
"c:\\d|\\foo\\bar",
S_OK, 0},
74 {
"file://cx|/foo/bar",
"\\\\cx|\\foo\\bar",
S_OK, 0},
75 {
"file://c:foo/bar",
"c:foo\\bar",
S_OK, 0},
76 {
"file://c|foo/bar",
"c:foo\\bar",
S_OK, 0},
77 {
"file://c:/foo%20ba%2fr",
"c:\\foo%20ba%2fr",
S_OK, 0},
78 {
"file://c%3a/foo/../bar",
"\\\\c:\\foo\\..\\bar",
S_OK, 0},
79 {
"file://c%7c/foo/../bar",
"\\\\c|\\foo\\..\\bar",
S_OK, 0},
80 {
"file://foo%20ba%2fr",
"\\\\foo ba/r",
S_OK, 0},
81 {
"file://localhost/c:/foo/bar",
"c:\\foo\\bar",
S_OK, 0},
82 {
"file://localhost/c:/foo%20ba%5Cr",
"c:\\foo ba\\r",
S_OK, 0},
83 {
"file://LocalHost/c:/foo/bar",
"c:\\foo\\bar",
S_OK, 0},
84 {
"file:\\\\localhost\\c:\\foo\\bar",
"c:\\foo\\bar",
S_OK, 0},
85 {
"file://incomplete",
"\\\\incomplete",
S_OK, 0},
88 {
"file:///c:/foo/bar",
"c:\\foo\\bar",
S_OK, 0},
89 {
"File:///c:/foo/bar",
"c:\\foo\\bar",
S_OK, 0},
90 {
"file:///c:/foo%20ba%2fr",
"c:\\foo ba/r",
S_OK, 0},
91 {
"file:///foo%20ba%2fr",
"\\foo ba/r",
S_OK, 0},
92 {
"file:///foo/bar/",
"\\foo\\bar\\",
S_OK, 0},
93 {
"file:///localhost/c:/foo/bar",
"\\localhost\\c:\\foo\\bar",
S_OK, 0},
96 {
"file:////c:/foo/bar",
"c:\\foo\\bar",
S_OK, 0},
97 {
"file:////c:/foo%20ba%2fr",
"c:\\foo%20ba%2fr",
S_OK, 0},
98 {
"file:////foo%20ba%2fr",
"\\\\foo%20ba%2fr",
S_OK, 0},
101 {
"file://///c:/foo/bar",
"\\\\c:\\foo\\bar",
S_OK, 0},
102 {
"file://///c:/foo%20ba%2fr",
"\\\\c:\\foo ba/r",
S_OK, 0},
103 {
"file://///foo%20ba%2fr",
"\\\\foo ba/r",
S_OK, 0},
104 {
"file://////c:/foo/bar",
"\\\\c:\\foo\\bar",
S_OK, 0},
107 {
"file:%2f%2flocalhost%2fc:/foo/bar",
"//localhost/c:\\foo\\bar",
S_OK, 0},
108 {
"file:%5C%5Clocalhost%5Cc:/foo/bar",
"\\\\localhost\\c:\\foo\\bar",
S_OK, 0},
111 {
"file://l%6fcalhost/c:/foo/bar",
"\\\\localhostc:\\foo\\bar",
S_OK, 0},
112 {
"file://localhost:80/c:/foo/bar",
"\\\\localhost:80c:\\foo\\bar",
S_OK, 0},
113 {
"file://host/c:/foo/bar",
"\\\\hostc:\\foo\\bar",
S_OK, 0},
114 {
"file://host//c:/foo/bar",
"\\\\host\\\\c:\\foo\\bar",
S_OK, 0},
115 {
"file://host/\\c:/foo/bar",
"\\\\host\\\\c:\\foo\\bar",
S_OK, 0},
116 {
"file://host/c:foo/bar",
"\\\\hostc:foo\\bar",
S_OK, 0},
117 {
"file://host/foo/bar",
"\\\\host\\foo\\bar",
S_OK, 0},
118 {
"file:\\\\host\\c:\\foo\\bar",
"\\\\hostc:\\foo\\bar",
S_OK, 0},
119 {
"file:\\\\host\\ca\\foo\\bar",
"\\\\host\\ca\\foo\\bar",
S_OK, 0},
120 {
"file:\\\\host\\c|\\foo\\bar",
"\\\\hostc|\\foo\\bar",
S_OK, 0},
121 {
"file:\\%5Chost\\c:\\foo\\bar",
"\\\\host\\c:\\foo\\bar",
S_OK, 0},
122 {
"file:\\\\host\\cx:\\foo\\bar",
"\\\\host\\cx:\\foo\\bar",
S_OK, 0},
123 {
"file:///host/c:/foo/bar",
"\\host\\c:\\foo\\bar",
S_OK, 0},
137 {
"http://foo/bar",
TRUE},
138 {
"c:\\foo\\bar",
FALSE},
139 {
"c:/foo/bar",
FALSE},
140 {
"foo://foo/bar",
TRUE},
143 {
"bogusscheme:",
TRUE},
144 {
"http:partial",
TRUE},
145 {
"www.winehq.org",
FALSE},
147 {
"winehq.org",
FALSE},
148 {
"ftp.winehq.org",
FALSE},
149 {
"http://winehq.org",
TRUE},
150 {
"http://www.winehq.org",
TRUE},
151 {
"https://winehq.org",
TRUE},
152 {
"https://www.winehq.org",
TRUE},
153 {
"ftp://winehq.org",
TRUE},
154 {
"ftp://ftp.winehq.org",
TRUE},
155 {
"file://does_not_exist.txt",
TRUE},
156 {
"about:blank",
TRUE},
157 {
"about:home",
TRUE},
158 {
"about:mozilla",
TRUE},
160 {
"HTTP://www.winehq.org",
TRUE},
162 {
" http://www.winehq.org",
FALSE},
171 {
"abcdef",
"abcdef" },
172 {
"\"abcdef\"",
"abcdef" },
173 {
"\"abcdef",
"\"abcdef" },
174 {
"abcdef\"",
"abcdef\"" },
175 {
"\"\"abcdef\"\"",
"\"abcdef\"" },
176 {
"abc\"def",
"abc\"def" },
177 {
"\"abc\"def",
"\"abc\"def" },
178 {
"\"abc\"def\"",
"abc\"def" },
179 {
"\'abcdef\'",
"\'abcdef\'" },
219 WCHAR expect1[] = {
'c',
':',
'\\',
'f',
'o',
'o',0};
221 WCHAR c_drive[] = {
'c',
':',0};
224 WCHAR winini[] = {
'w',
'i',
'n',
'.',
'i',
'n',
'i',0};
227 WCHAR dot[] = {
'.',0};
231 "PathSearchAndQualify rets 0\n");
236 "PathSearchAndQualify rets 0\n");
244 "PathSearchAndQualify rets 0\n");
252 "PathSearchAndQualify rets 0\n");
259 "PathSearchAndQualify rets 0\n");
274 if (!pPathCreateFromUrlA) {
275 win_skip(
"PathCreateFromUrlA not found\n");
281 ret = pPathCreateFromUrlA(
"file://foo",
NULL, &
len, 0);
283 ok(
len == 0xdeca,
"got %x expected 0xdeca\n",
len);
300 if (pPathCreateFromUrlW) {
304 ret = pPathCreateFromUrlW(urlW, ret_pathW, &
len, 0);
310 ok(!
lstrcmpiW(ret_pathW, pathW),
"got %s expected %s from url L\"%s\"\n",
315 ok(!
lstrcmpiW(ret_pathW, pathW),
"got %s expected %s from url L\"%s\"\n",
323 ret = pPathCreateFromUrlW(urlW, ret_pathW, &len2, 0);
334 if (pPathCreateFromUrlAlloc)
336 static const WCHAR fileW[] = {
'f',
'i',
'l',
'e',
':',
'/',
'/',
'f',
'o',
'o',0};
337 static const WCHAR fooW[] = {
'\\',
'\\',
'f',
'o',
'o',0};
340 ret = pPathCreateFromUrlAlloc(
fileW, &pathW, 0);
363 0x00000000, 0x00000000, 0x00000000, 0x00000000,
364 0x00000000, 0x00000000, 0x00000000, 0x00000000,
365 0x00000000, 0x00000000, 0x00000000, 0x00000000,
366 0x00000000, 0x00000000, 0x00000000, 0x00000000,
367 0x00000000, 0x00000000, 0x00000000, 0x00000000,
368 0x00000000, 0x00000000, 0x00000000, 0x00000000,
369 0x00000000, 0x00000000, 0x00000000, 0x00000000,
370 0x00000000, 0x00000000, 0x00000000, 0x00000000,
371 0x00000080, 0x00000100, 0x00000200, 0x00000100,
372 0x00000100, 0x00000100, 0x00000100, 0x00000100,
373 0x00000100, 0x00000100, 0x00000002, 0x00000100,
374 0x00000040, 0x00000100, 0x00000004, 0x00000000,
375 0x00000100, 0x00000100, 0x00000100, 0x00000100,
376 0x00000100, 0x00000100, 0x00000100, 0x00000100,
377 0x00000100, 0x00000100, 0x00000010, 0x00000020,
378 0x00000000, 0x00000100, 0x00000000, 0x00000001,
379 0x00000100, 0xffffffff, 0xffffffff, 0xffffffff,
380 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
381 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
382 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
383 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
384 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
385 0xffffffff, 0xffffffff, 0xffffffff, 0x00000100,
386 0x00000008, 0x00000100, 0x00000100, 0x00000100,
387 0x00000100, 0xffffffff, 0xffffffff, 0xffffffff,
388 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
389 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
390 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
391 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
392 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
393 0xffffffff, 0xffffffff, 0xffffffff, 0x00000100,
394 0x00000000, 0x00000100, 0x00000100
405 if (!pPathIsValidCharA || pPathIsValidCharA == (
void*)pPathAppendA)
407 win_skip(
"PathIsValidCharA isn't available\n");
411 for (
c = 0;
c < 0x7f;
c++)
413 ret = pPathIsValidCharA(
c, ~0
U );
417 for (
c = 0x7f;
c <= 0xff;
c++)
419 ret = pPathIsValidCharA(
c, ~0
U );
420 ok (
ret,
"PathIsValidCharA failed: 0x%02x got 0x%08x\n",
c,
ret );
429 if (!pPathIsValidCharW)
431 win_skip(
"PathIsValidCharW isn't available\n");
435 for (
c = 0;
c < 0x7f;
c++)
437 ret = pPathIsValidCharW(
c, ~0
U );
441 for (
c = 0x007f;
c <= 0xffff;
c++)
443 ret = pPathIsValidCharW(
c, ~0
U );
444 ok (
ret,
"PathIsValidCharW failed: 0x%02x got 0x%08x\n",
c,
ret );
456 strcpy(
buff,
"C:\\A LONG FILE NAME WITH \\SPACES.TXT");
458 ok (
strcmp(
buff,
"C:\\a long file name with \\spaces.txt") == 0,
459 "PathMakePretty: Long UC name not changed\n");
461 strcpy(
buff,
"C:\\A LONG FILE NAME WITH \\MixedCase.TXT");
463 ok (
strcmp(
buff,
"C:\\A LONG FILE NAME WITH \\MixedCase.TXT") == 0,
464 "PathMakePretty: Failed but modified path\n");
468 ok (
strcmp(
buff,
"Test") == 0,
"PathMakePretty: 1st char lowercased %s\n",
buff);
473 static const char file[] =
"c:\\foo\\bar\\filename.ext";
474 static const char spec1[] =
".ext";
475 static const char spec2[] =
"*.ext";
476 static const char spec3[] =
"*.ext ";
477 static const char spec4[] =
" *.ext";
478 static const char spec5[] =
"* .ext";
479 static const char spec6[] =
"*. ext";
480 static const char spec7[] =
"* . ext";
481 static const char spec8[] =
"*.e?t";
482 static const char spec9[] =
"filename.ext";
483 static const char spec10[] =
"*bar\\filename.ext";
484 static const char spec11[] =
" foo; *.ext";
485 static const char spec12[] =
"*.ext;*.bar";
486 static const char spec13[] =
"*bar*";
505 LPWSTR wszString, wszString2;
507 static const WCHAR expout[] = {
'C',
':',
'\\',
'A',
'A',0};
512 win_skip(
"PathCombineW isn't available\n");
520 ok (wszString ==
NULL,
"Expected a NULL return\n");
524 wszString = pPathCombineW(wszString2,
NULL,
NULL);
526 broken(wszString[0] ==
'a'),
527 "Expected a NULL return\n");
528 ok (wszString2[0] == 0 ||
529 broken(wszString2[0] ==
'a'),
530 "Destination string not empty\n");
535 wstr2[0] = wstr2[1] = wstr2[2] =
'A';
537 wstr1[
i] = wstr2[
i] =
'A';
539 memset(wbuf, 0xbf,
sizeof(wbuf));
541 wszString = pPathCombineW(wbuf, wstr1, wstr2);
542 ok(wszString ==
NULL,
"Expected a NULL return\n");
544 broken(wbuf[0] == 0xbfbf),
545 "Buffer contains data\n");
550 ok(
PathCombineW(wstr1, wstr1, wstr2) == wstr1,
"Expected a wstr1 return\n");
551 ok(
StrCmpW(wstr1, expout) == 0,
"Unexpected PathCombine output\n");
555#define LONG_LEN (MAX_PATH * 2)
556#define HALF_LEN (MAX_PATH / 2 + 1)
606 "Expected \\, got %s\n",
str);
614 ok(!
lstrcmpA(
str,
"one\\two\\three"),
"Expected one\\two\\three, got %s\n",
str);
624 "Expected \\, got %s\n",
str);
635 "Expected str == NULL, got %p\n",
str);
645 ok(!
lstrcmpA(
str,
"C:\\one\\two\\three"),
"Expected C:\\one\\two\\three, got %s\n",
str);
653 ok(!
lstrcmpA(
str,
"C:\\one\\two\\three"),
"Expected C:\\one\\two\\three, got %s\n",
str);
661 ok(!
lstrcmpA(
str,
"C:\\one\\two\\three"),
"Expected C:\\one\\two\\three, got %s\n",
str);
669 ok(!
lstrcmpA(
str,
"C:\\one\\two\\three\\"),
"Expected C:\\one\\two\\three\\, got %s\n",
str);
681 ok(!
lstrcmpA(
str,
"one\\two\\three\\"),
"Expected one\\two\\three\\, got %s\n",
str);
689 ok(!
lstrcmpA(
str,
"C:\\one/two/three\\"),
"Expected one/two/three\\, got %s\n",
str);
697 ok(!
lstrcmpA(
str,
"C:\\one\\two\\three\\"),
"Expected C:\\one\\two\\three\\, got %s\n",
str);
705 ok(!
lstrcmpA(
str,
"C:\\two\\three"),
"Expected C:\\two\\three, got %s\n",
str);
827 ok(!
res,
"Expected failure\n");
834 ok(
res,
"Expected success\n");
841 ok(!
res,
"Expected failure\n");
848 ok(
res,
"Expected success\n");
856 ok(
res,
"Expected success\n");
864 ok(
res,
"Expected success\n");
866 ok(!
lstrcmpA(
path,
"C:\\one\\two\\three"),
"Expected C:\\one\\two\\three, got %s\n",
path);
872 ok(
res,
"Expected success\n");
874 ok(!
lstrcmpA(
path,
"C:\\one\\two\\three"),
"Expected C:\\one\\two\\three, got %s\n",
path);
880 ok(
res,
"Expected success\n");
882 ok(!
lstrcmpA(
path,
"C:\\one\\two\\three"),
"Expected C:\\one\\two\\three, got %s\n",
path);
888 ok(
res,
"Expected success\n");
890 ok(!
lstrcmpA(
path,
"C:\\one\\two\\three\\"),
"Expected C:\\one\\two\\three\\, got %s\n",
path);
896 ok(
res,
"Expected success\n");
898 ok(!
lstrcmpA(
path,
"C: \\ one \\two\\three"),
"Expected C: \\ one \\two\\three, got %s\n",
path);
904 ok(
res,
"Expected success\n");
906 ok(!
lstrcmpA(
path,
"C:\\one\\ two \\ three "),
"Expected 'C:\\one\\ two \\ three ', got %s\n",
path);
913 ok(!
res,
"Expected failure\n");
916 "Expected length of too_long to be zero, got %i\n",
lstrlenA(too_long));
924 ok(!
res,
"Expected failure\n");
927 "Expected length of path to be zero, got %i\n",
lstrlenA(
path));
936 ok(!
res,
"Expected failure\n");
938 "Expected length of path to be zero, got %i\n",
lstrlenA(
path));
952 ok(!
res,
"Expected failure\n");
954 "Expected ERROR_INVALID_PARAMETER, got %d\n",
GetLastError());
956 "Expected either an empty string (Vista) or test, got %s\n",
dest);
962 ok(
res,
"Expected success\n");
966 "Expected \\, got %s\n",
dest);
971 ok(!
res,
"Expected failure\n");
973 "Expected ERROR_INVALID_PARAMETER, got %d\n",
GetLastError());
979 ok(
res,
"Expected success\n");
987 ok(
res,
"Expected success\n");
995 ok(
res,
"Expected success\n");
1003 ok(
res,
"Expected success\n");
1011 ok(
res,
"Expected success\n");
1019 ok(
res,
"Expected success\n");
1022 "Expected C:\\one/two/three\\four/five\\six, got %s\n",
dest);
1028 ok(
res,
"Expected success\n");
1036 ok(
res,
"Expected success\n");
1040 "Expected \"C:\\one/.\" or \"C:\\one/\", got \"%s\"\n",
dest);
1049 ok(
res,
"Expected success\n");
1061 "Expected failure\n");
1065 "Expected 0xdeadbeef or ERROR_FILENAME_EXCED_RANGE, got %d\n",
GetLastError());
1086 ok(
ext ==
path,
"Expected ext == path, got %p\n",
ext);
1103 "Expected ext == path + lstrlenA(\"file\"), got %p\n",
ext);
1112 "Expected ext == path + lstrlenA(\"file.txt\"), got %p\n",
ext);
1121 ok(
ext == too_long +
LONG_LEN - 1,
"Expected ext == too_long + LONG_LEN - 1, got %p\n",
ext);
1127 lstrcpyA(too_long + 300,
".abcde");
1128 too_long[
lstrlenA(too_long)] =
'a';
1131 ok(
ext == too_long + 300,
"Expected ext == too_long + 300, got %p\n",
ext);
1140 char root_expected[26][4];
1149 for (
j = 0;
j < 26;
j++)
1165 "Expected aaaaaaaaa or empty string, got %s\n",
path);
1174 "Expected aaaaaaaaa or empty string, got %s\n",
path);
1387 ok(!
lstrcmpA(
out,
"one\\mid.end"),
"Expected one\\mid.end, got %s\n",
out);
1418 ok(!
lstrcmpW(pathW, resultW),
"%s (W): strings differ\n",
1428 static const CHAR test1A[] =
"a:\\test.file";
1429 static const CHAR test2A[] =
"file:////b:\\test.file";
1430 static const CHAR test3A[] =
"file:///c:\\test.file";
1431 static const CHAR test4A[] =
"file:\\\\c:\\test.file";
1432 static const CHAR test5A[] =
"\\\\?\\C:\\dir\\file.txt";
1433 static const WCHAR test1W[] =
1435 static const WCHAR test5W[] =
1436 {
'\\',
'\\',
'?',
'\\',
'C',
':',
'\\',
'd',
'i',
'r',
'\\',
'f',
'i',
'l',
'e',0};
1463 static const WCHAR sysrootW[] = {
'%',
'S',
'y',
's',
't',
'e',
'm',
'R',
'o',
'o',
't',
'%',0};
1464 static const WCHAR sysdriveW[] = {
'%',
'S',
'y',
's',
't',
'e',
'm',
'D',
'r',
'i',
'v',
'e',
'%',0};
1465 static const WCHAR nonpathW[] = {
'p',
'a',
't',
'h',0};
1466 static const WCHAR computernameW[] = {
'C',
'O',
'M',
'P',
'U',
'T',
'E',
'R',
'N',
'A',
'M',
'E',0};
1467 static const char sysrootA[] =
"%SystemRoot%";
1468 static const char sysdriveA[] =
"%SystemDrive%";
1474 if (!pPathUnExpandEnvStringsA || !pPathUnExpandEnvStringsW)
1476 win_skip(
"PathUnExpandEnvStrings not available\n");
1484 ret = pPathUnExpandEnvStringsA(envvarA,
buff,
sizeof(
buff));
1490 ret = pPathUnExpandEnvStringsW(envvarW, buffW,
ARRAY_SIZE(buffW));
1499 ok(
buff[0] ==
'x',
"wrong return string %s\n",
buff);
1502 ok(
len > 0,
"failed to get sysdir\n");
1504 sysdrvA[0] =
path[0];
1505 strcpy(&sysdrvA[1],
":");
1512 ok(
buff[0] ==
'x',
"wrong return string %s\n",
buff);
1517 ret = pPathUnExpandEnvStringsA(
path,
buff,
sizeof(sysrootA));
1519 ok(
buff[0] ==
'x',
"wrong return string %s\n",
buff);
1525 ok(!
strncmp(
buff, sysrootA,
sizeof(sysrootA)-1),
"wrong return string %s\n",
buff);
1560 buffW[0] =
'x'; buffW[1] = 0;
1562 ret = pPathUnExpandEnvStringsW(pathW, buffW,
ARRAY_SIZE(buffW));
1564 ok(buffW[0] ==
'x',
"wrong return string %s\n",
wine_dbgstr_w(buffW));
1567 ok(
len > 0,
"failed to get sysdir\n");
1569 sysdrvW[0] = pathW[0];
1574 buffW[0] =
'x'; buffW[1] = 0;
1576 ret = pPathUnExpandEnvStringsW(pathW, buffW, 5);
1578 ok(buffW[0] ==
'x',
"wrong return string %s\n",
wine_dbgstr_w(buffW));
1581 buffW[0] =
'x'; buffW[1] = 0;
1583 ret = pPathUnExpandEnvStringsW(pathW, buffW,
ARRAY_SIZE(sysrootW));
1585 ok(buffW[0] ==
'x',
"wrong return string %s\n",
wine_dbgstr_w(buffW));
1589 ret = pPathUnExpandEnvStringsW(pathW, buffW,
ARRAY_SIZE(buffW));
1598 ret = pPathUnExpandEnvStringsW(pathW, buffW,
ARRAY_SIZE(buffW));
1606static const struct {
1613 {
"\\\\folder\\test.txt",
FALSE},
1614 {
"file://folder/test.txt",
TRUE},
1615 {
"C:\\test.txt",
FALSE},
1616 {
"file:///C:/test.txt",
TRUE}
1624 if (!pPathIsRelativeA) {
1625 win_skip(
"PathIsRelativeA not available\n");
1630 for (
i = 0;
i <
num;
i++) {
1633 "PathIsRelativeA(\"%s\") expects %d, got %d.\n",
1644 if (!pPathIsRelativeW) {
1645 win_skip(
"PathIsRelativeW not available\n");
1650 for (
i = 0;
i <
num;
i++) {
1655 "PathIsRelativeW(\"%s\") expects %d, got %d.\n",
1664 const char const_path[] =
"test";
1665 char path[] =
"short//path\\file.txt";
1681 win_skip(
"Too old shlwapi version\n");
char * strcat(char *DstString, const char *SrcString)
int strcmp(const char *String1, const char *String2)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
ACPI_SIZE strlen(const char *String)
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
char * strcpy(char *DstString, const char *SrcString)
#define ERROR_INVALID_PARAMETER
#define GetEnvironmentVariableW(x, y, z)
#define GetProcAddress(x, y)
#define HeapFree(x, y, z)
#define WideCharToMultiByte
#define GetEnvironmentVariableA(x, y, z)
#define MultiByteToWideChar
static const WCHAR *const ext[]
BOOL WINAPI DECLSPEC_HOTPATCH SetEnvironmentVariableA(IN LPCSTR lpName, IN LPCSTR lpValue)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
DWORD WINAPI SearchPathW(IN LPCWSTR lpPath OPTIONAL, IN LPCWSTR lpFileName, IN LPCWSTR lpExtension OPTIONAL, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart OPTIONAL)
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
UINT WINAPI GetSystemDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
int WINAPI lstrcmpA(LPCSTR str1, LPCSTR str2)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
int WINAPI lstrcmpiA(LPCSTR str1, LPCSTR str2)
VOID WINAPI PathUnquoteSpacesA(LPSTR lpszPath)
void WINAPI PathStripPathA(LPSTR lpszPath)
LPSTR WINAPI PathBuildRootA(LPSTR lpszPath, int drive)
int WINAPI PathGetDriveNumberW(const WCHAR *path)
static const DWORD SHELL_charclass[]
int WINAPI PathGetDriveNumberA(LPCSTR lpszPath)
VOID WINAPI PathUnquoteSpacesW(LPWSTR lpszPath)
BOOL WINAPI PathMatchSpecA(LPCSTR lpszPath, LPCSTR lpszMask)
BOOL WINAPI PathMakePrettyA(LPSTR lpszPath)
LPSTR WINAPI PathFindExtensionA(LPCSTR lpszPath)
BOOL WINAPI PathSearchAndQualifyW(LPCWSTR lpszPath, LPWSTR lpszBuf, UINT cchBuf)
int WINAPI PathCommonPrefixA(LPCSTR lpszFile1, LPCSTR lpszFile2, LPSTR achPath)
int WINAPI StrCmpW(LPCWSTR lpszStr, LPCWSTR lpszComp)
static const WCHAR fileW[]
BOOL WINAPI PathIsURLA(LPCSTR lpstrPath)
#define INTERNET_MAX_URL_LENGTH
static unsigned char buff[32768]
GLuint GLuint GLsizei count
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
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
#define memcpy(s1, s2, n)
#define sprintf(buf, format,...)
#define expect(expected, got)
static const WCHAR fooW[]
static LPSTR *static LPCWSTR
#define todo_wine_if(is_todo)
static void test_PathGetDriveNumber(void)
static const struct @1711 TEST_PATHFROMURL[]
static void test_PathAppendA(void)
static void test_PathCommonPrefixA(void)
static void test_PathStripPathA(void)
static LPWSTR GetWideString(const char *src)
static void test_PathUnExpandEnvStrings(void)
static void test_PathUnquoteSpaces(void)
static const struct @1714 test_path_is_relative[]
static void test_PathFindExtensionA(void)
static void test_PathCreateFromUrl(void)
static void test_PathSearchAndQualify(void)
static void test_PathBuildRootA(void)
static void test_PathCombineW(void)
static const struct @1713 TEST_PATH_UNQUOTE_SPACES[]
static LPSTR strdupA(LPCSTR p)
static void test_PathIsRelativeW(void)
static void test_PathMatchSpec(void)
static struct @1712 TEST_PATH_IS_URL[]
static void test_PathIsRelativeA(void)
static void test_PathAddBackslash(void)
static void FreeWideString(LPWSTR wszString)
static void test_PathIsValidCharA(void)
static void test_PathCombineA(void)
static void test_PathMakePretty(void)
static void test_PathIsValidCharW(void)
static void test_PathCanonicalizeA(void)
static void test_PathIsUrl(void)
static const WCHAR path3[]
static const WCHAR path1[]
static const WCHAR path2[]
#define PathCanonicalizeA
#define PathAddBackslashA
#define PathAddBackslashW
DWORD WINAPI GetLastError(void)
#define ERROR_FILENAME_EXCED_RANGE