22#if !defined(WITHOUT_WINPR_3x_DEPRECATED)
29#include <winpr/wtypes.h>
36#define PATHCCH_ALLOW_LONG_PATHS \
39#define VOLUME_PREFIX _T("\\\\?\\Volume")
40#define VOLUME_PREFIX_LEN ((sizeof(VOLUME_PREFIX) / sizeof(TCHAR)) - 1)
47#define PATHCCH_MAX_CCH 0x8000
49 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
50 WINPR_ATTR_NODISCARD WINPR_API HRESULT
51 PathCchAddBackslashA(PSTR pszPath,
size_t cchPath));
53 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
54 WINPR_ATTR_NODISCARD WINPR_API HRESULT
55 PathCchAddBackslashW(PWSTR pszPath,
size_t cchPath));
57 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
58 WINPR_ATTR_NODISCARD WINPR_API HRESULT
59 PathCchRemoveBackslashA(PSTR pszPath,
size_t cchPath));
61 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
62 WINPR_ATTR_NODISCARD WINPR_API HRESULT
63 PathCchRemoveBackslashW(PWSTR pszPath,
size_t cchPath));
65 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
66 WINPR_ATTR_NODISCARD WINPR_API HRESULT PathCchAddBackslashExA(
67 PSTR pszPath,
size_t cchPath, PSTR* ppszEnd,
size_t* pcchRemaining));
69 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
70 WINPR_ATTR_NODISCARD WINPR_API HRESULT PathCchAddBackslashExW(
71 PWSTR pszPath,
size_t cchPath, PWSTR* ppszEnd,
size_t* pcchRemaining));
73 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
74 WINPR_ATTR_NODISCARD WINPR_API HRESULT PathCchRemoveBackslashExA(
75 PSTR pszPath,
size_t cchPath, PSTR* ppszEnd,
size_t* pcchRemaining));
77 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
78 WINPR_ATTR_NODISCARD WINPR_API HRESULT PathCchRemoveBackslashExW(
79 PWSTR pszPath,
size_t cchPath, PWSTR* ppszEnd,
size_t* pcchRemaining));
81 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
82 WINPR_ATTR_NODISCARD WINPR_API HRESULT PathCchAddExtensionA(PSTR pszPath,
86 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
87 WINPR_ATTR_NODISCARD WINPR_API HRESULT
88 PathCchAddExtensionW(PWSTR pszPath,
size_t cchPath, PCWSTR pszExt));
90 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
91 WINPR_ATTR_NODISCARD WINPR_API HRESULT PathCchAppendA(PSTR pszPath,
95 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
96 WINPR_ATTR_NODISCARD WINPR_API HRESULT PathCchAppendW(PWSTR pszPath,
100 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
101 WINPR_ATTR_NODISCARD WINPR_API HRESULT PathCchAppendExA(
102 PSTR pszPath,
size_t cchPath, PCSTR pszMore,
unsigned long dwFlags));
104 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
105 WINPR_ATTR_NODISCARD WINPR_API HRESULT PathCchAppendExW(
106 PWSTR pszPath,
size_t cchPath, PCWSTR pszMore,
unsigned long dwFlags));
108 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
109 WINPR_ATTR_NODISCARD WINPR_API HRESULT PathCchCanonicalizeA(
110 PSTR pszPathOut,
size_t cchPathOut, PCSTR pszPathIn));
112 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
113 WINPR_ATTR_NODISCARD WINPR_API HRESULT PathCchCanonicalizeW(
114 PWSTR pszPathOut,
size_t cchPathOut, PCWSTR pszPathIn));
116 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
117 WINPR_ATTR_NODISCARD WINPR_API HRESULT
118 PathCchCanonicalizeExA(PSTR pszPathOut,
size_t cchPathOut,
119 PCSTR pszPathIn,
unsigned long dwFlags));
121 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
122 WINPR_ATTR_NODISCARD WINPR_API HRESULT
123 PathCchCanonicalizeExW(PWSTR pszPathOut,
size_t cchPathOut,
124 PCWSTR pszPathIn,
unsigned long dwFlags));
126 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
127 WINPR_ATTR_NODISCARD WINPR_API HRESULT PathAllocCanonicalizeA(
128 PCSTR pszPathIn,
unsigned long dwFlags, PSTR* ppszPathOut));
130 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
131 WINPR_ATTR_NODISCARD WINPR_API HRESULT PathAllocCanonicalizeW(
132 PCWSTR pszPathIn,
unsigned long dwFlags, PWSTR* ppszPathOut));
134 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
135 WINPR_ATTR_NODISCARD WINPR_API HRESULT PathCchCombineA(
136 PSTR pszPathOut,
size_t cchPathOut, PCSTR pszPathIn, PCSTR pszMore));
138 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
139 WINPR_ATTR_NODISCARD WINPR_API HRESULT PathCchCombineW(PWSTR pszPathOut,
144 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
145 WINPR_ATTR_NODISCARD WINPR_API HRESULT
146 PathCchCombineExA(PSTR pszPathOut,
size_t cchPathOut, PCSTR pszPathIn,
147 PCSTR pszMore,
unsigned long dwFlags));
149 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
150 WINPR_ATTR_NODISCARD WINPR_API HRESULT PathCchCombineExW(
151 PWSTR pszPathOut,
size_t cchPathOut, PCWSTR pszPathIn, PCWSTR pszMore,
152 unsigned long dwFlags));
154 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
155 WINPR_ATTR_NODISCARD WINPR_API HRESULT
156 PathAllocCombineA(PCSTR pszPathIn, PCSTR pszMore,
157 unsigned long dwFlags, PSTR* ppszPathOut));
159 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
160 WINPR_ATTR_NODISCARD WINPR_API HRESULT
161 PathAllocCombineW(PCWSTR pszPathIn, PCWSTR pszMore,
162 unsigned long dwFlags, PWSTR* ppszPathOut));
164 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
165 WINPR_ATTR_NODISCARD WINPR_API HRESULT
166 PathCchFindExtensionA(PCSTR pszPath,
size_t cchPath, PCSTR* ppszExt));
168 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
169 WINPR_ATTR_NODISCARD WINPR_API HRESULT PathCchFindExtensionW(
170 PCWSTR pszPath,
size_t cchPath, PCWSTR* ppszExt));
172 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
173 WINPR_ATTR_NODISCARD WINPR_API HRESULT
174 PathCchRenameExtensionA(PSTR pszPath,
size_t cchPath, PCSTR pszExt));
176 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
177 WINPR_ATTR_NODISCARD WINPR_API HRESULT
178 PathCchRenameExtensionW(PWSTR pszPath,
size_t cchPath, PCWSTR pszExt));
180 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
181 WINPR_ATTR_NODISCARD WINPR_API HRESULT
182 PathCchRemoveExtensionA(PSTR pszPath,
size_t cchPath));
184 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
185 WINPR_ATTR_NODISCARD WINPR_API HRESULT
186 PathCchRemoveExtensionW(PWSTR pszPath,
size_t cchPath));
188 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
189 WINPR_ATTR_NODISCARD WINPR_API BOOL PathCchIsRootA(PCSTR pszPath));
191 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
192 WINPR_ATTR_NODISCARD WINPR_API BOOL PathCchIsRootW(PCWSTR pszPath));
194 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
195 WINPR_ATTR_NODISCARD WINPR_API BOOL PathIsUNCExA(PCSTR pszPath,
198 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
199 WINPR_ATTR_NODISCARD WINPR_API BOOL PathIsUNCExW(PCWSTR pszPath,
200 PCWSTR* ppszServer));
202 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
203 WINPR_ATTR_NODISCARD WINPR_API HRESULT
204 PathCchSkipRootA(PCSTR pszPath, PCSTR* ppszRootEnd));
206 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
207 WINPR_ATTR_NODISCARD WINPR_API HRESULT
208 PathCchSkipRootW(PCWSTR pszPath, PCWSTR* ppszRootEnd));
210 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
211 WINPR_ATTR_NODISCARD WINPR_API HRESULT
212 PathCchStripToRootA(PSTR pszPath,
size_t cchPath));
214 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
215 WINPR_ATTR_NODISCARD WINPR_API HRESULT
216 PathCchStripToRootW(PWSTR pszPath,
size_t cchPath));
218 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
219 WINPR_ATTR_NODISCARD WINPR_API HRESULT
220 PathCchStripPrefixA(PSTR pszPath,
size_t cchPath));
222 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
223 WINPR_ATTR_NODISCARD WINPR_API HRESULT
224 PathCchStripPrefixW(PWSTR pszPath,
size_t cchPath));
226 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
227 WINPR_ATTR_NODISCARD WINPR_API HRESULT
228 PathCchRemoveFileSpecA(PSTR pszPath,
size_t cchPath));
230 WINPR_DEPRECATED_VAR(
"[since 3.31.0] dropped",
231 WINPR_ATTR_NODISCARD WINPR_API HRESULT
232 PathCchRemoveFileSpecW(PWSTR pszPath,
size_t cchPath));
235#define PathCchAddBackslash PathCchAddBackslashW
236#define PathCchRemoveBackslash PathCchRemoveBackslashW
237#define PathCchAddBackslashEx PathCchAddBackslashExW
238#define PathCchRemoveBackslashEx PathCchRemoveBackslashExW
239#define PathCchAddExtension PathCchAddExtensionW
240#define PathCchAppend PathCchAppendW
241#define PathCchAppendEx PathCchAppendExW
242#define PathCchCanonicalize PathCchCanonicalizeW
243#define PathCchCanonicalizeEx PathCchCanonicalizeExW
244#define PathAllocCanonicalize PathAllocCanonicalizeW
245#define PathCchCombine PathCchCombineW
246#define PathCchCombineEx PathCchCombineExW
247#define PathAllocCombine PathAllocCombineW
248#define PathCchFindExtension PathCchFindExtensionW
249#define PathCchRenameExtension PathCchRenameExtensionW
250#define PathCchRemoveExtension PathCchRemoveExtensionW
251#define PathCchIsRoot PathCchIsRootW
252#define PathIsUNCEx PathIsUNCExW
253#define PathCchSkipRoot PathCchSkipRootW
254#define PathCchStripToRoot PathCchStripToRootW
255#define PathCchStripPrefix PathCchStripPrefixW
256#define PathCchRemoveFileSpec PathCchRemoveFileSpecW
258#define PathCchAddBackslash PathCchAddBackslashA
259#define PathCchRemoveBackslash PathCchRemoveBackslashA
260#define PathCchAddBackslashEx PathCchAddBackslashExA
261#define PathCchRemoveBackslashEx PathCchRemoveBackslashExA
262#define PathCchAddExtension PathCchAddExtensionA
263#define PathCchAppend PathCchAppendA
264#define PathCchAppendEx PathCchAppendExA
265#define PathCchCanonicalize PathCchCanonicalizeA
266#define PathCchCanonicalizeEx PathCchCanonicalizeExA
267#define PathAllocCanonicalize PathAllocCanonicalizeA
268#define PathCchCombine PathCchCombineA
269#define PathCchCombineEx PathCchCombineExA
270#define PathAllocCombine PathAllocCombineA
271#define PathCchFindExtension PathCchFindExtensionA
272#define PathCchRenameExtension PathCchRenameExtensionA
273#define PathCchRemoveExtension PathCchRemoveExtensionA
274#define PathCchIsRoot PathCchIsRootA
275#define PathIsUNCEx PathIsUNCExA
276#define PathCchSkipRoot PathCchSkipRootA
277#define PathCchStripToRoot PathCchStripToRootA
278#define PathCchStripPrefix PathCchStripPrefixA
279#define PathCchRemoveFileSpec PathCchRemoveFileSpecA