]>
Commit | Line | Data |
---|---|---|
a68b0d31 | 1 | /* Internal header for netgroup related functions. |
c84142e8 UD |
2 | Copyright (C) 1996, 1997 Free Software Foundation, Inc. |
3 | This file is part of the GNU C Library. | |
d68171ed | 4 | |
c84142e8 UD |
5 | The GNU C Library is free software; you can redistribute it and/or |
6 | modify it under the terms of the GNU Library General Public License as | |
7 | published by the Free Software Foundation; either version 2 of the | |
8 | License, or (at your option) any later version. | |
d68171ed | 9 | |
c84142e8 UD |
10 | The GNU C Library is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | Library General Public License for more details. | |
d68171ed | 14 | |
c84142e8 UD |
15 | You should have received a copy of the GNU Library General Public |
16 | License along with the GNU C Library; see the file COPYING.LIB. If not, | |
17 | write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
18 | Boston, MA 02111-1307, USA. */ | |
d68171ed | 19 | |
a68b0d31 UD |
20 | #ifndef _NETGROUP_H |
21 | #define _NETGROUP_H 1 | |
d68171ed | 22 | |
2303f5fd UD |
23 | /* A netgroup can consist of names of other netgroups. We have to |
24 | track which netgroups were read and which still have to be read. */ | |
25 | struct name_list | |
26 | { | |
27 | const char *name; | |
28 | struct name_list *next; | |
29 | }; | |
30 | ||
31 | ||
32 | /* Dataset for iterating netgroups. */ | |
a68b0d31 | 33 | struct __netgrent |
d68171ed | 34 | { |
11336c16 UD |
35 | enum { triple_val, group_val } type; |
36 | ||
37 | union | |
38 | { | |
39 | struct | |
40 | { | |
41 | const char *host; | |
42 | const char *user; | |
43 | const char *domain; | |
44 | } | |
45 | triple; | |
46 | ||
47 | const char *group; | |
48 | } val; | |
2303f5fd UD |
49 | |
50 | /* Room for the data kept between the calls to the netgroup | |
51 | functions. We must avoid global variables. */ | |
52 | char *data; | |
53 | size_t data_size; | |
54 | char *cursor; | |
55 | int first; | |
56 | ||
57 | struct name_list *known_groups; | |
58 | struct name_list *needed_groups; | |
a68b0d31 | 59 | }; |
d68171ed | 60 | |
2303f5fd UD |
61 | |
62 | /* The internal netgroup handling functions might be called from outside. */ | |
63 | extern int __internal_setnetgrent (const char *group, | |
64 | struct __netgrent *datap); | |
65 | extern void __internal_endnetgrent (struct __netgrent *datap); | |
66 | extern int __internal_getnetgrent_r (char **hostp, char **userp, | |
67 | char **domainp, struct __netgrent *datap, | |
68 | char *buffer, size_t buflen); | |
69 | ||
a68b0d31 | 70 | #endif /* netgroup.h */ |