FreeRDP
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Modules Pages
PathCchAddSeparator.h
1
2/*
3#define DEFINE_UNICODE FALSE
4#define CUR_PATH_SEPARATOR_CHR '\\'
5#define PATH_CCH_ADD_SEPARATOR PathCchAddBackslashA
6*/
7
8#if DEFINE_UNICODE
9
10HRESULT PATH_CCH_ADD_SEPARATOR(PWSTR pszPath, size_t cchPath)
11{
12 size_t pszPathLength;
13
14 if (!pszPath)
15 return E_INVALIDARG;
16
17 pszPathLength = _wcslen(pszPath);
18
19 if (pszPath[pszPathLength - 1] == CUR_PATH_SEPARATOR_CHR)
20 return S_FALSE;
21
22 if (cchPath > (pszPathLength + 1))
23 {
24 pszPath[pszPathLength] = CUR_PATH_SEPARATOR_CHR;
25 pszPath[pszPathLength + 1] = '\0';
26
27 return S_OK;
28 }
29
30 return HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER);
31}
32
33#else
34
35HRESULT PATH_CCH_ADD_SEPARATOR(PSTR pszPath, size_t cchPath)
36{
37 size_t pszPathLength;
38
39 if (!pszPath)
40 return E_INVALIDARG;
41
42 pszPathLength = strlen(pszPath);
43
44 if (pszPath[pszPathLength - 1] == CUR_PATH_SEPARATOR_CHR)
45 return S_FALSE;
46
47 if (cchPath > (pszPathLength + 1))
48 {
49 pszPath[pszPathLength] = CUR_PATH_SEPARATOR_CHR;
50 pszPath[pszPathLength + 1] = '\0';
51
52 return S_OK;
53 }
54
55 return HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER);
56}
57
58#endif
59
60/*
61#undef DEFINE_UNICODE
62#undef CUR_PATH_SEPARATOR_CHR
63#undef PATH_CCH_ADD_SEPARATOR
64*/