.\" Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de)
-.\" Distributed under GPL
+.\"
+.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
+.\" Distributed under GPL
+.\" %%%LICENSE_END
+.\"
.\" based on glibc infopages
.\" polished - aeb
-.TH SETNETGRENT 3 2007-07-26 "GNU" "Linux Programmer's Manual"
+.\"
+.TH SETNETGRENT 3 2017-09-15 "GNU" "Linux Programmer's Manual"
.SH NAME
setnetgrent, endnetgrent, getnetgrent, getnetgrent_r, innetgr \-
handle network group entries
.SH SYNOPSIS
+.nf
.B #include <netdb.h>
-.sp
+.PP
.BI "int setnetgrent(const char *" netgroup );
-.br
-.BI "void endnetgrent(void);"
-.br
+.PP
+.B "void endnetgrent(void);"
+.PP
.BI "int getnetgrent(char **" host ", char **" user ", char **" domain );
-.sp
+.PP
.BI "int getnetgrent_r(char **" host ", char **" user ","
-.in +18
-.BI "char **" domain ", char *" buf ", int " buflen );
-.in -18
-.sp
+.BI " char **" domain ", char *" buf ", size_t " buflen );
+.PP
.BI "int innetgr(const char *" netgroup ", const char *" host ","
-.in +12
-.BI "const char *" user ", const char *" domain );
-.in -12
-.sp
+.BI " const char *" user ", const char *" domain );
+.fi
+.PP
.in -4n
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.in
-.sp
+.PP
.ad l
.BR setnetgrent (),
.BR endnetgrent (),
.BR getnetgrent (),
.BR getnetgrent_r (),
.BR innetgr ():
-_BSD_SOURCE || _SVID_SOURCE
+ Since glibc 2.19:
+ _DEFAULT_SOURCE
+ Glibc 2.19 and earlier:
+ _BSD_SOURCE || _SVID_SOURCE
.ad b
.SH DESCRIPTION
The
.IR host ,
.IR user ,
.IR domain .
-A NULL pointer means that the corresponding entry matches any string.
+A null pointer means that the corresponding entry matches any string.
The pointers are valid only as long as there is no call to other
netgroup-related functions.
To avoid this problem you can use the GNU function
To free all allocated buffers use
.BR endnetgrent ().
.PP
-In most cases you only want to check if the triplet
+In most cases you want to check only if the triplet
.RI ( hostname ", " username ", " domainname )
is a member of a netgroup.
The function
.BR innetgr ()
can be used for this without calling the above three functions.
-Again, a NULL pointer is a wildcard and matches any string.
+Again, a null pointer is a wildcard and matches any string.
The function is thread-safe.
-.SH "RETURN VALUE"
+.SH RETURN VALUE
These functions return 1 on success and 0 for failure.
.SH FILES
.I /etc/netgroup
.br
.I /etc/nsswitch.conf
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lbw16 lb lbw23
+l l l.
+Interface Attribute Value
+T{
+.BR setnetgrent (),
+.br
+.BR getnetgrent_r (),
+.br
+.BR innetgr ()
+T} Thread safety T{
+MT-Unsafe race:netgrent
+.br
+locale
+T}
+T{
+.BR endnetgrent ()
+T} Thread safety MT-Unsafe race:netgrent
+T{
+.BR getnetgrent ()
+T} Thread safety T{
+MT-Unsafe race:netgrent
+.br
+race:netgrentbuf locale
+T}
+.TE
+.sp 1
+In the above table,
+.I netgrent
+in
+.I race:netgrent
+signifies that if any of the functions
+.BR setnetgrent (),
+.BR getnetgrent_r (),
+.BR innetgr (),
+.BR getnetgrent (),
+or
+.BR endnetgrent ()
+are used in parallel in different threads of a program,
+then data races could occur.
.SH CONFORMING TO
-These functions are not in POSIX.1-2001, but
+These functions are not in POSIX.1, but
.BR setnetgrent (),
.BR endnetgrent (),
.BR getnetgrent (),
and
.BR innetgr ()
-are available on most Unix systems.
+are available on most UNIX systems.
.BR getnetgrent_r ()
is not widely available on other systems.
.\" getnetgrent_r() is on Solaris 8 and AIX 5.1, but not the BSDs.
In the BSD implementation,
.BR setnetgrent ()
returns void.
-.SH "SEE ALSO"
+.SH SEE ALSO
.BR sethostent (3),
-.BR setservent (3),
-.BR setprotoent (3)
+.BR setprotoent (3),
+.BR setservent (3)