getgrnam(3) Library Functions Manual getgrnam(3) NAZWA getgrnam, getgrnam_r, getgrgid, getgrgid_r - odczytanie wpisu z pliku grup BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA #include #include struct group *getgrnam(const char *name); struct group *getgrgid(gid_t gid); int getgrnam_r(const char *restrict name, struct group *restrict grp, char buf[restrict .buflen], size_t buflen, struct group **restrict result); int getgrgid_r(gid_t gid, struct group *restrict grp, char buf[restrict .buflen], size_t buflen, struct group **restrict result); Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)): getgrnam_r(), getgrgid_r(): _POSIX_C_SOURCE || /* glibc w wersji <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE OPIS Funkcja getgrnam() zwraca wskaznik do struktury, zawierajacej pola powstale z rozlozenia tego rekordu z bazy danych o grupach (na przyklad z lokalnego pliku grup /etc/group albo z NIS-a lub LDAP-a), ktory odpowiada grupie o nazwie name. Funkcja getgrgid() zwraca wskaznik do struktury, zawierajacej pola powstale z rozlozenia tego rekordu bazy danych o grupach, ktory odpowiada grupie o identyfikatorze gid. Strukture group zdefiniowano w nastepujaco: struct group { char *gr_name; /* nazwa grupy */ char *gr_passwd; /* haslo grupy */ gid_t gr_gid; /* identyfikator grupy */ char **gr_mem; /* zakonczona NULL-em tablica wskaznikow do nazw czlonkow grupy */ }; Wiecej informacji o polach w tej strukturze mozna znalezc w podreczniku group(5). Funkcje getgrnam_r() i getgrgid_r() zwracaja te same informacje, co getgrnam() i getgrgid(), ale zapisuja pobrana strukture group w przestrzeni wskazywanej przez argument grp. Pola tekstowe, na ktore wskazuja czlonkowie struktury group sa przekazywane w buforze buf o rozmiarze buflen. W zmiennej *result jest zapisywany wskaznik do wyniku funkcji (w przypadku powodzenia) lub NULL (jesli nie znaleziono wpisu w bazie lub gdy wystapil blad). Wywolanie sysconf(_SC_GETGR_R_SIZE_MAX) zwraca albo -1, bez zmieniania wartosci errno, albo poczatkowy sugerowany rozmiar dla bufora buf. (Jesli ten rozmiar jest za maly, to opisywane funkcje zwroca blad ERANGE - wtedy proces wywolujacy powinien sprobowac ponownie z wiekszym buforem). WARTOSC ZWRACANA The getgrnam() and getgrgid() functions return a pointer to a group structure, or NULL if the matching entry is not found or an error occurs. If an error occurs, errno is set to indicate the error. If one wants to check errno after the call, it should be set to zero before the call. Zwrocona wartosc moze wskazywac na statyczny obszar, ktory moze byc nadpisany przez kolejne wywolania getgrent(3), getgrgid() lub getgrnam(). (Zwroconego wskaznika nie nalezy przekazywac do funkcji free(3)). getgrnam_r() i getgrgid_r(), jesli sie powioda, to zwracaja zero i ustawiaja *result na grp. Jesli nie znaleziono pasujacego rekordu w bazie hasel, to funkcje zwracaja 0 i wpisuja NULL do *result. W przypadku bledu zawracany jest numer bledu i *result jest ustawiany na NULL. BLEDY 0 or ENOENT or ESRCH or EBADF or EPERM or ... Podany argument name lub gid nie zostal znaleziony. EINTR Przechwycono sygnal, patrz signal(7). EIO Blad wejscia/wyjscia. EMFILE Zostalo osiagniete ograniczenie na liczbe otwartych deskryptorow plikow dla procesu. ENFILE Zostalo osiagniete systemowe ograniczenie na calkowita liczbe otwartych plikow. ENOMEM Zabraklo pamieci na przydzielenie struktury group. ERANGE Przekazano niewystarczajacy bufor. PLIKI /etc/group lokalny plik bazy grup ATRYBUTY Informacje o pojeciach uzywanych w tym rozdziale mozna znalezc w podreczniku attributes(7). +--------------+--------------------------+----------------------------+ |Interfejs | Atrybut | Wartosc | +--------------+--------------------------+----------------------------+ |getgrnam() | Bezpieczenstwo watkowe | MT-Unsafe race:grnam | | | | locale | +--------------+--------------------------+----------------------------+ |getgrgid() | Bezpieczenstwo watkowe | MT-Unsafe race:grgid | | | | locale | +--------------+--------------------------+----------------------------+ |getgrnam_r(), | Bezpieczenstwo watkowe | MT-bezpieczne locale | |getgrgid_r() | | | +--------------+--------------------------+----------------------------+ WERSJE Sformulowania podane w rozdziale "WARTOSC ZWRACANA" pochodza ze standardu POSIX.1. Nie uwzglednia on jednak sytuacji "nie znaleziono wpisu w bazie" jako blad i dlatego nie okresla, jaka wartosc powinno miec errno w takim przypadku. Jednakze uniemozliwia to rozpoznawanie bledow. Mozna by dowodzic, ze zgodnie ze standardem POSIX errno powinno pozostac niezmienione, jesli nie znaleziono wpisu. Eksperymentalnie stwierdzono, ze rozne systemy uniksowe ustawiaja rozne wartosci: 0, ENOENT, EBADF, ESRCH, EWOULDBLOCK, EPERM i byc moze jeszcze jakies inne. STANDARDY POSIX.1-2008. HISTORIA POSIX.1-2001, SVr4, 4.3BSD. ZOBACZ TAKZE endgrent(3), fgetgrent(3), getgrent(3), getpwnam(3), setgrent(3), group(5) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Andrzej Krzysztofowicz i Robert Luberda Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.06 31 pazdziernika 2023 r. getgrnam(3)