5 * User database management
10 /*----- Licencing notice --------------------------------------------------*
12 * This file is part of `become'
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.
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.
24 * You should have received a copy of the GNU General Public License
25 * along with `become'; if not, write to the Free Software
26 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
29 /*----- Revision history --------------------------------------------------*
32 * Revision 1.1 1997/07/21 13:47:42 mdw
44 /*----- Required headers --------------------------------------------------*/
53 /*----- Type definitions --------------------------------------------------*/
55 /* --- Iterator objects --- */
57 typedef sym_iter userdb_iter
;
59 /*----- User and group block manipulation ---------------------------------*/
61 /* --- @userdb_copyUser@ --- *
63 * Arguments: @struct passwd *pw@ = pointer to block to copy
65 * Returns: Pointer to the copy.
67 * Use: Copies a user block. The copy is `deep' so all the strings
68 * are copied too. Free the copy with @userdb_freeUser@ when
69 * you don't want it any more.
72 extern struct passwd
*userdb_copyUser(struct passwd */
*pw*/
);
74 /* --- @userdb_freeUser@ --- *
76 * Arguments: @void *rec@ = pointer to a user record
80 * Use: Frees a user record.
83 extern void userdb_freeUser(void */
*rec*/
);
85 /* --- @userdb_copyGroup@ --- *
87 * Arguments: @struct group *gr@ = pointer to group block
89 * Returns: Pointer to copied block
91 * Use: Copies a group block. The copy is `deep' so all the strings
92 * are copied too. Free the copy with @userdb_freeGroup@ when
93 * you don't want it any more.
96 extern struct group
*userdb_copyGroup(struct group */
*gr*/
);
98 /* --- @userdb_freeGroup@ --- *
100 * Arguments: @void *rec@ = pointer to a group record
104 * Use: Frees a group record.
107 extern void userdb_freeGroup(void */
*rec*/
);
109 /*----- Internal user database mapping ------------------------------------*/
111 /* --- @userdb_local@ --- *
117 * Use: Reads the local list of users into the maps.
120 extern void userdb_local(void);
122 /* --- @userdb_yp@ --- *
128 * Use: Fetches the YP database of users.
131 extern void userdb_yp(void);
133 /* --- @userdb_userByName@, @userdb_userById@ --- *
135 * Arguments: @const char *name@ = pointer to user's name
136 * @uid_t id@ = user id to find
138 * Returns: Pointer to user block, or zero if not found.
140 * Use: Looks up a user by name or id.
143 extern struct passwd
*userdb_userByName(const char */
*name*/
);
144 extern struct passwd
*userdb_userById(uid_t
/*id*/);
146 /* --- @userdb_iterateUsers@, @userdb_iterateUsers_r@ --- *
148 * Arguments: @userdb_iter *i@ = pointer to a symbol table iterator object
152 * Use: Initialises an iteration for the user database.
155 extern void userdb_iterateUsers(void);
156 extern void userdb_iterateUsers_r(userdb_iter */
*i*/
);
158 /* --- @userdb_nextUser@, @userdb_nextUser_r@ --- *
160 * Arguments: @userdb_iter *i@ = pointer to a symbol table iterator oject
162 * Returns: Pointer to the next user block, or null.
164 * Use: Returns another user block.
167 extern struct passwd
*userdb_nextUser(void);
168 extern struct passwd
*userdb_nextUser_r(userdb_iter */
*i*/
);
170 /* --- @userdb_groupByName@, @userdb_groupById@ --- *
172 * Arguments: @const char *name@ = pointer to group's name
173 * @gid_t id@ = group id to find
175 * Returns: Pointer to group block, or zero if not found.
177 * Use: Looks up a group by name or id.
180 extern struct group
*userdb_groupByName(const char */
*name*/
);
181 extern struct group
*userdb_groupById(gid_t
/*id*/);
183 /* --- @userdb_iterateGroups@, @userdb_iterateGroups_r@ --- *
185 * Arguments: @userdb_iter *i@ = pointer to a symbol table iterator object
189 * Use: Initialises an iteration for the group database.
192 extern void userdb_iterateGroups(void);
193 extern void userdb_iterateGroups_r(userdb_iter */
*i*/
);
195 /* --- @userdb_nextGroup@, @userdb_nextGroup_r@ --- *
197 * Arguments: @userdb_iter *i@ = pointer to a symbol table iterator oject
199 * Returns: Pointer to the next group block, or null.
201 * Use: Returns another group block.
204 extern struct group
*userdb_nextGroup(void);
205 extern struct group
*userdb_nextGroup_r(userdb_iter */
*i*/
);
207 /* --- @userdb_init@ --- *
213 * Use: Initialises the user database.
216 extern void userdb_init(void);
218 /* --- @userdb_reinit@ --- *
224 * Use: Reinitialises the user database.
227 extern void userdb_reinit(void);
229 /*----- That's all, folks -------------------------------------------------*/