62template <
typename Character>
64static Character*
__cdecl common_getpath(
67 size_t const result_count
79 Character
const* source_it = delimited_paths;
82 while (*source_it ==
';')
87 Character
const*
const source_first = source_it;
89 Character* result_it =
result;
90 Character*
const result_last =
result + result_count - 1;
92#pragma warning(suppress:__WARNING_POTENTIAL_BUFFER_OVERFLOW_NULLTERMINATED)
93 while (*source_it !=
'\0' && *source_it !=
';')
95 if (*source_it ==
'"')
101 while (*source_it !=
'\0' && *source_it !=
'"')
103#pragma warning(suppress:__WARNING_POTENTIAL_BUFFER_OVERFLOW_HIGH_PRIORITY)
104 *result_it++ = *source_it++;
105 if (result_it == result_last)
113 if (*source_it !=
'\0')
120 *result_it++ = *source_it++;
121 if (result_it == result_last)
132 while (*source_it ==
';')
138 return source_it == source_first
140 :
const_cast<Character*
>(source_it);
144 char const*
const delimited_paths,
146 size_t const result_count
149 return common_getpath(delimited_paths,
result, result_count);
153 wchar_t const*
const delimited_paths,
155 size_t const result_count
158 return common_getpath(delimited_paths,
result, result_count);
char *__cdecl __acrt_getpath(char const *const delimited_paths, char *const result, size_t const result_count)
size_t const result_count throw()
wchar_t *__cdecl __acrt_wgetpath(wchar_t const *const delimited_paths, wchar_t *const result, size_t const result_count)
#define _VALIDATE_RETURN_NOEXC(expr, errorcode, retexpr)
#define _Out_writes_z_(s)