getgrnam

GETGRNAM(3)              Podręcznik programisty Linuksa              GETGRNAM(3)



NAZWA
       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 *restrict name, struct group *restrict grp,
                      char *restrict buf, size_t buflen,
                      struct group **restrict result);
       int getgrgid_r(gid_t gid, struct group *restrict grp,
                      char *restrict buf, 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 <= 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).

       ┌──────────────┬────────────────────────┬────────────────────────────────┐
       │Interfejs     Atrybut                Wartość                        │
       ├──────────────┼────────────────────────┼────────────────────────────────┤
       │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 5.11 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 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
       manpages-pl-list@lists.sourceforge.net ⟨⟩.



                                22 marca 2021 r.                     GETGRNAM(3)