1951a39d68df598db08dfced8b4707755864a0492Ying Wang/*	$OpenBSD: grp.h,v 1.8 2005/12/13 00:35:22 millert Exp $	*/
2951a39d68df598db08dfced8b4707755864a0492Ying Wang/*	$NetBSD: grp.h,v 1.7 1995/04/29 05:30:40 cgd Exp $	*/
3951a39d68df598db08dfced8b4707755864a0492Ying Wang
4951a39d68df598db08dfced8b4707755864a0492Ying Wang/*-
5951a39d68df598db08dfced8b4707755864a0492Ying Wang * Copyright (c) 1989, 1993
6951a39d68df598db08dfced8b4707755864a0492Ying Wang *	The Regents of the University of California.  All rights reserved.
7951a39d68df598db08dfced8b4707755864a0492Ying Wang * (c) UNIX System Laboratories, Inc.
8951a39d68df598db08dfced8b4707755864a0492Ying Wang * All or some portions of this file are derived from material licensed
9951a39d68df598db08dfced8b4707755864a0492Ying Wang * to the University of California by American Telephone and Telegraph
10951a39d68df598db08dfced8b4707755864a0492Ying Wang * Co. or Unix System Laboratories, Inc. and are reproduced herein with
11951a39d68df598db08dfced8b4707755864a0492Ying Wang * the permission of UNIX System Laboratories, Inc.
12951a39d68df598db08dfced8b4707755864a0492Ying Wang *
13951a39d68df598db08dfced8b4707755864a0492Ying Wang * Redistribution and use in source and binary forms, with or without
14951a39d68df598db08dfced8b4707755864a0492Ying Wang * modification, are permitted provided that the following conditions
15951a39d68df598db08dfced8b4707755864a0492Ying Wang * are met:
16951a39d68df598db08dfced8b4707755864a0492Ying Wang * 1. Redistributions of source code must retain the above copyright
17951a39d68df598db08dfced8b4707755864a0492Ying Wang *    notice, this list of conditions and the following disclaimer.
18951a39d68df598db08dfced8b4707755864a0492Ying Wang * 2. Redistributions in binary form must reproduce the above copyright
19951a39d68df598db08dfced8b4707755864a0492Ying Wang *    notice, this list of conditions and the following disclaimer in the
20951a39d68df598db08dfced8b4707755864a0492Ying Wang *    documentation and/or other materials provided with the distribution.
21951a39d68df598db08dfced8b4707755864a0492Ying Wang * 3. Neither the name of the University nor the names of its contributors
22951a39d68df598db08dfced8b4707755864a0492Ying Wang *    may be used to endorse or promote products derived from this software
23951a39d68df598db08dfced8b4707755864a0492Ying Wang *    without specific prior written permission.
24951a39d68df598db08dfced8b4707755864a0492Ying Wang *
25951a39d68df598db08dfced8b4707755864a0492Ying Wang * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
26951a39d68df598db08dfced8b4707755864a0492Ying Wang * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27951a39d68df598db08dfced8b4707755864a0492Ying Wang * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28951a39d68df598db08dfced8b4707755864a0492Ying Wang * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
29951a39d68df598db08dfced8b4707755864a0492Ying Wang * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30951a39d68df598db08dfced8b4707755864a0492Ying Wang * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
31951a39d68df598db08dfced8b4707755864a0492Ying Wang * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32951a39d68df598db08dfced8b4707755864a0492Ying Wang * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33951a39d68df598db08dfced8b4707755864a0492Ying Wang * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
34951a39d68df598db08dfced8b4707755864a0492Ying Wang * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35951a39d68df598db08dfced8b4707755864a0492Ying Wang * SUCH DAMAGE.
36951a39d68df598db08dfced8b4707755864a0492Ying Wang *
37951a39d68df598db08dfced8b4707755864a0492Ying Wang *	@(#)grp.h	8.2 (Berkeley) 1/21/94
38951a39d68df598db08dfced8b4707755864a0492Ying Wang */
39951a39d68df598db08dfced8b4707755864a0492Ying Wang
40951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef _GRP_H_
41951a39d68df598db08dfced8b4707755864a0492Ying Wang#define	_GRP_H_
42951a39d68df598db08dfced8b4707755864a0492Ying Wang
43951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <sys/cdefs.h>
44951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <sys/types.h>
45951a39d68df598db08dfced8b4707755864a0492Ying Wang
46951a39d68df598db08dfced8b4707755864a0492Ying Wang#if __BSD_VISIBLE
47951a39d68df598db08dfced8b4707755864a0492Ying Wang#define	_PATH_GROUP		"/etc/group"
48951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif
49951a39d68df598db08dfced8b4707755864a0492Ying Wang
50951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct group {
51951a39d68df598db08dfced8b4707755864a0492Ying Wang	char	*gr_name;		/* group name */
52951a39d68df598db08dfced8b4707755864a0492Ying Wang	char	*gr_passwd;		/* group password */
53951a39d68df598db08dfced8b4707755864a0492Ying Wang	gid_t	gr_gid;			/* group id */
54951a39d68df598db08dfced8b4707755864a0492Ying Wang	char	**gr_mem;		/* group members */
55951a39d68df598db08dfced8b4707755864a0492Ying Wang};
56951a39d68df598db08dfced8b4707755864a0492Ying Wang
57951a39d68df598db08dfced8b4707755864a0492Ying Wang__BEGIN_DECLS
58951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct group	*getgrgid(gid_t);
59951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct group	*getgrnam(const char *);
60951a39d68df598db08dfced8b4707755864a0492Ying Wang#if __BSD_VISIBLE || __POSIX_VISIBLE >= 200112 || __XPG_VISIBLE
61951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct group	*getgrent(void);
62951a39d68df598db08dfced8b4707755864a0492Ying Wangvoid		 setgrent(void);
63951a39d68df598db08dfced8b4707755864a0492Ying Wangvoid		 endgrent(void);
64951a39d68df598db08dfced8b4707755864a0492Ying Wangint		 getgrgid_r(gid_t, struct group *, char *,
65951a39d68df598db08dfced8b4707755864a0492Ying Wang		    size_t, struct group **);
66951a39d68df598db08dfced8b4707755864a0492Ying Wangint		 getgrnam_r(const char *, struct group *, char *,
67951a39d68df598db08dfced8b4707755864a0492Ying Wang		    size_t, struct group **);
68951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif
69951a39d68df598db08dfced8b4707755864a0492Ying Wang#if __BSD_VISIBLE
70951a39d68df598db08dfced8b4707755864a0492Ying Wangvoid		 setgrfile(const char *);
71951a39d68df598db08dfced8b4707755864a0492Ying Wangint		 setgroupent(int);
72951a39d68df598db08dfced8b4707755864a0492Ying Wangchar		*group_from_gid(gid_t, int);
73951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif
74951a39d68df598db08dfced8b4707755864a0492Ying Wang
75951a39d68df598db08dfced8b4707755864a0492Ying Wangint   getgrouplist (const char *user, gid_t group,
76951a39d68df598db08dfced8b4707755864a0492Ying Wang                  gid_t *groups, int *ngroups);
77951a39d68df598db08dfced8b4707755864a0492Ying Wang
78951a39d68df598db08dfced8b4707755864a0492Ying Wangint   initgroups (const char *user, gid_t group);
79951a39d68df598db08dfced8b4707755864a0492Ying Wang
80951a39d68df598db08dfced8b4707755864a0492Ying Wang__END_DECLS
81951a39d68df598db08dfced8b4707755864a0492Ying Wang
82951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif /* !_GRP_H_ */
83