Provided by: manpages-pl-dev_0.7-2_all bug

NAME

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

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 *name, struct group *grp,
                 char *buf, size_t buflen, struct group **result);

       int getgrgid_r(gid_t gid, struct group *grp,
                 char *buf, size_t buflen, struct group **result);

   Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):

       getgrnam_r(), getgrgid_r():
           _POSIX_C_SOURCE
               || /* Wersje glibc <= 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

       Funkcje getgrnam() i getgrgid() zwracają wskaźnik do struktury group albo NULL, jeśli  nie
       znaleziono pasującego wpisu lub gdy wystąpił błąd. W przypadku wystąpienia błędu ustawiają
       odpowiednią wartość zmiennej errno. Aby móc sprawdzić  wartość  errno  po  wywołaniu  tych
       funkcji, należy ją przed wywołaniem ustawić na zero.

       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 lub ENOENT, lub ESRCH, lub EBADF, lub EPERM, lub ...
              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()  │                        │                             │
       └──────────────┴────────────────────────┴─────────────────────────────┘

ZGODNE Z

       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)

O STRONIE

       Angielska wersja tej strony  pochodzi  z  wydania  4.07  projektu  Linux  man-pages.  Opis
       projektu,  informacje  dotyczące  zgłaszania  błędów oraz najnowszą wersję oryginału można
       znaleźć pod adresem https://www.kernel.org/doc/man-pages/.

TŁUMACZENIE

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

       Polskie  tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na
       stronie  http://sourceforge.net/projects/manpages-pl/.  Jest   zgodne   z   wersją    4.07
       oryginału.

                                            2016-03-15                                GETGRNAM(3)