Provided by: manpages-pl-dev_4.18.1-1_all bug

NAZWA

       basename, dirname - wydzielenie składników nazwy ścieżki

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #include <libgen.h>

       char *dirname(char *path);
       char *basename(char *path);

OPIS

       Ostrzeżenie: istnieją dwie różne funkcje basename(); patrz niżej.

       The  functions  dirname()   and  basename()   break a null-terminated pathname string into
       directory and filename components.  In the usual case, dirname()  returns  the  string  up
       to,  but not including, the final '/', and basename()  returns the component following the
       final '/'.  Trailing '/' characters are not counted as part of the pathname.

       Jeśli path nie zawiera ukośnika, dirname() zwraca  łańcuch  ".",  podczas  gdy  basename()
       zwraca  kopię  path. Jeśli path jest łańcuchem "/", to 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()  z  "/"  i  łańcuchem  zwróconym  przez
       basename() daje pełną nazwę ścieżki dostępu.

       Zarówno dirname(), jak i basename()  mogą  zmienić  zawartość  path,  tak  więc  może  być
       potrzebne przekazanie kopii podczas wywoływania którejkolwiek z tych funkcji.

       Funkcje  te  mogą  zwrócić  wskaźniki  do statycznie alokowanej pamięci, która może zostać
       nadpisana przez kolejne wywołania. Alternatywnie mogą zwrócić wskaźniki  do  części  path,
       tak że łańcuch znaków wskazywany przez path nie powinien być ani zmieniany, ani usuwany aż
       do momentu, w którym wskaźnik zwrócony przez opisywane funkcje nie będzie już potrzebny.

       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
              /           /         /
              .           .         .
              ..          .         ..

WARTOŚĆ ZWRACANA

       Zarówno  dirname(),  jak  i  basename()  zwracają  wskaźniki  do zakończonych znakiem null
       łańcuchów znaków (nie należy tych wskaźników przekazywać do free(3)).

ATRYBUTY

       Informacje  o  pojęciach  używanych  w  tym  rozdziale   można   znaleźć   w   podręczniku
       attributes(7).

       ┌──────────────────────────────────────────────────────┬────────────────────────┬─────────┐
       │InterfejsAtrybutWartość │
       ├──────────────────────────────────────────────────────┼────────────────────────┼─────────┤
       │basename(), dirname()                                 │ Bezpieczeństwo wątkowe │ MT-Safe │
       └──────────────────────────────────────────────────────┴────────────────────────┴─────────┘

STANDARDY

       POSIX.1-2001, POSIX.1-2008.

UWAGI

       Istnieją  dwie  różne  wersji funkcji basename(): wersja POSIX opisana powyżej oraz wersja
       GNU, która jest dostępna po

               #define _GNU_SOURCE         /* Patrz feature_test_macros(7) */
           #include <string.h>

       Wersja GNU nigdy nie zmienia swojego argumentu oraz zwraca  pusty  łańcuch  znaków,  jeśli
       path  kończy  się  znakiem ukośnika, w szczególności gdy path jest równe "/". Nie istnieje
       wersja GNU funkcji dirname().

       W bibliotece GNU wersja POSIX funkcji basename() jest używana,  gdy  dołączony  jest  plik
       nagłówkowy <libgen.h>. W przeciwnym wypadku używana jest wersja GNU.

BŁĘDY

       W  implementacji biblioteki glibc POSIX-owych wersji tych funkcji modyfikują argument path
       i powodują błąd naruszenia ochrony pamięci,  jeśli  są  wywołane  z  statycznym  łańcuchem
       znaków takim jak "/usr/".

       Before  glibc  2.2.1,  the  glibc version of dirname()  did not correctly handle pathnames
       with trailing '/' characters, and generated a segfault if given a NULL argument.

PRZYKŁADY

       Następujący przykładowy kod pokazuje użycie funkcji basename() i dirname():
           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);

ZOBACZ TAKŻE

       basename(1), dirname(1)

TŁUMACZENIE

       Autorami polskiego tłumaczenia niniejszej strony podręcznika  są:  Andrzej  Krzysztofowicz
       <ankry@green.mf.pg.gda.pl>,   Robert   Luberda   <robert@debian.org>   i   Michał   Kułach
       <michal.kulach@gmail.com>

       Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe  informacje  o  warunkach  licencji
       można   uzyskać   zapoznając   się   z   GNU   General   Public   License   w   wersji   3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  lub  nowszej.  Nie   przyjmuje   się   ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy  w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres listy dyskusyjnej
       ⟨manpages-pl-list@lists.sourceforge.net⟩.