oracular (3) getgrnam_r.3.gz

Provided by: manpages-pl-dev_4.23.1-1_all bug

NAZWA

       getgrnam, getgrnam_r, getgrgid, getgrgid_r - odczytuje wpis 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.

       Struktura group jest następująco zdefiniowana w pliku <grp.h>:

           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ą errno, wskazując błąd.
       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-niebezpieczne race:grnam locale                │
       ├───────────────────────────┼────────────────────────┼───────────────────────────────────────────────────┤
       │getgrgid()                 │ Bezpieczeństwo wątkowe │ MT-niebezpieczne race:grgid locale                │
       ├───────────────────────────┼────────────────────────┼───────────────────────────────────────────────────┤
       │getgrnam_r(), getgrgid_r() │ Bezpieczeństwo wątkowe │ MT-bezpieczne locale                              │
       └───────────────────────────┴────────────────────────┴───────────────────────────────────────────────────┘

WERSJE

       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.

STANDARDY

       POSIX.1-2008.

HISTORIA

       POSIX.1-2001, SVr4, 4.3BSD.

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