Major overhaul. Now uses DSA signatures rather than the bogus symmetric
[become] / src / userdb.h
CommitLineData
c4f2d992 1/* -*-c-*-
2 *
3 * $Id*
4 *
5 * User database management
6 *
c758e654 7 * (c) 1998 EBI
c4f2d992 8 */
9
03f996bd 10/*----- Licensing notice --------------------------------------------------*
c4f2d992 11 *
12 * This file is part of `become'
13 *
14 * `Become' is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation; either version 2 of the License, or
17 * (at your option) any later version.
18 *
19 * `Become' is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
23 *
24 * You should have received a copy of the GNU General Public License
03f996bd 25 * along with `become'; if not, write to the Free Software Foundation,
26 * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
c4f2d992 27 */
28
29/*----- Revision history --------------------------------------------------*
30 *
31 * $Log: userdb.h,v $
f60a3434 32 * Revision 1.5 2003/10/12 00:14:55 mdw
33 * Major overhaul. Now uses DSA signatures rather than the bogus symmetric
34 * encrypt-and-hope thing. Integrated with mLib and Catacomb.
35 *
c758e654 36 * Revision 1.4 1998/01/12 16:46:38 mdw
37 * Fix copyright date.
38 *
39 * Revision 1.3 1997/08/20 16:25:08 mdw
1cb135ee 40 * Rename `userdb_reinit' to `userdb_end' for more sensible restart.
41 *
03f996bd 42 * Revision 1.2 1997/08/04 10:24:26 mdw
43 * Sources placed under CVS control.
44 *
45 * Revision 1.1 1997/07/21 13:47:42 mdw
c4f2d992 46 * Initial revision
47 *
48 */
49
50#ifndef USERDB_H
51#define USERDB_H
52
53#ifdef __cplusplus
54 extern "C" {
55#endif
56
57/*----- Required headers --------------------------------------------------*/
58
59#include <grp.h>
60#include <pwd.h>
61
f60a3434 62#include <mLib/sym.h>
c4f2d992 63
64/*----- Type definitions --------------------------------------------------*/
65
66/* --- Iterator objects --- */
67
68typedef sym_iter userdb_iter;
69
70/*----- User and group block manipulation ---------------------------------*/
71
72/* --- @userdb_copyUser@ --- *
73 *
74 * Arguments: @struct passwd *pw@ = pointer to block to copy
75 *
76 * Returns: Pointer to the copy.
77 *
78 * Use: Copies a user block. The copy is `deep' so all the strings
79 * are copied too. Free the copy with @userdb_freeUser@ when
80 * you don't want it any more.
81 */
82
83extern struct passwd *userdb_copyUser(struct passwd */*pw*/);
84
85/* --- @userdb_freeUser@ --- *
86 *
87 * Arguments: @void *rec@ = pointer to a user record
88 *
89 * Returns: ---
90 *
91 * Use: Frees a user record.
92 */
93
94extern void userdb_freeUser(void */*rec*/);
95
96/* --- @userdb_copyGroup@ --- *
97 *
98 * Arguments: @struct group *gr@ = pointer to group block
99 *
100 * Returns: Pointer to copied block
101 *
102 * Use: Copies a group block. The copy is `deep' so all the strings
103 * are copied too. Free the copy with @userdb_freeGroup@ when
104 * you don't want it any more.
105 */
106
107extern struct group *userdb_copyGroup(struct group */*gr*/);
108
109/* --- @userdb_freeGroup@ --- *
110 *
111 * Arguments: @void *rec@ = pointer to a group record
112 *
113 * Returns: ---
114 *
115 * Use: Frees a group record.
116 */
117
118extern void userdb_freeGroup(void */*rec*/);
119
120/*----- Internal user database mapping ------------------------------------*/
121
122/* --- @userdb_local@ --- *
123 *
124 * Arguments: ---
125 *
126 * Returns: ---
127 *
128 * Use: Reads the local list of users into the maps.
129 */
130
131extern void userdb_local(void);
132
133/* --- @userdb_yp@ --- *
134 *
135 * Arguments: ---
136 *
137 * Returns: ---
138 *
139 * Use: Fetches the YP database of users.
140 */
141
142extern void userdb_yp(void);
143
144/* --- @userdb_userByName@, @userdb_userById@ --- *
145 *
146 * Arguments: @const char *name@ = pointer to user's name
147 * @uid_t id@ = user id to find
148 *
149 * Returns: Pointer to user block, or zero if not found.
150 *
151 * Use: Looks up a user by name or id.
152 */
153
154extern struct passwd *userdb_userByName(const char */*name*/);
155extern struct passwd *userdb_userById(uid_t /*id*/);
156
157/* --- @userdb_iterateUsers@, @userdb_iterateUsers_r@ --- *
158 *
159 * Arguments: @userdb_iter *i@ = pointer to a symbol table iterator object
160 *
161 * Returns: ---
162 *
163 * Use: Initialises an iteration for the user database.
164 */
165
166extern void userdb_iterateUsers(void);
167extern void userdb_iterateUsers_r(userdb_iter */*i*/);
168
169/* --- @userdb_nextUser@, @userdb_nextUser_r@ --- *
170 *
171 * Arguments: @userdb_iter *i@ = pointer to a symbol table iterator oject
172 *
173 * Returns: Pointer to the next user block, or null.
174 *
175 * Use: Returns another user block.
176 */
177
178extern struct passwd *userdb_nextUser(void);
179extern struct passwd *userdb_nextUser_r(userdb_iter */*i*/);
180
181/* --- @userdb_groupByName@, @userdb_groupById@ --- *
182 *
183 * Arguments: @const char *name@ = pointer to group's name
184 * @gid_t id@ = group id to find
185 *
186 * Returns: Pointer to group block, or zero if not found.
187 *
188 * Use: Looks up a group by name or id.
189 */
190
191extern struct group *userdb_groupByName(const char */*name*/);
192extern struct group *userdb_groupById(gid_t /*id*/);
193
194/* --- @userdb_iterateGroups@, @userdb_iterateGroups_r@ --- *
195 *
196 * Arguments: @userdb_iter *i@ = pointer to a symbol table iterator object
197 *
198 * Returns: ---
199 *
200 * Use: Initialises an iteration for the group database.
201 */
202
203extern void userdb_iterateGroups(void);
204extern void userdb_iterateGroups_r(userdb_iter */*i*/);
205
206/* --- @userdb_nextGroup@, @userdb_nextGroup_r@ --- *
207 *
208 * Arguments: @userdb_iter *i@ = pointer to a symbol table iterator oject
209 *
210 * Returns: Pointer to the next group block, or null.
211 *
212 * Use: Returns another group block.
213 */
214
215extern struct group *userdb_nextGroup(void);
216extern struct group *userdb_nextGroup_r(userdb_iter */*i*/);
217
218/* --- @userdb_init@ --- *
219 *
220 * Arguments: ---
221 *
222 * Returns: ---
223 *
224 * Use: Initialises the user database.
225 */
226
227extern void userdb_init(void);
228
1cb135ee 229/* --- @userdb_end@ --- *
c4f2d992 230 *
231 * Arguments: ---
232 *
233 * Returns: ---
234 *
1cb135ee 235 * Use: Closes down the user database.
c4f2d992 236 */
237
1cb135ee 238extern void userdb_end(void);
c4f2d992 239
240/*----- That's all, folks -------------------------------------------------*/
241
242#ifdef __cplusplus
243 }
244#endif
245
246#endif