Initial revision
[kopensolaris-gnu/glibc.git] / grp / grp.h
1 /* Copyright (C) 1991 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public License as
6 published by the Free Software Foundation; either version 2 of the
7 License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 Library General Public License for more details.
13
14 You should have received a copy of the GNU Library General Public
15 License along with the GNU C Library; see the file COPYING.LIB.  If
16 not, write to the Free Software Foundation, Inc., 675 Mass Ave,
17 Cambridge, MA 02139, USA.  */
18
19 /*
20  *      POSIX Standard: 9.2.1 Group Database Access     <grp.h>
21  */
22
23 #ifndef _GRP_H
24
25 #define _GRP_H  1
26 #include <features.h>
27
28 #include <gnu/types.h>
29
30
31 /* The group structure.  */
32 struct group
33   {
34     char *gr_name;      /* Group name.  */
35     char *gr_passwd;    /* Password.    */
36     __gid_t gr_gid;     /* Group ID.    */
37     char **gr_mem;      /* Member list. */
38   };
39
40
41 #if defined(__USE_SVID) || defined(__USE_GNU)
42 #define __need_FILE
43 #include <stdio.h>
44 #endif
45
46 #ifdef  __USE_GNU
47 /* Return a new stream open on the group file.  */
48 extern FILE *EXFUN(__grpopen, (NOARGS));
49
50 /* Read a group entry from STREAM, filling in G.
51    Return the `struct group' of G if successful, NULL on failure.  */
52 extern struct group *EXFUN(__grpread, (FILE *__stream, PTR __g));
53
54 /* Return a chunk of memory containing pre-initialized data for __grpread.  */
55 extern PTR EXFUN(__grpalloc, (NOARGS));
56 #endif
57
58
59 #if defined(__USE_SVID) || defined(__USE_MISC)
60 /* Rewind the group-file stream.  */
61 extern void EXFUN(setgrent, (NOARGS));
62
63 /* Close the group-file stream.  */
64 extern void EXFUN(endgrent, (NOARGS));
65
66 /* Read an entry from the group-file stream, opening it if necessary.  */
67 extern struct group *EXFUN(getgrent, (NOARGS));
68 #endif
69
70 #ifdef  __USE_SVID
71 /* Read a group entry from STREAM.  */
72 extern struct group *EXFUN(fgetgrent, (FILE *__stream));
73 #endif
74
75 /* Search for an entry with a matching group ID.  */
76 extern struct group *EXFUN(getgrgid, (__gid_t __gid));
77
78 /* Search for an entry with a matching group name.  */
79 extern struct group *EXFUN(getgrnam, (CONST char *__name));
80
81
82 #ifdef  __USE_BSD
83
84 #define __need_size_t
85 #include <stddef.h>
86
87 /* Set the group set for the current user to GROUPS (N of them).  */
88 extern int EXFUN(setgroups, (size_t __n, CONST __gid_t *groups));
89
90 /* Initialize the group set for the current user
91    by reading the group database and using all groups
92    of which USER is a member.  Also include GROUP.  */
93 extern int EXFUN(initgroups, (CONST char *user, __gid_t group));
94
95 #endif  /* Use BSD.  */
96
97
98 #endif  /* grp.h  */