Provided by: manpages-pl-dev_4.19.0-7_all bug

NAZWA

       getgrnam, getgrnam_r, getgrgid, getgrgid_r - odczytanie wpisu z pliku grup

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #include <sys/types.h>
       #include <grp.h>

       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 wskaźnik do struktury, zawierającej pola powstałe z rozłożenia
       tego rekordu z bazy danych o grupach (na przykład z lokalnego pliku grup /etc/group albo z
       NIS-a lub LDAP-a), który odpowiada grupie o nazwie name.

       Funkcja  getgrgid()  zwraca wskaźnik do struktury, zawierającej pola powstałe z rozłożenia
       tego rekordu bazy danych o grupach, który odpowiada grupie o identyfikatorze gid.

       Strukturę group zdefiniowano w <grp.h> następująco:

           struct group {
               char   *gr_name;      /* nazwa grupy */
               char   *gr_passwd;    /* hasło grupy */
               gid_t   gr_gid;       /* identyfikator grupy */
               char  **gr_mem;       /* zakończona NULL-em tablica wskaźników
                                        do nazw członków grupy */
           };

       Więcej informacji o polach w tej strukturze można znaleźć w podręczniku group(5).

       Funkcje  getgrnam_r()  i  getgrgid_r()  zwracają  te  same  informacje,  co  getgrnam()  i
       getgrgid(),  ale zapisują pobraną strukturę group w przestrzeni wskazywanej przez argument
       grp. Pola tekstowe, na które wskazują członkowie struktury group są przekazywane w buforze
       buf  o  rozmiarze buflen. W zmiennej *result jest zapisywany wskaźnik do wyniku funkcji (w
       przypadku powodzenia) lub NULL (jeśli nie znaleziono wpisu w bazie lub gdy wystąpił błąd).

       Wywołanie

           sysconf(_SC_GETGR_R_SIZE_MAX)

       zwraca albo -1, bez zmieniania wartości errno,  albo  początkowy  sugerowany  rozmiar  dla
       bufora  buf.  (Jeśli  ten rozmiar jest za mały, to opisywane funkcje  zwrócą błąd ERANGE -
       wtedy proces wywołujący powinien spróbować ponownie z większym buforem).

WARTOŚĆ 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.

       Zwrócona  wartość  może  wskazywać  na  statyczny  obszar,  który może być nadpisany przez
       kolejne wywołania getgrent(3), getgrgid() lub getgrnam(). (Zwróconego wskaźnika nie należy
       przekazywać do funkcji free(3)).

       getgrnam_r()  i  getgrgid_r(),  jeśli się powiodą, to zwracają zero i ustawiają *result na
       grp. Jeśli nie znaleziono pasującego rekordu w  bazie  haseł,  to  funkcje  zwracają  0  i
       wpisują  NULL  do  *result.  W  przypadku  błędu zawracany jest numer błędu i *result jest
       ustawiany na NULL.

BŁĘDY

       0 or ENOENT or ESRCH or EBADF or EPERM or ...
              Podany argument name lub gid nie został znaleziony.

       EINTR  Przechwycono sygnał, patrz signal(7).

       EIO    Błąd wejścia/wyjścia.

       EMFILE Zostało  osiągnięte  ograniczenie  na  liczbę  otwartych  deskryptorów  plików  dla
              procesu.

       ENFILE Zostało osiągnięte systemowe ograniczenie na całkowitą liczbę otwartych plików.

       ENOMEM Zabrakło pamięci na przydzielenie struktury group.

       ERANGE Przekazano niewystarczający bufor.

PLIKI

       /etc/group
              lokalny plik bazy grup

ATRYBUTY

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

       ┌──────────────┬────────────────────────┬─────────────────────────────────────────────────┐
       │InterfejsAtrybutWartość                                         │
       ├──────────────┼────────────────────────┼─────────────────────────────────────────────────┤
       │getgrnam()    │ Bezpieczeństwo wątkowe │ MT-Unsafe race:grnam locale                     │
       ├──────────────┼────────────────────────┼─────────────────────────────────────────────────┤
       │getgrgid()    │ Bezpieczeństwo wątkowe │ MT-Unsafe race:grgid locale                     │
       ├──────────────┼────────────────────────┼─────────────────────────────────────────────────┤
       │getgrnam_r(), │ Bezpieczeństwo wątkowe │ MT-Safe locale                                  │
       │getgrgid_r()  │                        │                                                 │
       └──────────────┴────────────────────────┴─────────────────────────────────────────────────┘

STANDARDY

       POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.

UWAGI

       Sformułowania  podane  w  rozdziale  "WARTOŚĆ ZWRACANA" pochodzą ze standardu POSIX.1. Nie
       uwzględnia on jednak sytuacji "nie znaleziono wpisu w  bazie"  jako  błąd  i  dlatego  nie
       określa,  jaką  wartość  powinno  mieć  errno  w takim przypadku. Jednakże uniemożliwia to
       rozpoznawanie błędów. Można by dowodzić, że zgodnie  ze  standardem  POSIX  errno  powinno
       pozostać  niezmienione, jeśli nie znaleziono wpisu. Eksperymentalnie stwierdzono, że różne
       systemy uniksowe ustawiają różne wartości: 0, ENOENT, EBADF, ESRCH, EWOULDBLOCK,  EPERM  i
       być może jeszcze jakieś inne.

ZOBACZ TAKŻE

       endgrent(3), fgetgrent(3), getgrent(3), getpwnam(3), setgrent(3), group(5)

TŁUMACZENIE

       Autorami  polskiego  tłumaczenia  niniejszej strony podręcznika są: Andrzej Krzysztofowicz
       <ankry@green.mf.pg.gda.pl> i Robert Luberda <robert@debian.org>

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