table of contents
other languages
other sections
DIRNAME(3) | Podręcznik programisty Linuksa | DIRNAME(3) |
NAZWA¶
dirname, basename - wydzielenie składników nazwy ścieżki dostępuSKŁADNIA¶
#include <libgen.h>char *dirname(char *path); char *basename(char *path);
OPIS¶
Uwaga! To tłumaczenie może być nieaktualne! Funkcje dirname i basename rozbijają zakończony znakiem null łańcuch nazwy ścieżki dostępu na składowe: katalog i nazwę pliku. W typowym przypadku dirname zwraca łańcuch aż do ostatniego znaku '/', ale z jego wyłączeniem, a basename zwraca składową następującą po ostatnim '/'. Końcowe znaki '/' nie są uważane za część nazwy ścieżki dostępu. Jeśli path nie zawiera ukośnika, dirname zwraca łańcuch ".", podczas gdy basename zwraca kopię path. Jeśli path jest łańcuchem "/", wówczas zarówno dirname jak i basename zwracają łańcuch "/". Jeśli path jest wskaźnikiem NULL lub wskazuje na pusty łańcuch znaków, to zarówno dirname jak i basename zwracają łańcuch ".". Połączenie łańcucha zwróconego przez dirname, "/" i łańcucha zwróconego przez basename daje pełną nazwę ścieżki dostępu. Zarówno dirname jak i basename mogą modyfikować zawartość path, więc jeżeli chce się zachować łańcuch ścieżki dostępu, to należy przekazywać do tych funkcji jego kopię. Ponadto dirname i basename mogą zwracać wskaźniki do pamięci przydzielonej statycznie, która może być nadpisana następnymi wywołaniami. Poniższa lista przykładów (wzięta z SUSv2) pokazuje łańcuchy znaków zwracane przez dirname i basename dla różnych ścieżek:ścieżka dirname basename "/usr/lib" "/usr" "lib" "/usr/" "/" "usr" "usr" "." "usr" "/" "/" "/" "." "." "." ".." "." ".."
PRZYKŁAD¶
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);
WARTOŚĆ ZWRACANA¶
Zarówno dirname jak i basename zwracają wskaźniki do zakończonych znakiem null łańcuchów znaków.BŁĘDY¶
W wersjach glibc aż do 2.2.1 włącznie, dirname nieprawidłowo obsługuje nazwy ścieżek dostępu z końcowymi znakami '/', i generuje naruszenie segmentacji, gdy poda się NULL jako argument.ZGODNE Z¶
SUSv2ZOBACZ TAKŻE¶
dirname(1), basename(1),INFORMACJE O TŁUMACZENIU¶
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i może nie być aktualne. W razie zauważenia różnic między powyższym opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o zapoznanie się z oryginalną (angielską) wersją strony podręcznika za pomocą polecenia:- man --locale=C 3 basename
2000-12-14 | GNU |