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¶
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¶
SUSv2
ZOBACZ TAKŻE¶
dirname(1),
basename(1),
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
Prosimy o pomoc w aktualizacji stron man - więcej informacji można
znaleźć pod adresem
http://sourceforge.net/projects/manpages-pl/.