158f0484fSRodney W. Grimes.\" Copyright (c) 1989, 1991, 1993 258f0484fSRodney W. Grimes.\" The Regents of the University of California. All rights reserved. 358f0484fSRodney W. Grimes.\" 458f0484fSRodney W. Grimes.\" Redistribution and use in source and binary forms, with or without 558f0484fSRodney W. Grimes.\" modification, are permitted provided that the following conditions 658f0484fSRodney W. Grimes.\" are met: 758f0484fSRodney W. Grimes.\" 1. Redistributions of source code must retain the above copyright 858f0484fSRodney W. Grimes.\" notice, this list of conditions and the following disclaimer. 958f0484fSRodney W. Grimes.\" 2. Redistributions in binary form must reproduce the above copyright 1058f0484fSRodney W. Grimes.\" notice, this list of conditions and the following disclaimer in the 1158f0484fSRodney W. Grimes.\" documentation and/or other materials provided with the distribution. 1258f0484fSRodney W. Grimes.\" 3. All advertising materials mentioning features or use of this software 1358f0484fSRodney W. Grimes.\" must display the following acknowledgement: 1458f0484fSRodney W. Grimes.\" This product includes software developed by the University of 1558f0484fSRodney W. Grimes.\" California, Berkeley and its contributors. 1658f0484fSRodney W. Grimes.\" 4. Neither the name of the University nor the names of its contributors 1758f0484fSRodney W. Grimes.\" may be used to endorse or promote products derived from this software 1858f0484fSRodney W. Grimes.\" without specific prior written permission. 1958f0484fSRodney W. Grimes.\" 2058f0484fSRodney W. Grimes.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2158f0484fSRodney W. Grimes.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2258f0484fSRodney W. Grimes.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2358f0484fSRodney W. Grimes.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2458f0484fSRodney W. Grimes.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2558f0484fSRodney W. Grimes.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2658f0484fSRodney W. Grimes.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2758f0484fSRodney W. Grimes.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2858f0484fSRodney W. Grimes.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2958f0484fSRodney W. Grimes.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3058f0484fSRodney W. Grimes.\" SUCH DAMAGE. 3158f0484fSRodney W. Grimes.\" 326af9798fSGarrett Wollman.\" From: @(#)getgrent.3 8.2 (Berkeley) 4/19/94 337f3dea24SPeter Wemm.\" $FreeBSD$ 3458f0484fSRodney W. Grimes.\" 3505f98035SJacques Vidrine.Dd April 16, 2003 3658f0484fSRodney W. Grimes.Dt GETGRENT 3 3758f0484fSRodney W. Grimes.Os 3858f0484fSRodney W. Grimes.Sh NAME 3958f0484fSRodney W. Grimes.Nm getgrent , 4005f98035SJacques Vidrine.Nm getgrent_r , 4158f0484fSRodney W. Grimes.Nm getgrnam , 4205f98035SJacques Vidrine.Nm getgrnam_r , 4358f0484fSRodney W. Grimes.Nm getgrgid , 4405f98035SJacques Vidrine.Nm getgrgid_r , 4558f0484fSRodney W. Grimes.Nm setgroupent , 4658f0484fSRodney W. Grimes.Nm setgrent , 4758f0484fSRodney W. Grimes.Nm endgrent 4858f0484fSRodney W. Grimes.Nd group database operations 4925bb73e0SAlexey Zelkin.Sh LIBRARY 5025bb73e0SAlexey Zelkin.Lb libc 5158f0484fSRodney W. Grimes.Sh SYNOPSIS 5232eef9aeSRuslan Ermilov.In grp.h 5358f0484fSRodney W. Grimes.Ft struct group * 5458f0484fSRodney W. Grimes.Fn getgrent void 5505f98035SJacques Vidrine.Ft int 5605f98035SJacques Vidrine.Fn getgrent_r "struct group *grp" "char *buffer" "size_t bufsize" "struct group **result" 5758f0484fSRodney W. Grimes.Ft struct group * 5858f0484fSRodney W. Grimes.Fn getgrnam "const char *name" 5905f98035SJacques Vidrine.Ft int 6005f98035SJacques Vidrine.Fn getgrnam_r "const char *name" "struct group *grp" "char *buffer" "size_t bufsize" "struct group **result" 6158f0484fSRodney W. Grimes.Ft struct group * 6258f0484fSRodney W. Grimes.Fn getgrgid "gid_t gid" 63712dc76eSMike Pritchard.Ft int 6405f98035SJacques Vidrine.Fn getgrgid_r "gid_t gid" "struct group *grp" "char *buffer" "size_t bufsize" "struct group **result" 6505f98035SJacques Vidrine.Ft int 6658f0484fSRodney W. Grimes.Fn setgroupent "int stayopen" 6758f0484fSRodney W. Grimes.Ft int 6858f0484fSRodney W. Grimes.Fn setgrent void 6958f0484fSRodney W. Grimes.Ft void 7058f0484fSRodney W. Grimes.Fn endgrent void 7158f0484fSRodney W. Grimes.Sh DESCRIPTION 7258f0484fSRodney W. GrimesThese functions operate on the group database file 7358f0484fSRodney W. Grimes.Pa /etc/group 7458f0484fSRodney W. Grimeswhich is described 7558f0484fSRodney W. Grimesin 7658f0484fSRodney W. Grimes.Xr group 5 . 7758f0484fSRodney W. GrimesEach line of the database is defined by the structure 785c564baeSRuslan Ermilov.Vt group 7958f0484fSRodney W. Grimesfound in the include 8058f0484fSRodney W. Grimesfile 8158f0484fSRodney W. Grimes.Aq Pa grp.h : 8258f0484fSRodney W. Grimes.Bd -literal -offset indent 8358f0484fSRodney W. Grimesstruct group { 8458f0484fSRodney W. Grimes char *gr_name; /* group name */ 8558f0484fSRodney W. Grimes char *gr_passwd; /* group password */ 865567b258SMark Murray gid_t gr_gid; /* group id */ 871ffa6450SMike Pritchard char **gr_mem; /* group members */ 8858f0484fSRodney W. Grimes}; 8958f0484fSRodney W. Grimes.Ed 9058f0484fSRodney W. Grimes.Pp 9158f0484fSRodney W. GrimesThe functions 9258f0484fSRodney W. Grimes.Fn getgrnam 9358f0484fSRodney W. Grimesand 9458f0484fSRodney W. Grimes.Fn getgrgid 9558f0484fSRodney W. Grimessearch the group database for the given group name pointed to by 965c564baeSRuslan Ermilov.Fa name 9758f0484fSRodney W. Grimesor the group id pointed to by 985c564baeSRuslan Ermilov.Fa gid , 9958f0484fSRodney W. Grimesrespectively, returning the first one encountered. Identical group 10058f0484fSRodney W. Grimesnames or group gids may result in undefined behavior. 10158f0484fSRodney W. Grimes.Pp 10258f0484fSRodney W. GrimesThe 10358f0484fSRodney W. Grimes.Fn getgrent 10458f0484fSRodney W. Grimesfunction 10558f0484fSRodney W. Grimessequentially reads the group database and is intended for programs 10658f0484fSRodney W. Grimesthat wish to step through the complete list of groups. 10758f0484fSRodney W. Grimes.Pp 10805f98035SJacques VidrineThe functions 10905f98035SJacques Vidrine.Fn getgrent_r , 11005f98035SJacques Vidrine.Fn getgrnam_r , 11105f98035SJacques Vidrineand 11205f98035SJacques Vidrine.Fn getgrgid_r 11305f98035SJacques Vidrineare thread-safe versions of 11405f98035SJacques Vidrine.Fn getgrent , 11505f98035SJacques Vidrine.Fn getgrnam , 11605f98035SJacques Vidrineand 11705f98035SJacques Vidrine.Fn getgrgid , 11805f98035SJacques Vidrinerespectively. 11905f98035SJacques VidrineThe caller must provide storage for the results of the search in 12005f98035SJacques Vidrinethe 12105f98035SJacques Vidrine.Fa grp , 12205f98035SJacques Vidrine.Fa buffer , 12305f98035SJacques Vidrine.Fa bufsize , 12405f98035SJacques Vidrineand 12505f98035SJacques Vidrine.Fa result 12605f98035SJacques Vidrinearguments. 12705f98035SJacques VidrineWhen these functions are successful, the 12805f98035SJacques Vidrine.Fa grp 12905f98035SJacques Vidrineargument will be filled-in, and a pointer to that argument will be 13005f98035SJacques Vidrinestored in 13105f98035SJacques Vidrine.Fa result . 13205f98035SJacques VidrineIf an entry is not found or an error occurs, 13305f98035SJacques Vidrine.Fa result 13405f98035SJacques Vidrinewill be set to 13505f98035SJacques Vidrine.Dv NULL . 13605f98035SJacques Vidrine.Pp 13705f98035SJacques VidrineThese functions will open the group file for reading, if necessary. 13858f0484fSRodney W. Grimes.Pp 13958f0484fSRodney W. GrimesThe 14058f0484fSRodney W. Grimes.Fn setgroupent 14158f0484fSRodney W. Grimesfunction 14258f0484fSRodney W. Grimesopens the file, or rewinds it if it is already open. If 14358f0484fSRodney W. Grimes.Fa stayopen 14458f0484fSRodney W. Grimesis non-zero, file descriptors are left open, significantly speeding 14558f0484fSRodney W. Grimesfunctions subsequent calls. This functionality is unnecessary for 14658f0484fSRodney W. Grimes.Fn getgrent 14758f0484fSRodney W. Grimesas it doesn't close its file descriptors by default. It should also 14858f0484fSRodney W. Grimesbe noted that it is dangerous for long-running programs to use this 14958f0484fSRodney W. Grimesfunctionality as the group file may be updated. 15058f0484fSRodney W. Grimes.Pp 15158f0484fSRodney W. GrimesThe 15258f0484fSRodney W. Grimes.Fn setgrent 15358f0484fSRodney W. Grimesfunction 15458f0484fSRodney W. Grimesis identical to 15558f0484fSRodney W. Grimes.Fn setgroupent 15658f0484fSRodney W. Grimeswith an argument of zero. 15758f0484fSRodney W. Grimes.Pp 15858f0484fSRodney W. GrimesThe 15958f0484fSRodney W. Grimes.Fn endgrent 16058f0484fSRodney W. Grimesfunction 16158f0484fSRodney W. Grimescloses any open files. 16258f0484fSRodney W. Grimes.Sh RETURN VALUES 16358f0484fSRodney W. GrimesThe functions 16458f0484fSRodney W. Grimes.Fn getgrent , 16558f0484fSRodney W. Grimes.Fn getgrnam , 16658f0484fSRodney W. Grimesand 16758f0484fSRodney W. Grimes.Fn getgrgid , 16805f98035SJacques Vidrinereturn a pointer to a group structure on success or 16905f98035SJacques Vidrine.Dv NULL 17005f98035SJacques Vidrineif the entry is not found or if an error occurs. 17105f98035SJacques VidrineIn the latter case, 17205f98035SJacques Vidrine.Va errno 17305f98035SJacques Vidrinewill be set. 17405f98035SJacques VidrineThe functions 17505f98035SJacques Vidrine.Fn getgrent_r , 17605f98035SJacques Vidrine.Fn getgrnam_r , 17705f98035SJacques Vidrineand 17805f98035SJacques Vidrine.Fn getgrgid_r 17905f98035SJacques Vidrinereturn 0 if no error occurred, or an error number to indicate failure. 18005f98035SJacques VidrineIt is not an error if a matching entry is not found. 18105f98035SJacques Vidrine(Thus, if 18205f98035SJacques Vidrine.Fa result 18305f98035SJacques Vidrineis set to 18405f98035SJacques Vidrine.Dv NULL 18505f98035SJacques Vidrineand the return value is 0, no matching entry exists.) 18605f98035SJacques Vidrine.Pp 18758f0484fSRodney W. GrimesThe functions 18858f0484fSRodney W. Grimes.Fn setgroupent 18958f0484fSRodney W. Grimesand 19058f0484fSRodney W. Grimes.Fn setgrent 19158f0484fSRodney W. Grimesreturn the value 1 if successful, otherwise the value 19258f0484fSRodney W. Grimes0 is returned. 19358f0484fSRodney W. GrimesThe functions 19458f0484fSRodney W. Grimes.Fn endgrent 19558f0484fSRodney W. Grimesand 19658f0484fSRodney W. Grimes.Fn setgrfile 19758f0484fSRodney W. Grimeshave no return value. 19858f0484fSRodney W. Grimes.Sh FILES 19958f0484fSRodney W. Grimes.Bl -tag -width /etc/group -compact 20058f0484fSRodney W. Grimes.It Pa /etc/group 20158f0484fSRodney W. Grimesgroup database file 20258f0484fSRodney W. Grimes.El 20358f0484fSRodney W. Grimes.Sh SEE ALSO 20428f86af2SMike Pritchard.Xr getpwent 3 , 205248aee62SJacques Vidrine.Xr group 5 , 206491a8429SRuslan Ermilov.Xr nsswitch.conf 5 , 207491a8429SRuslan Ermilov.Xr yp 8 20858f0484fSRodney W. Grimes.Sh HISTORY 20958f0484fSRodney W. GrimesThe functions 21058f0484fSRodney W. Grimes.Fn endgrent , 21158f0484fSRodney W. Grimes.Fn getgrent , 21258f0484fSRodney W. Grimes.Fn getgrnam , 21358f0484fSRodney W. Grimes.Fn getgrgid , 21458f0484fSRodney W. Grimesand 21558f0484fSRodney W. Grimes.Fn setgrent 21658f0484fSRodney W. Grimesappeared in 21758f0484fSRodney W. Grimes.At v7 . 21858f0484fSRodney W. GrimesThe functions 21958f0484fSRodney W. Grimes.Fn setgrfile 22058f0484fSRodney W. Grimesand 22158f0484fSRodney W. Grimes.Fn setgroupent 22258f0484fSRodney W. Grimesappeared in 22358f0484fSRodney W. Grimes.Bx 4.3 Reno . 22405f98035SJacques VidrineThe functions 22505f98035SJacques Vidrine.Fn getgrent_r , 22605f98035SJacques Vidrine.Fn getgrnam_r , 22705f98035SJacques Vidrineand 22805f98035SJacques Vidrine.Fn getgrgid_r 22905f98035SJacques Vidrineappeared in 23005f98035SJacques Vidrine.Fx 5.1 . 23105f98035SJacques Vidrine.Sh STANDARDS 23205f98035SJacques VidrineThe 23305f98035SJacques Vidrine.Fn getgrent , 23405f98035SJacques Vidrine.Fn getgrnam , 23505f98035SJacques Vidrine.Fn getgrnam_r , 23605f98035SJacques Vidrine.Fn getgrgid , 23705f98035SJacques Vidrine.Fn getgrgid_r 23805f98035SJacques Vidrineand 23905f98035SJacques Vidrine.Fn endgrent 24005f98035SJacques Vidrinefunctions conform to 24105f98035SJacques Vidrine.St -p1003.1-96 . 24205f98035SJacques VidrineThe 24305f98035SJacques Vidrine.Fn setgrent 24405f98035SJacques Vidrinefunction differs from that standard in that its return type is 24505f98035SJacques Vidrine.Vt int 24605f98035SJacques Vidrinerather than 24705f98035SJacques Vidrine.Vt void . 24858f0484fSRodney W. Grimes.Sh COMPATIBILITY 24958f0484fSRodney W. GrimesThe historic function 25058f0484fSRodney W. Grimes.Fn setgrfile , 25158f0484fSRodney W. Grimeswhich allowed the specification of alternate password databases, has 25258f0484fSRodney W. Grimesbeen deprecated and is no longer available. 25358f0484fSRodney W. Grimes.Sh BUGS 25458f0484fSRodney W. GrimesThe functions 25558f0484fSRodney W. Grimes.Fn getgrent , 25658f0484fSRodney W. Grimes.Fn getgrnam , 25758f0484fSRodney W. Grimes.Fn getgrgid , 25858f0484fSRodney W. Grimes.Fn setgroupent 25958f0484fSRodney W. Grimesand 26058f0484fSRodney W. Grimes.Fn setgrent 26158f0484fSRodney W. Grimesleave their results in an internal static object and return 262c6ff3a1bSSheldon Hearna pointer to that object. 263c6ff3a1bSSheldon HearnSubsequent calls to 26458f0484fSRodney W. Grimesthe same function 26558f0484fSRodney W. Grimeswill modify the same object. 266248aee62SJacques Vidrine.Pp 267248aee62SJacques VidrineThe functions 268248aee62SJacques Vidrine.Fn getgrent , 26905f98035SJacques Vidrine.Fn getgrent_r , 270248aee62SJacques Vidrine.Fn endgrent , 271248aee62SJacques Vidrine.Fn setgroupent , 272248aee62SJacques Vidrineand 273248aee62SJacques Vidrine.Fn setgrent 274248aee62SJacques Vidrineare fairly useless in a networked environment and should be 275248aee62SJacques Vidrineavoided, if possible. 27695f4226bSRuslan ErmilovThe 277248aee62SJacques Vidrine.Fn getgrent 27805f98035SJacques Vidrineand 27905f98035SJacques Vidrine.Fn getgrent_r 28005f98035SJacques Vidrinefunctions 28105f98035SJacques Vidrinemake no attempt to suppress duplicate information if multiple 282248aee62SJacques Vidrinesources are specified in 283248aee62SJacques Vidrine.Xr nsswitch.conf 5 . 284