ReactOS
0.4.16-dev-106-g10b08aa
splitpath.c
Go to the documentation of this file.
1
/*
2
* PROJECT: ReactOS api tests
3
* LICENSE: GPL - See COPYING in the top level directory
4
* PURPOSE: Test for _splitpath
5
* PROGRAMMER: Timo Kreuzer
6
*/
7
8
#include <
apitest.h
>
9
10
#include <stdio.h>
11
#include <stdlib.h>
12
#include <
strings.h
>
13
#include <stdarg.h>
14
15
START_TEST
(splitpath)
16
{
17
char
drive
[5];
18
char
dir
[64];
19
char
fname[32];
20
char
ext
[10];
21
DWORD
Major;
22
23
Major = (
DWORD
)(
LOBYTE
(
LOWORD
(
GetVersion
())));
24
25
drive
[2] = 0xFF;
26
_splitpath
(
"c:\\dir1\\dir2\\file.ext"
,
drive
,
dir
, fname,
ext
);
27
ok_str
(
drive
,
"c:"
);
28
ok_str
(
dir
,
"\\dir1\\dir2\\"
);
29
ok_str
(fname,
"file"
);
30
ok_str
(
ext
,
".ext"
);
31
ok_int
(
drive
[2], 0);
32
33
*
_errno
() = 0;
34
_splitpath
(
"c:\\dir1\\dir2\\file.ext"
, 0, 0, 0, 0);
35
ok_int
(*
_errno
(), 0);
36
37
if
(Major >= 6)
38
{
39
*
_errno
() = 0;
40
_splitpath
(0,
drive
,
dir
, fname,
ext
);
41
ok_int
(*
_errno
(),
EINVAL
);
42
ok_str
(
drive
,
""
);
43
ok_str
(
dir
,
""
);
44
ok_str
(fname,
""
);
45
ok_str
(
ext
,
""
);
46
}
47
else
48
{
49
win_skip
(
"This test only succeed on NT6+\n"
);
50
}
51
52
_splitpath
(
"\\\\?\\c:\\dir1\\dir2\\file.ext"
,
drive
,
dir
, fname,
ext
);
53
if
(Major >= 6)
54
{
55
ok_str
(
drive
,
"c:"
);
56
ok_str
(
dir
,
"\\dir1\\dir2\\"
);
57
}
58
else
59
{
60
ok_str
(
drive
,
""
);
61
ok_str
(
dir
,
"\\\\?\\c:\\dir1\\dir2\\"
);
62
}
63
ok_str
(fname,
"file"
);
64
ok_str
(
ext
,
".ext"
);
65
66
_splitpath
(
"ab:\\dir1\\..\\file"
,
drive
,
dir
, fname,
ext
);
67
ok_str
(
drive
,
""
);
68
ok_str
(
dir
,
"ab:\\dir1\\..\\"
);
69
ok_str
(fname,
"file"
);
70
ok_str
(
ext
,
""
);
71
72
_splitpath
(
"//?/c:/dir1/dir2/file.ext"
,
drive
,
dir
, fname,
ext
);
73
ok_str
(
drive
,
""
);
74
ok_str
(
dir
,
"//?/c:/dir1/dir2/"
);
75
ok_str
(fname,
"file"
);
76
ok_str
(
ext
,
".ext"
);
77
78
_splitpath
(
"\\\\?\\0:/dir1\\dir2/file."
,
drive
,
dir
, fname,
ext
);
79
if
(Major >= 6)
80
{
81
ok_str
(
drive
,
"0:"
);
82
ok_str
(
dir
,
"/dir1\\dir2/"
);
83
}
84
else
85
{
86
ok_str
(
drive
,
""
);
87
ok_str
(
dir
,
"\\\\?\\0:/dir1\\dir2/"
);
88
}
89
ok_str
(fname,
"file"
);
90
ok_str
(
ext
,
"."
);
91
92
_splitpath
(
"\\\\.\\c:\\dir1\\dir2\\.ext.ext2"
,
drive
,
dir
, fname,
ext
);
93
ok_str
(
drive
,
""
);
94
ok_str
(
dir
,
"\\\\.\\c:\\dir1\\dir2\\"
);
95
ok_str
(fname,
".ext"
);
96
ok_str
(
ext
,
".ext2"
);
97
98
_splitpath
(
"\\??\\c:\\dir1\\dir2\\file. ~ "
,
drive
,
dir
, fname,
ext
);
99
ok_str
(
drive
,
""
);
100
ok_str
(
dir
,
"\\??\\c:\\dir1\\dir2\\"
);
101
ok_str
(fname,
"file"
);
102
ok_str
(
ext
,
". ~ "
);
103
104
_splitpath
(
"x: dir1\\/dir2 \\.blub"
,
drive
,
dir
, fname,
ext
);
105
ok_str
(
drive
,
"x:"
);
106
ok_str
(
dir
,
" dir1\\/dir2 \\"
);
107
ok_str
(fname,
""
);
108
ok_str
(
ext
,
".blub"
);
109
110
_splitpath
(
"/:\\dir1\\dir2\\file.ext"
,
drive
,
dir
, fname,
ext
);
111
ok_str
(
drive
,
"/:"
);
112
ok_str
(
dir
,
"\\dir1\\dir2\\"
);
113
ok_str
(fname,
"file"
);
114
ok_str
(
ext
,
".ext"
);
115
116
}
117
EINVAL
#define EINVAL
Definition:
acclib.h:90
apitest.h
dir
unsigned int dir
Definition:
maze.c:112
ok_str
#define ok_str(x, y)
Definition:
atltest.h:127
START_TEST
#define START_TEST(x)
Definition:
atltest.h:75
ok_int
#define ok_int(expression, result)
Definition:
atltest.h:134
ext
static const WCHAR *const ext[]
Definition:
module.c:53
DWORD
unsigned long DWORD
Definition:
ntddk_ex.h:95
_splitpath
_CRTIMP void __cdecl _splitpath(_In_z_ const char *_FullPath, _Pre_maybenull_ _Post_z_ char *_Drive, _Pre_maybenull_ _Post_z_ char *_Dir, _Pre_maybenull_ _Post_z_ char *_Filename, _Pre_maybenull_ _Post_z_ char *_Ext)
LOBYTE
#define LOBYTE(W)
Definition:
jmemdos.c:487
DWORD
#define DWORD
Definition:
nt_native.h:44
LOWORD
#define LOWORD(l)
Definition:
pedump.c:82
GetVersion
DWORD WINAPI GetVersion()
Definition:
redirtest.c:5
_errno
_CRTIMP int *__cdecl _errno(void)
Definition:
errno.c:17
win_skip
#define win_skip
Definition:
test.h:163
strings.h
drive
Definition:
filesystem.c:103
modules
rostests
apitests
msvcrt
splitpath.c
Generated on Tue Oct 8 2024 06:10:42 for ReactOS by
1.9.6