Provided by: manpages-ro-dev_4.27.0-1_all bug

NUME

       basename, dirname - analizează componentele numelui rutei

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #include <libgen.h>

       char *dirname(char *ruta);
       char *basename(char *ruta);

DESCRIERE

       Atenție: există două funcții diferite basename(); a se vedea mai jos.

       Funcțiile  dirname()  și  basename()  descompun un șir de nume de rută cu terminație nulă în componentele
       director și nume de fișier. În cazul obișnuit, dirname() returnează șirul până la „/” final, dar fără a-l
       include, iar basename() returnează componenta care urmează după „/” final. Caracterele „/” de la  sfârșit
       nu sunt considerate ca făcând parte din numele de rută.

       Dacă  ruta  nu  conține o bară oblică, dirname() returnează șirul „.”, în timp ce basename() returnează o
       copie a rutei. Dacă ruta este șirul „/”, atunci atât dirname(), cât și basename() returnează  șirul  „/”.
       Dacă  ruta  este  un  indicator  nul  sau  indică  un  șir  gol, atunci atât dirname(), cât și basename()
       returnează șirul „.”.

       Concatenând șirul returnat de dirname(), un „/” și șirul returnat de basename() se obține un nume de rută
       complet.

       Atât dirname(), cât și basename() pot modifica conținutul rutei, astfel încât poate fi  de  dorit  să  se
       transfere o copie atunci când se apelează una dintre aceste funcții.

       Aceste  funcții  pot  returna  indicatori  către  memoria  alocată  static,  care poate fi suprascrisă de
       apelurile ulterioare. Alternativ, ele pot returna un indicator către o parte din rută, astfel încât șirul
       la care face referire ruta să nu fie modificat sau eliberat până când indicatorul returnat de funcție  nu
       mai este necesar.

       Următoarea listă de exemple (preluată din SUSv2) prezintă șirurile de caractere returnate de dirname() și
       basename() pentru diferite rute:
              ruta       dirname   basename
              /usr/lib   /usr      lib
              /usr/      /         usr
              usr        .         usr
              /          /         /
              .          .         .
              ..         .         ..

VALOAREA RETURNATĂ

       Atât dirname(), cât și basename() returnează indicatori către șiruri de caractere cu terminație nulă; (nu
       pasați acești indicatori la free(3)).

ATRIBUTE

       Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
       ┌─────────────────────────────────────────────────────────────────────────┬───────────────────┬─────────┐
       │ InterfațăAtributValoare │
       ├─────────────────────────────────────────────────────────────────────────┼───────────────────┼─────────┤
       │ basename(), dirname()                                                   │ Siguranța firelor │ MT-Safe │
       └─────────────────────────────────────────────────────────────────────────┴───────────────────┴─────────┘

VERSIUNI

       Există două versiuni diferite ale basename() - versiunea POSIX descrisă mai sus și versiunea GNU, care se
       obține după definirea acesteia:

               #define _GNU_SOURCE         /* Consultați feature_test_macros(7) */
           #include <string.h>

       Versiunea  GNU  nu-și  modifică  niciodată argumentul și returnează șirul gol atunci când ruta are o bară
       oblică la sfârșit și, în special, atunci când este „/”. Nu există o versiune GNU a dirname().

       Cu glibc, se obține versiunea POSIX a basename() atunci când <libgen.h> este inclus, iar în caz  contrar,
       versiunea GNU.

STANDARDE

       POSIX.1-2008.

ISTORIC

       POSIX.1-2001.

ERORI

       În  implementarea  glibc,  versiunile  POSIX  ale acestor funcții modifică argumentul ruta și generează o
       eroare de segmentare atunci când sunt apelate cu un șir static, cum ar fi „/usr/”.

       Înainte de glibc 2.2.1, versiunea glibc a dirname() nu gestiona corect numele de rută cu caractere „/” la
       sfârșit și genera o eroare de segmentare dacă primea un argument NULL.

EXEMPLE

       Următorul fragment de cod demonstrează utilizarea 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);

CONSULTAȚI ȘI

       basename(1), dirname(1)

TRADUCERE

       Traducerea   în   limba   română   a   acestui   manual   a   fost   făcută   de   Remus-Gabriel    Chelu
       <remusgabriel.chelu@disroot.org>

       Această  traducere  este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3 sau o
       versiune  ulterioară  cu  privire  la  condiții  privind  drepturile  de  autor.   NU  se   asumă   NICIO
       RESPONSABILITATE.

       Dacă  găsiți  erori  în  traducerea  acestui manual, vă rugăm să trimiteți un e-mail la translation-team-
       ro@lists.sourceforge.net.

Pagini de manual de Linux 6.9.1                   15 iunie 2024                                      basename(3)