FreeRDP
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 
10 HRESULT 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 
35 HRESULT 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 */