/* -*-c-*-
*
- * $Id: userdb.c,v 1.3 1997/08/07 09:44:29 mdw Exp $
+ * $Id: userdb.c,v 1.4 1997/08/20 16:24:58 mdw Exp $
*
* User database management
*
/*----- Revision history --------------------------------------------------*
*
* $Log: userdb.c,v $
+ * Revision 1.4 1997/08/20 16:24:58 mdw
+ * Patch memory leak. Rename `userdb_reinit' to `userdb_end' for more
+ * sensible restart.
+ *
* Revision 1.3 1997/08/07 09:44:29 mdw
* Read NIS-based passwords from the YP server directly, rather than using
* `popen(ypcat)', which is probably both slower and less secure.
if (pw && !userdb__byName(&userdb__users, pw->pw_name)) {
IF_TRACING(TRACE_DEBUG, userdb__dumpUser(pw); )
userdb__addToMap(&userdb__users, pw->pw_name, pw->pw_uid, pw);
- }
+ } else
+ userdb_freeUser(pw);
free(cv);
return (0);
}
if (gr && !userdb__byName(&userdb__groups, gr->gr_name)) {
IF_TRACING(TRACE_DEBUG, userdb__dumpGroup(gr); )
userdb__addToMap(&userdb__groups, gr->gr_name, gr->gr_gid, gr);
- }
+ } else
+ userdb_freeGroup(gr);
free(cv);
return (0);
}
userdb__createMap(&userdb__groups);
}
-/* --- @userdb_reinit@ --- *
+/* --- @userdb_end@ --- *
*
* Arguments: ---
*
* Returns: ---
*
- * Use: Reinitialises the user database.
+ * Use: Closes down the user database.
*/
-void userdb_reinit(void)
+void userdb_end(void)
{
userdb__clearMap(&userdb__users, userdb_freeUser);
userdb__clearMap(&userdb__groups, userdb_freeGroup);
- userdb_init();
}
/*----- Test rig ----------------------------------------------------------*/
int main(void)
{
ego("userdb-test");
- traceon(stderr, TRACE_ALL);
+/* traceon(stdout, TRACE_ALL); */
userdb_init();
- dumpit("cleared");
- userdb_yp();
- dumpit("yp");
userdb_local();
- dumpit("local");
+ userdb_yp();
+ printf("loaded (%lu)\n", track_memused());
+ getchar();
+ for (;;) {
+ userdb_end();
+ printf("cleared (%lu)\n", track_memused());
+/* track_memlist(); */
+ userdb_init();
+ userdb_local();
+ userdb_yp();
+ printf("reloaded (%lu)\n", track_memused());
+ getchar();
+ }
return (0);
}