Найти замену PathAppend для Windows на GNU / Linux - PullRequest
0 голосов
/ 10 июля 2010

C-программирование, есть ли хорошие способы управления строками пути, вместо использования C-строкового API, такого как strcat в linux? Эквивалент PathAppend для Windows был бы великолепен. Спасибо!

1 Ответ

1 голос
/ 10 июля 2010

Вот краткая, непроверенная версия, которая объединяет пути с дружественным 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() вернет ошибку?

Используйте (и / или модифицируйте) на свой страх и риск ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...