23#include <winpr/winpr.h>
24#include <winpr/tchar.h>
25#include <winpr/error.h>
26#include <winpr/wtypes.h>
27#include <winpr/json.h>
29#include <winpr/Pathcch.h>
43 WINPR_API HRESULT PathCchAddSlashA(PSTR pszPath,
size_t cchPath);
46 WINPR_API HRESULT PathCchAddSlashW(PWSTR pszPath,
size_t cchPath);
49 WINPR_API HRESULT PathCchAddSlashExA(PSTR pszPath,
size_t cchPath, PSTR* ppszEnd,
50 size_t* pcchRemaining);
53 WINPR_API HRESULT PathCchAddSlashExW(PWSTR pszPath,
size_t cchPath, PWSTR* ppszEnd,
54 size_t* pcchRemaining);
57 WINPR_API HRESULT UnixPathCchAddExtensionA(PSTR pszPath,
size_t cchPath, PCSTR pszExt);
60 WINPR_API HRESULT UnixPathCchAddExtensionW(PWSTR pszPath,
size_t cchPath, PCWSTR pszExt);
63 WINPR_API HRESULT UnixPathCchAppendA(PSTR pszPath,
size_t cchPath, PCSTR pszMore);
66 WINPR_API HRESULT UnixPathCchAppendW(PWSTR pszPath,
size_t cchPath, PCWSTR pszMore);
69 WINPR_API HRESULT UnixPathAllocCombineA(PCSTR pszPathIn, PCSTR pszMore,
unsigned long dwFlags,
73 WINPR_API HRESULT UnixPathAllocCombineW(PCWSTR pszPathIn, PCWSTR pszMore,
unsigned long dwFlags,
77#define PathCchAddSlash PathCchAddSlashW
78#define PathCchAddSlashEx PathCchAddSlashExW
79#define UnixPathCchAddExtension UnixPathCchAddExtensionW
80#define UnixPathCchAppend UnixPathCchAppendW
81#define UnixPathAllocCombine UnixPathAllocCombineW
83#define PathCchAddSlash PathCchAddSlashA
84#define PathCchAddSlashEx PathCchAddSlashExA
85#define UnixPathCchAddExtension UnixPathCchAddExtensionA
86#define UnixPathCchAppend UnixPathCchAppendA
87#define UnixPathAllocCombine UnixPathAllocCombineA
93 WINPR_API HRESULT PathCchAddSeparatorA(PSTR pszPath,
size_t cchPath);
96 WINPR_API HRESULT PathCchAddSeparatorW(PWSTR pszPath,
size_t cchPath);
99 WINPR_API HRESULT PathCchAddSeparatorExA(PSTR pszPath,
size_t cchPath, PSTR* ppszEnd,
100 size_t* pcchRemaining);
103 WINPR_API HRESULT PathCchAddSeparatorExW(PWSTR pszPath,
size_t cchPath, PWSTR* ppszEnd,
104 size_t* pcchRemaining);
107 WINPR_API HRESULT NativePathCchAddExtensionA(PSTR pszPath,
size_t cchPath, PCSTR pszExt);
110 WINPR_API HRESULT NativePathCchAddExtensionW(PWSTR pszPath,
size_t cchPath, PCWSTR pszExt);
113 WINPR_API HRESULT NativePathCchAppendA(PSTR pszPath,
size_t cchPath, PCSTR pszMore);
116 WINPR_API HRESULT NativePathCchAppendW(PWSTR pszPath,
size_t cchPath, PCWSTR pszMore);
119 WINPR_API HRESULT NativePathAllocCombineA(PCSTR pszPathIn, PCSTR pszMore,
unsigned long dwFlags,
123 WINPR_API HRESULT NativePathAllocCombineW(PCWSTR pszPathIn, PCWSTR pszMore,
124 unsigned long dwFlags, PWSTR* ppszPathOut);
127#define PathCchAddSeparator PathCchAddSeparatorW
128#define PathCchAddSeparatorEx PathCchAddSeparatorExW
129#define NativePathCchAddExtension NativePathCchAddExtensionW
130#define NativePathCchAppend NativePathCchAppendW
131#define NativePathAllocCombine NativePathAllocCombineW
133#define PathCchAddSeparator PathCchAddSeparatorA
134#define PathCchAddSeparatorEx PathCchAddSeparatorExA
135#define NativePathCchAddExtension NativePathCchAddExtensionA
136#define NativePathCchAppend NativePathCchAppendA
137#define NativePathAllocCombine NativePathAllocCombineA
142#define PATH_STYLE_WINDOWS 0x00000001
143#define PATH_STYLE_UNIX 0x00000002
144#define PATH_STYLE_NATIVE 0x00000003
146#define PATH_SHARED_LIB_EXT_WITH_DOT 0x00000001
147#define PATH_SHARED_LIB_EXT_APPLE_SO 0x00000002
148#define PATH_SHARED_LIB_EXT_EXPLICIT 0x80000000
149#define PATH_SHARED_LIB_EXT_EXPLICIT_DLL 0x80000001
150#define PATH_SHARED_LIB_EXT_EXPLICIT_SO 0x80000002
151#define PATH_SHARED_LIB_EXT_EXPLICIT_DYLIB 0x80000003
154 WINPR_API HRESULT PathCchConvertStyleA(PSTR pszPath,
size_t cchPath,
unsigned long dwFlags);
156 WINPR_API HRESULT PathCchConvertStyleW(PWSTR pszPath,
size_t cchPath,
unsigned long dwFlags);
159 WINPR_API
char PathGetSeparatorA(
unsigned long dwFlags);
162 WINPR_API WCHAR PathGetSeparatorW(
unsigned long dwFlags);
165 WINPR_API PCSTR PathGetSharedLibraryExtensionA(
unsigned long dwFlags);
168 WINPR_API PCWSTR PathGetSharedLibraryExtensionW(
unsigned long dwFlags);
171#define PathCchConvertStyle PathCchConvertStyleW
172#define PathGetSeparator PathGetSeparatorW
173#define PathGetSharedLibraryExtension PathGetSharedLibraryExtensionW
175#define PathCchConvertStyle PathCchConvertStyleA
176#define PathGetSeparator PathGetSeparatorW
177#define PathGetSharedLibraryExtension PathGetSharedLibraryExtensionA
192 KNOWN_PATH_XDG_DATA_HOME = 3,
193 KNOWN_PATH_XDG_CONFIG_HOME = 4,
194 KNOWN_PATH_XDG_CACHE_HOME = 5,
195 KNOWN_PATH_XDG_RUNTIME_DIR = 6,
196 KNOWN_PATH_SYSTEM_CONFIG_HOME = 7
217 WINPR_ATTR_MALLOC(free, 1)
218 WINPR_API
char* winpr_GetConfigFilePath(BOOL system, const
char* filename);
229 WINPR_ATTR_MALLOC(free, 1)
230 WINPR_ATTR_FORMAT_ARG(2, 3)
231 WINPR_API
char* winpr_GetConfigFilePathV(BOOL system, WINPR_FORMAT_ARG const
char* filename,
244 WINPR_ATTR_MALLOC(free, 1)
245 WINPR_ATTR_FORMAT_ARG(2, 0)
246 WINPR_API
char* winpr_GetConfigFilePathVA(BOOL system, WINPR_FORMAT_ARG const
char* filename,
259 WINPR_API WINPR_JSON* winpr_GetJSONConfigFile(BOOL system, const
char* filename);
262 WINPR_API const
char* GetKnownPathIdString(
int id);
271 WINPR_ATTR_MALLOC(free, 1)
272 WINPR_API
char* GetKnownPath(eKnownPathTypes
id);
274 WINPR_ATTR_MALLOC(free, 1)
275 WINPR_API
char* GetKnownSubPath(eKnownPathTypes
id, const
char* path);
285 WINPR_ATTR_MALLOC(free, 1)
286 WINPR_ATTR_FORMAT_ARG(2, 3)
287 WINPR_API
char* GetKnownSubPathV(eKnownPathTypes
id, const
char* path, ...);
298 WINPR_ATTR_MALLOC(free, 1)
299 WINPR_ATTR_FORMAT_ARG(2, 0)
300 WINPR_API
char* GetKnownSubPathVA(eKnownPathTypes
id, const
char* path, va_list ap);
302 WINPR_ATTR_MALLOC(free, 1)
303 WINPR_API
char* GetEnvironmentPath(
char* name);
305 WINPR_ATTR_MALLOC(free, 1)
306 WINPR_API
char* GetEnvironmentSubPath(
char* name, const
char* path);
316 WINPR_ATTR_MALLOC(free, 1)
317 WINPR_ATTR_FORMAT_ARG(2, 3)
318 WINPR_API
char* GetEnvironmentSubPathV(
char* name, WINPR_FORMAT_ARG const
char* path, ...);
330 WINPR_ATTR_MALLOC(free, 1)
331 WINPR_ATTR_FORMAT_ARG(2, 0)
332 WINPR_API
char* GetEnvironmentSubPathVA(
char* name, WINPR_FORMAT_ARG const
char* path,
335 WINPR_ATTR_MALLOC(free, 1)
336 WINPR_API
char* GetCombinedPath(const
char* basePath, const
char* subPath);
350 WINPR_ATTR_MALLOC(free, 1)
351 WINPR_ATTR_FORMAT_ARG(2, 3)
352 WINPR_API
char* GetCombinedPathV(const
char* basePath, WINPR_FORMAT_ARG const
char* subPathFmt,
367 WINPR_ATTR_MALLOC(free, 1)
368 WINPR_ATTR_FORMAT_ARG(2, 0)
369 WINPR_API
char* GetCombinedPathVA(const
char* basePath, WINPR_FORMAT_ARG const
char* subPathFmt,
373 WINPR_API BOOL PathMakePathA(LPCSTR path, LPSECURITY_ATTRIBUTES lpAttributes);
376 WINPR_API BOOL PathMakePathW(LPCWSTR path, LPSECURITY_ATTRIBUTES lpAttributes);
378#if !defined(_WIN32) || defined(_UWP)
381 WINPR_API BOOL PathIsRelativeA(LPCSTR pszPath);
384 WINPR_API BOOL PathIsRelativeW(LPCWSTR pszPath);
387 WINPR_API BOOL PathFileExistsA(LPCSTR pszPath);
390 WINPR_API BOOL PathFileExistsW(LPCWSTR pszPath);
393 WINPR_API BOOL PathIsDirectoryEmptyA(LPCSTR pszPath);
396 WINPR_API BOOL PathIsDirectoryEmptyW(LPCWSTR pszPath);
399#define PathFileExists PathFileExistsW
400#define PathIsDirectoryEmpty PathIsDirectoryEmptyW
402#define PathFileExists PathFileExistsA
403#define PathIsDirectoryEmpty PathIsDirectoryEmptyA
409 WINPR_API BOOL winpr_MoveFile(LPCSTR lpExistingFileName, LPCSTR lpNewFileName);
412 WINPR_API BOOL winpr_MoveFileEx(LPCSTR lpExistingFileName, LPCSTR lpNewFileName, DWORD dwFlags);
414 WINPR_API BOOL winpr_DeleteFile(
const char* lpFileName);
416 WINPR_API BOOL winpr_RemoveDirectory(LPCSTR lpPathName);
418 WINPR_API BOOL winpr_RemoveDirectory_RecursiveA(LPCSTR lpPathName);
420 WINPR_API BOOL winpr_RemoveDirectory_RecursiveW(LPCWSTR lpPathName);
423 WINPR_API BOOL winpr_PathFileExists(
const char* pszPath);
426 WINPR_API BOOL winpr_PathMakePath(
const char* path, LPSECURITY_ATTRIBUTES lpAttributes);
WINPR_API void WINPR_JSON_Delete(WINPR_JSON *item)
Delete a WinPR JSON wrapper object.