1*2fe8fb19SBen Gras /* $NetBSD: grp.h,v 1.24 2007/10/19 15:58:52 christos Exp $ */ 29865aeaaSBen Gras 3*2fe8fb19SBen Gras /*- 4*2fe8fb19SBen Gras * Copyright (c) 1989, 1993 5*2fe8fb19SBen Gras * The Regents of the University of California. All rights reserved. 6*2fe8fb19SBen Gras * (c) UNIX System Laboratories, Inc. 7*2fe8fb19SBen Gras * All or some portions of this file are derived from material licensed 8*2fe8fb19SBen Gras * to the University of California by American Telephone and Telegraph 9*2fe8fb19SBen Gras * Co. or Unix System Laboratories, Inc. and are reproduced herein with 10*2fe8fb19SBen Gras * the permission of UNIX System Laboratories, Inc. 11*2fe8fb19SBen Gras * 12*2fe8fb19SBen Gras * Redistribution and use in source and binary forms, with or without 13*2fe8fb19SBen Gras * modification, are permitted provided that the following conditions 14*2fe8fb19SBen Gras * are met: 15*2fe8fb19SBen Gras * 1. Redistributions of source code must retain the above copyright 16*2fe8fb19SBen Gras * notice, this list of conditions and the following disclaimer. 17*2fe8fb19SBen Gras * 2. Redistributions in binary form must reproduce the above copyright 18*2fe8fb19SBen Gras * notice, this list of conditions and the following disclaimer in the 19*2fe8fb19SBen Gras * documentation and/or other materials provided with the distribution. 20*2fe8fb19SBen Gras * 3. Neither the name of the University nor the names of its contributors 21*2fe8fb19SBen Gras * may be used to endorse or promote products derived from this software 22*2fe8fb19SBen Gras * without specific prior written permission. 23*2fe8fb19SBen Gras * 24*2fe8fb19SBen Gras * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 25*2fe8fb19SBen Gras * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26*2fe8fb19SBen Gras * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 27*2fe8fb19SBen Gras * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 28*2fe8fb19SBen Gras * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 29*2fe8fb19SBen Gras * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 30*2fe8fb19SBen Gras * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31*2fe8fb19SBen Gras * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32*2fe8fb19SBen Gras * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 33*2fe8fb19SBen Gras * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 34*2fe8fb19SBen Gras * SUCH DAMAGE. 35*2fe8fb19SBen Gras * 36*2fe8fb19SBen Gras * @(#)grp.h 8.2 (Berkeley) 1/21/94 37*2fe8fb19SBen Gras */ 389865aeaaSBen Gras 39*2fe8fb19SBen Gras #ifndef _GRP_H_ 40*2fe8fb19SBen Gras #define _GRP_H_ 41*2fe8fb19SBen Gras 42*2fe8fb19SBen Gras #include <sys/cdefs.h> 43*2fe8fb19SBen Gras #include <sys/featuretest.h> 44*2fe8fb19SBen Gras #include <sys/types.h> 45*2fe8fb19SBen Gras 46*2fe8fb19SBen Gras #if defined(_NETBSD_SOURCE) 47*2fe8fb19SBen Gras #define _PATH_GROUP "/etc/group" 489865aeaaSBen Gras #endif 499865aeaaSBen Gras 509865aeaaSBen Gras struct group { 51*2fe8fb19SBen Gras __aconst char *gr_name; /* group name */ 52*2fe8fb19SBen Gras __aconst char *gr_passwd; /* group password */ 53*2fe8fb19SBen Gras gid_t gr_gid; /* group id */ 54*2fe8fb19SBen Gras __aconst char *__aconst *gr_mem; /* group members */ 559865aeaaSBen Gras }; 569865aeaaSBen Gras 57*2fe8fb19SBen Gras __BEGIN_DECLS 58*2fe8fb19SBen Gras struct group *getgrgid(gid_t); 59*2fe8fb19SBen Gras struct group *getgrnam(const char *); 60*2fe8fb19SBen Gras #if (_POSIX_C_SOURCE - 0) >= 199506L || (_XOPEN_SOURCE - 0) >= 500 || \ 61*2fe8fb19SBen Gras defined(_REENTRANT) || defined(_NETBSD_SOURCE) 62*2fe8fb19SBen Gras int getgrgid_r(gid_t, struct group *, char *, size_t, 63*2fe8fb19SBen Gras struct group **); 64*2fe8fb19SBen Gras int getgrnam_r(const char *, struct group *, char *, size_t, 65*2fe8fb19SBen Gras struct group **); 669865aeaaSBen Gras #endif 67*2fe8fb19SBen Gras #if defined(_XOPEN_SOURCE) || defined(_NETBSD_SOURCE) 68*2fe8fb19SBen Gras struct group *getgrent(void); 69*2fe8fb19SBen Gras void setgrent(void); 70*2fe8fb19SBen Gras void endgrent(void); 71*2fe8fb19SBen Gras #endif 72*2fe8fb19SBen Gras #if defined(_NETBSD_SOURCE) 73*2fe8fb19SBen Gras void setgrfile(const char *); 74*2fe8fb19SBen Gras int setgroupent(int); 75*2fe8fb19SBen Gras int getgrent_r(struct group *, char *, size_t, struct group **); 76*2fe8fb19SBen Gras const char *group_from_gid(gid_t, int); 77*2fe8fb19SBen Gras int gid_from_group(const char *, gid_t *); 78*2fe8fb19SBen Gras int pwcache_groupdb(int (*)(int), void (*)(void), 79*2fe8fb19SBen Gras struct group * (*)(const char *), 80*2fe8fb19SBen Gras struct group * (*)(gid_t)); 81*2fe8fb19SBen Gras #endif 82*2fe8fb19SBen Gras __END_DECLS 839865aeaaSBen Gras 84*2fe8fb19SBen Gras #endif /* !_GRP_H_ */ 85