Вот краткая, непроверенная версия, которая объединяет пути с дружественным Unix разделителем '/' между ними:
int PathAppend( char* path, char const* more)
{
size_t pathlen = strlen( path);
while (*more == '/') {
/* skip path separators at start of `more` */
++more;
}
/*
* if there's anything to add to the path, make sure there's
* a path separator at the end of it
*/
if (*more && (pathlen > 0) && (path[pathlen - 1] != '/')) {
strcat( path, "/");
}
strcat( path, more);
return 1; /* not sure when this function would 'fail' */
}
Обратите внимание, что, по моему мнению, эта функция должна иметь параметр, который указывает размер назначения. Я также не реализовал документированную функциональность, которую Win32 имеет для удаления "." и ".." компоненты в начале пути (почему это там?).
Кроме того, что может привести к тому, что Win32 PathAppend()
вернет ошибку?
Используйте (и / или модифицируйте) на свой страх и риск ...