/* -*-c-*-
*
- * $Id: netg.c,v 1.1 1997/08/07 09:45:00 mdw Exp $
+ * $Id: netg.c,v 1.2 1997/08/20 16:19:11 mdw Exp $
*
* A local database of netgroups
*
/*----- Revision history --------------------------------------------------*
*
* $Log: netg.c,v $
+ * Revision 1.2 1997/08/20 16:19:11 mdw
+ * Patch memory leak. Replace `name_reinit' by `name_end' for more sensible
+ * restart. Don't try to trace when tracing's turned off.
+ *
* Revision 1.1 1997/08/07 09:45:00 mdw
* New source file added to maintain a netgroups database.
*
goto duff_restart;
}
+ free(c->car.atom);
+ free(c);
free(kc);
free(vc);
return (0);
* Use: Dumps the netgroups table.
*/
+#ifdef TRACING
+
static void netg__dump(void)
{
sym_iter i;
netg__sym *sng;
-#ifdef TRACING
trace(TRACE_DEBUG, "debug: dumping netgroups file");
for (sym_createIter(&i, &netg__table); (sng = sym_next(&i)) != 0; ) {
trace(TRACE_DEBUG, "debug: netgroup `%s'...", sng->_base.name);
sng->cons->f &= ~f_visit;
netg__dumpGroup(sng->cons, 1);
}
-#endif
}
+#endif
+
/* --- @netg_iterate@, @netg_iterate_r@ --- *
*
* Arguments: @netg_iter *i@ = pointer to a netgroup iterator object
IF_TRACING(TRACE_DEBUG, netg__dump(); )
}
-/* --- @netg_reinit@ --- *
+/* --- @netg_end@ --- *
*
* Arguments: ---
*
* Returns: ---
*
- * Use: Forces a re-read of the netgroups file.
+ * Use: Empties the netgroups database.
*/
-void netg_reinit(void)
+void netg_end(void)
{
sym_iter i;
netg__sym *sng;
if (c->car.atom->h) free(c->car.atom->h);
if (c->car.atom->u) free(c->car.atom->u);
if (c->car.atom->d) free(c->car.atom->d);
+ free(c->car.atom);
}
free(c);
c = cc;
sym_remove(&netg__table, sng);
}
- /* --- Now rebuild the world --- */
-
- netg_init();
+ sym_destroyTable(&netg__table);
}
/*----- Test driver -------------------------------------------------------*/