00:06 man 3 basename |
НАЗВАНИЕ dirname, basename - обрабатывают элементы пути к файлу СИНТАКСИС #include char *dirname(char *path); char *basename(char *path); ОПИСАНИЕ dirname и basename разбивают путь к файлу (заканчивающийся NULL) на каталоги и имя файла. Обычно, dirname возвращает строку содержащую путь к файлу до последнего знака '/', а basename возвращает строку содержащую часть после последнего знака '/'. Последний знак '/' не считается компонентом пути. Если path не включает в себя слэш, то dirname возвращает строку ".", а basename возвращает копию path. Если path это строка из "/", то dirname и basename возвращают "/". Если path нулевая строка или указывает на нее, то dirname и basename возвращают строку ".". Объеденив строки возвращаемые dirname, и basename можно получить полный путь. Функции dirname и basename могут изменить содержание path, поэтому если вы хотите сохранить путь, то он не должен обрабатываться этими функциями. Более того, dirname и basename могут вернуть указатели на постоянно выделенную память которая может быть перезаписана соответствующими вызовами. Ниже следует список примеров (SUSv2) показывающих строки возвращаемые dirname и basename для различных путей: path dirname basename "/usr/lib" "/usr" "lib" "/usr/" "/" "usr" "usr" "." "usr" "/" "/" "/" "." "." "." ".." "." ".." ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ char *dirc, *basec, *bname, *dname; char *path = "/etc/passwd"; dirc = strdup(path); basec = strdup(path); dname = dirname(dirc); bname = basename(basec); printf("dirname=%s, basename=%s\n", dname, bname); free(dirc); free(basec); ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ Функции dirname и basename возвращает указатели на строки завершающиеся NULL. НАЙДЕННЫЕ ОШИБКИ В версиях glibc включая 2.2.1, dirname не правильно обрабатывает пути оканчивающиеся на '/', и генерирует нарушение элементов пути. СООТВЕТСТВИЕ СТАНДАРТАМ SUSv2 СМ. ТАКЖЕ dirname(1), basename(1), |
|
Всего комментариев: 0 | |