.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk)
.\"
.\" %%%LICENSE_START(VERBATIM)
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one.
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\" %%%LICENSE_END
.\"
.\" References consulted:
.\"     Linux libc source code
.\"     Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\"     386BSD man pages
.\" Modified Sat Jul 24 19:38:44 1993 by Rik Faith (faith@cs.unc.edu)
.TH FGETGRENT 3  2021-03-22 "GNU" "Linux Programmer's Manual"
.SH NAME
fgetgrent \- get group file entry
.SH SYNOPSIS
.nf
.B #include <stdio.h>
.B #include <sys/types.h>
.B #include <grp.h>
.PP
.BI "struct group *fgetgrent(FILE *" stream );
.fi
.PP
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
.PP
.BR fgetgrent ():
.nf
    Since glibc 2.19:
        _DEFAULT_SOURCE
    Glibc 2.19 and earlier:
        _SVID_SOURCE
.fi
.SH DESCRIPTION
The
.BR fgetgrent ()
function returns a pointer to a structure containing
the group information from the file referred to by
.IR stream .
The first time it is called
it returns the first entry; thereafter, it returns successive entries.
The file referred to by
.I stream
must have the same format as
.I /etc/group
(see
.BR group (5)).
.PP
The \fIgroup\fP structure is defined in \fI<grp.h>\fP as follows:
.PP
.in +4n
.EX
struct group {
    char   *gr_name;        /* group name */
    char   *gr_passwd;      /* group password */
    gid_t   gr_gid;         /* group ID */
    char  **gr_mem;         /* NULL\-terminated array of pointers
                               to names of group members */
};
.EE
.in
.SH RETURN VALUE
The
.BR fgetgrent ()
function returns a pointer to a
.I group
structure,
or NULL if there are no more entries or an error occurs.
In the event of an error,
.I errno
is set to indicate the error.
.SH ERRORS
.TP
.B ENOMEM
Insufficient memory to allocate
.I group
structure.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.ad l
.nh
.TS
allbox;
lbx lb lb
l l l.
Interface	Attribute	Value
T{
.BR fgetgrent ()
T}	Thread safety	MT-Unsafe race:fgetgrent
.TE
.hy
.ad
.sp 1
.\" FIXME The marking is different from that in the glibc manual,
.\" which has:
.\"
.\"    fgetgrent: MT-Unsafe race:fgrent
.\"
.\" We think race:fgrent in glibc may be hard for users to understand,
.\" and have sent a patch to the GNU libc community for changing it to
.\" race:fgetgrent, however, something about the copyright impeded the
.\" progress.
.SH CONFORMING TO
SVr4.
.SH SEE ALSO
.BR endgrent (3),
.BR fgetgrent_r (3),
.BR fopen (3),
.BR getgrent (3),
.BR getgrgid (3),
.BR getgrnam (3),
.BR putgrent (3),
.BR setgrent (3),
.BR group (5)
