2#include <winpr/wtypes.h>
12HRESULT PATH_CCH_ADD_SEPARATOR_EX(PWSTR pszPath,
size_t cchPath, WINPR_ATTR_UNUSED PWSTR* ppszEnd,
13 WINPR_ATTR_UNUSED
size_t* pcchRemaining)
15 WINPR_ASSERT(pszPath || (cchPath == 0));
19 const size_t pszPathLength = _wcsnlen(pszPath, cchPath);
20 if (pszPathLength < 1)
23 if (pszPath[pszPathLength - 1] == CUR_PATH_SEPARATOR_CHR)
26 if (cchPath > (pszPathLength + 1))
28 pszPath[pszPathLength] = CUR_PATH_SEPARATOR_CHR;
29 pszPath[pszPathLength + 1] =
'\0';
34 return HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER);
39HRESULT PATH_CCH_ADD_SEPARATOR_EX(WINPR_ATTR_UNUSED PSTR pszPath, WINPR_ATTR_UNUSED
size_t cchPath,
40 WINPR_ATTR_UNUSED PSTR* ppszEnd,
41 WINPR_ATTR_UNUSED
size_t* pcchRemaining)
43 WINPR_ASSERT(pszPath || (cchPath == 0));
47 const size_t pszPathLength = strnlen(pszPath, cchPath);
48 if (pszPathLength < 1)
51 if (pszPath[pszPathLength - 1] == CUR_PATH_SEPARATOR_CHR)
54 if (cchPath > (pszPathLength + 1))
56 pszPath[pszPathLength] = CUR_PATH_SEPARATOR_CHR;
57 pszPath[pszPathLength + 1] =
'\0';
62 return HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER);