11dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*	$OpenBSD: grp.h,v 1.8 2005/12/13 00:35:22 millert Exp $	*/
21dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*	$NetBSD: grp.h,v 1.7 1995/04/29 05:30:40 cgd Exp $	*/
31dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
41dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*-
51dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Copyright (c) 1989, 1993
61dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *	The Regents of the University of California.  All rights reserved.
71dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * (c) UNIX System Laboratories, Inc.
81dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * All or some portions of this file are derived from material licensed
91dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * to the University of California by American Telephone and Telegraph
101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Co. or Unix System Laboratories, Inc. and are reproduced herein with
111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * the permission of UNIX System Laboratories, Inc.
121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *
131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Redistribution and use in source and binary forms, with or without
141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * modification, are permitted provided that the following conditions
151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * are met:
161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 1. Redistributions of source code must retain the above copyright
171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *    notice, this list of conditions and the following disclaimer.
181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *    documentation and/or other materials provided with the distribution.
211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 3. Neither the name of the University nor the names of its contributors
221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *    may be used to endorse or promote products derived from this software
231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *    without specific prior written permission.
241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *
251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * SUCH DAMAGE.
361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *
371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *	@(#)grp.h	8.2 (Berkeley) 1/21/94
381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifndef _GRP_H_
411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	_GRP_H_
421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <sys/cdefs.h>
441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <sys/types.h>
451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#if __BSD_VISIBLE
471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define	_PATH_GROUP		"/etc/group"
481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif
491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct group {
511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project	char	*gr_name;		/* group name */
521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project	char	*gr_passwd;		/* group password */
531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project	gid_t	gr_gid;			/* group id */
541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project	char	**gr_mem;		/* group members */
551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project};
561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project__BEGIN_DECLS
581dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct group	*getgrgid(gid_t);
591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct group	*getgrnam(const char *);
601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#if __BSD_VISIBLE || __POSIX_VISIBLE >= 200112 || __XPG_VISIBLE
611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct group	*getgrent(void);
621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectvoid		 setgrent(void);
631dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectvoid		 endgrent(void);
641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint		 getgrgid_r(gid_t, struct group *, char *,
651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project		    size_t, struct group **);
661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint		 getgrnam_r(const char *, struct group *, char *,
671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project		    size_t, struct group **);
681dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif
691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#if __BSD_VISIBLE
701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectvoid		 setgrfile(const char *);
711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint		 setgroupent(int);
721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectchar		*group_from_gid(gid_t, int);
731dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif
741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint   getgrouplist (const char *user, gid_t group,
761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project                  gid_t *groups, int *ngroups);
771dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
781dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint   initgroups (const char *user, gid_t group);
791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project__END_DECLS
811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif /* !_GRP_H_ */
83