basename(3) Library Functions Manual basename(3) NUME basename, dirname - analizeaza componentele numelui rutei BIBLIOTECA Biblioteca C standard (libc, -lc) REZUMAT #include char *dirname(char *ruta); char *basename(char *ruta); DESCRIERE Atenie: exista doua funcii diferite basename(); a se vedea mai jos. Funciile dirname() i basename() descompun un ir de nume de ruta cu terminaie nula in componentele director i nume de fiier. In cazul obinuit, dirname() returneaza irul pana la ,,/" final, dar fara a-l include, iar basename() returneaza componenta care urmeaza dupa ,,/" final. Caracterele ,,/" de la sfarit nu sunt considerate ca facand parte din numele de ruta. Daca ruta nu conine o bara oblica, dirname() returneaza irul ,,.", in timp ce basename() returneaza o copie a rutei. Daca ruta este irul ,,/", atunci atat dirname(), cat i basename() returneaza irul ,,/". Daca ruta este un indicator nul sau indica un ir gol, atunci atat dirname(), cat i basename() returneaza irul ,,.". Concatenand irul returnat de dirname(), un ,,/" i irul returnat de basename() se obine un nume de ruta complet. Atat dirname(), cat i basename() pot modifica coninutul rutei, astfel incat poate fi de dorit sa se transfere o copie atunci cand se apeleaza una dintre aceste funcii. Aceste funcii pot returna indicatori catre memoria alocata static, care poate fi suprascrisa de apelurile ulterioare. Alternativ, ele pot returna un indicator catre o parte din ruta, astfel incat irul la care face referire ruta sa nu fie modificat sau eliberat pana cand indicatorul returnat de funcie nu mai este necesar. Urmatoarea lista de exemple (preluata din SUSv2) prezinta irurile de caractere returnate de dirname() i basename() pentru diferite rute: ruta dirname basename /usr/lib /usr lib /usr/ / usr usr . usr / / / . . . .. . .. VALOAREA RETURNATA Atat dirname(), cat i basename() returneaza indicatori catre iruri de caractere cu terminaie nula; (nu pasai aceti indicatori la free(3)). ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +--------------------------------------+---------------------+---------+ |Interfaa | Atribut | Valoare | +--------------------------------------+---------------------+---------+ |basename(), dirname() | Sigurana firelor | MT-Safe | +--------------------------------------+---------------------+---------+ VERSIUNI Exista doua versiuni diferite ale basename() - versiunea POSIX descrisa mai sus i versiunea GNU, care se obine dupa definirea acesteia: #define _GNU_SOURCE /* Consultai feature_test_macros(7) */ #include Versiunea GNU nu-i modifica niciodata argumentul i returneaza irul gol atunci cand ruta are o bara oblica la sfarit i, in special, atunci cand este ,,/". Nu exista o versiune GNU a dirname(). Cu glibc, se obine versiunea POSIX a basename() atunci cand este inclus, iar in caz contrar, versiunea GNU. STANDARDE POSIX.1-2008. ISTORIC POSIX.1-2001. ERORI In implementarea glibc, versiunile POSIX ale acestor funcii modifica argumentul ruta i genereaza o eroare de segmentare atunci cand sunt apelate cu un ir static, cum ar fi ,,/usr/". Inainte de glibc 2.2.1, versiunea glibc a dirname() nu gestiona corect numele de ruta cu caractere ,,/" la sfarit i genera o eroare de segmentare daca primea un argument NULL. EXEMPLE Urmatorul fragment de cod demonstreaza 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); CONSULTAI I basename(1), dirname(1) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.06 31 octombrie 2023 basename(3)