23#include <winpr/winpr.h>
24#include <winpr/tchar.h>
25#include <winpr/error.h>
26#include <winpr/wtypes.h>
28#include <winpr/Pathcch.h>
42 WINPR_API HRESULT PathCchAddSlashA(PSTR pszPath,
size_t cchPath);
45 WINPR_API HRESULT PathCchAddSlashW(PWSTR pszPath,
size_t cchPath);
48 WINPR_API HRESULT PathCchAddSlashExA(PSTR pszPath,
size_t cchPath, PSTR* ppszEnd,
49 size_t* pcchRemaining);
52 WINPR_API HRESULT PathCchAddSlashExW(PWSTR pszPath,
size_t cchPath, PWSTR* ppszEnd,
53 size_t* pcchRemaining);
56 WINPR_API HRESULT UnixPathCchAddExtensionA(PSTR pszPath,
size_t cchPath, PCSTR pszExt);
59 WINPR_API HRESULT UnixPathCchAddExtensionW(PWSTR pszPath,
size_t cchPath, PCWSTR pszExt);
62 WINPR_API HRESULT UnixPathCchAppendA(PSTR pszPath,
size_t cchPath, PCSTR pszMore);
65 WINPR_API HRESULT UnixPathCchAppendW(PWSTR pszPath,
size_t cchPath, PCWSTR pszMore);
68 WINPR_API HRESULT UnixPathAllocCombineA(PCSTR pszPathIn, PCSTR pszMore,
unsigned long dwFlags,
72 WINPR_API HRESULT UnixPathAllocCombineW(PCWSTR pszPathIn, PCWSTR pszMore,
unsigned long dwFlags,
76#define PathCchAddSlash PathCchAddSlashW
77#define PathCchAddSlashEx PathCchAddSlashExW
78#define UnixPathCchAddExtension UnixPathCchAddExtensionW
79#define UnixPathCchAppend UnixPathCchAppendW
80#define UnixPathAllocCombine UnixPathAllocCombineW
82#define PathCchAddSlash PathCchAddSlashA
83#define PathCchAddSlashEx PathCchAddSlashExA
84#define UnixPathCchAddExtension UnixPathCchAddExtensionA
85#define UnixPathCchAppend UnixPathCchAppendA
86#define UnixPathAllocCombine UnixPathAllocCombineA
92 WINPR_API HRESULT PathCchAddSeparatorA(PSTR pszPath,
size_t cchPath);
95 WINPR_API HRESULT PathCchAddSeparatorW(PWSTR pszPath,
size_t cchPath);
98 WINPR_API HRESULT PathCchAddSeparatorExA(PSTR pszPath,
size_t cchPath, PSTR* ppszEnd,
99 size_t* pcchRemaining);
102 WINPR_API HRESULT PathCchAddSeparatorExW(PWSTR pszPath,
size_t cchPath, PWSTR* ppszEnd,
103 size_t* pcchRemaining);
106 WINPR_API HRESULT NativePathCchAddExtensionA(PSTR pszPath,
size_t cchPath, PCSTR pszExt);
109 WINPR_API HRESULT NativePathCchAddExtensionW(PWSTR pszPath,
size_t cchPath, PCWSTR pszExt);
112 WINPR_API HRESULT NativePathCchAppendA(PSTR pszPath,
size_t cchPath, PCSTR pszMore);
115 WINPR_API HRESULT NativePathCchAppendW(PWSTR pszPath,
size_t cchPath, PCWSTR pszMore);
118 WINPR_API HRESULT NativePathAllocCombineA(PCSTR pszPathIn, PCSTR pszMore,
unsigned long dwFlags,
122 WINPR_API HRESULT NativePathAllocCombineW(PCWSTR pszPathIn, PCWSTR pszMore,
123 unsigned long dwFlags, PWSTR* ppszPathOut);
126#define PathCchAddSeparator PathCchAddSeparatorW
127#define PathCchAddSeparatorEx PathCchAddSeparatorExW
128#define NativePathCchAddExtension NativePathCchAddExtensionW
129#define NativePathCchAppend NativePathCchAppendW
130#define NativePathAllocCombine NativePathAllocCombineW
132#define PathCchAddSeparator PathCchAddSeparatorA
133#define PathCchAddSeparatorEx PathCchAddSeparatorExA
134#define NativePathCchAddExtension NativePathCchAddExtensionA
135#define NativePathCchAppend NativePathCchAppendA
136#define NativePathAllocCombine NativePathAllocCombineA
141#define PATH_STYLE_WINDOWS 0x00000001
142#define PATH_STYLE_UNIX 0x00000002
143#define PATH_STYLE_NATIVE 0x00000003
145#define PATH_SHARED_LIB_EXT_WITH_DOT 0x00000001
146#define PATH_SHARED_LIB_EXT_APPLE_SO 0x00000002
147#define PATH_SHARED_LIB_EXT_EXPLICIT 0x80000000
148#define PATH_SHARED_LIB_EXT_EXPLICIT_DLL 0x80000001
149#define PATH_SHARED_LIB_EXT_EXPLICIT_SO 0x80000002
150#define PATH_SHARED_LIB_EXT_EXPLICIT_DYLIB 0x80000003
153 WINPR_API HRESULT PathCchConvertStyleA(PSTR pszPath,
size_t cchPath,
unsigned long dwFlags);
155 WINPR_API HRESULT PathCchConvertStyleW(PWSTR pszPath,
size_t cchPath,
unsigned long dwFlags);
158 WINPR_API
char PathGetSeparatorA(
unsigned long dwFlags);
161 WINPR_API WCHAR PathGetSeparatorW(
unsigned long dwFlags);
164 WINPR_API PCSTR PathGetSharedLibraryExtensionA(
unsigned long dwFlags);
167 WINPR_API PCWSTR PathGetSharedLibraryExtensionW(
unsigned long dwFlags);
170#define PathCchConvertStyle PathCchConvertStyleW
171#define PathGetSeparator PathGetSeparatorW
172#define PathGetSharedLibraryExtension PathGetSharedLibraryExtensionW
174#define PathCchConvertStyle PathCchConvertStyleA
175#define PathGetSeparator PathGetSeparatorW
176#define PathGetSharedLibraryExtension PathGetSharedLibraryExtensionA
191 KNOWN_PATH_XDG_DATA_HOME = 3,
192 KNOWN_PATH_XDG_CONFIG_HOME = 4,
193 KNOWN_PATH_XDG_CACHE_HOME = 5,
194 KNOWN_PATH_XDG_RUNTIME_DIR = 6,
195 KNOWN_PATH_SYSTEM_CONFIG_HOME = 7
216 WINPR_ATTR_MALLOC(free, 1)
217 WINPR_API
char* winpr_GetConfigFilePath(BOOL system, const
char* filename);
228 WINPR_ATTR_MALLOC(free, 1)
229 WINPR_ATTR_FORMAT_ARG(2, 3)
230 WINPR_API
char* winpr_GetConfigFilePathV(BOOL system, WINPR_FORMAT_ARG const
char* filename,
243 WINPR_ATTR_MALLOC(free, 1)
244 WINPR_ATTR_FORMAT_ARG(2, 0)
245 WINPR_API
char* winpr_GetConfigFilePathVA(BOOL system, WINPR_FORMAT_ARG const
char* filename,
249 WINPR_API const
char* GetKnownPathIdString(
int id);
251 WINPR_ATTR_MALLOC(free, 1)
252 WINPR_API
char* GetKnownPath(eKnownPathTypes
id);
254 WINPR_ATTR_MALLOC(free, 1)
255 WINPR_API
char* GetKnownSubPath(eKnownPathTypes
id, const
char* path);
265 WINPR_ATTR_MALLOC(free, 1)
266 WINPR_ATTR_FORMAT_ARG(2, 3)
267 WINPR_API
char* GetKnownSubPathV(eKnownPathTypes
id, const
char* path, ...);
278 WINPR_ATTR_MALLOC(free, 1)
279 WINPR_ATTR_FORMAT_ARG(2, 0)
280 WINPR_API
char* GetKnownSubPathVA(eKnownPathTypes
id, const
char* path, va_list ap);
282 WINPR_ATTR_MALLOC(free, 1)
283 WINPR_API
char* GetEnvironmentPath(
char* name);
285 WINPR_ATTR_MALLOC(free, 1)
286 WINPR_API
char* GetEnvironmentSubPath(
char* name, const
char* path);
296 WINPR_ATTR_MALLOC(free, 1)
297 WINPR_ATTR_FORMAT_ARG(2, 3)
298 WINPR_API
char* GetEnvironmentSubPathV(
char* name, WINPR_FORMAT_ARG const
char* path, ...);
310 WINPR_ATTR_MALLOC(free, 1)
311 WINPR_ATTR_FORMAT_ARG(2, 0)
312 WINPR_API
char* GetEnvironmentSubPathVA(
char* name, WINPR_FORMAT_ARG const
char* path,
315 WINPR_ATTR_MALLOC(free, 1)
316 WINPR_API
char* GetCombinedPath(const
char* basePath, const
char* subPath);
330 WINPR_ATTR_MALLOC(free, 1)
331 WINPR_ATTR_FORMAT_ARG(2, 3)
332 WINPR_API
char* GetCombinedPathV(const
char* basePath, WINPR_FORMAT_ARG const
char* subPathFmt,
347 WINPR_ATTR_MALLOC(free, 1)
348 WINPR_ATTR_FORMAT_ARG(2, 0)
349 WINPR_API
char* GetCombinedPathVA(const
char* basePath, WINPR_FORMAT_ARG const
char* subPathFmt,
353 WINPR_API BOOL PathMakePathA(LPCSTR path, LPSECURITY_ATTRIBUTES lpAttributes);
356 WINPR_API BOOL PathMakePathW(LPCWSTR path, LPSECURITY_ATTRIBUTES lpAttributes);
358#if !defined(_WIN32) || defined(_UWP)
361 WINPR_API BOOL PathIsRelativeA(LPCSTR pszPath);
364 WINPR_API BOOL PathIsRelativeW(LPCWSTR pszPath);
367 WINPR_API BOOL PathFileExistsA(LPCSTR pszPath);
370 WINPR_API BOOL PathFileExistsW(LPCWSTR pszPath);
373 WINPR_API BOOL PathIsDirectoryEmptyA(LPCSTR pszPath);
376 WINPR_API BOOL PathIsDirectoryEmptyW(LPCWSTR pszPath);
379#define PathFileExists PathFileExistsW
380#define PathIsDirectoryEmpty PathIsDirectoryEmptyW
382#define PathFileExists PathFileExistsA
383#define PathIsDirectoryEmpty PathIsDirectoryEmptyA
389 WINPR_API BOOL winpr_MoveFile(LPCSTR lpExistingFileName, LPCSTR lpNewFileName);
392 WINPR_API BOOL winpr_MoveFileEx(LPCSTR lpExistingFileName, LPCSTR lpNewFileName, DWORD dwFlags);
394 WINPR_API BOOL winpr_DeleteFile(
const char* lpFileName);
396 WINPR_API BOOL winpr_RemoveDirectory(LPCSTR lpPathName);
398 WINPR_API BOOL winpr_RemoveDirectory_RecursiveA(LPCSTR lpPathName);
400 WINPR_API BOOL winpr_RemoveDirectory_RecursiveW(LPCWSTR lpPathName);
403 WINPR_API BOOL winpr_PathFileExists(
const char* pszPath);
406 WINPR_API BOOL winpr_PathMakePath(
const char* path, LPSECURITY_ATTRIBUTES lpAttributes);