Provided by:
manpages-pl-dev_20060617-1_all 
NAZWA
dirname, basename - wydzielenie składników nazwy ścieżki dostępu
SKŁADNIA
#include <libgen.h>
char *dirname(char *path);
char *basename(char *path);
OPIS
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
SUSv2
ZOBACZ TAKŻE
dirname(1), basename(1),