/* -*-c-*-
*
- * $Id: netg.c,v 1.2 1997/08/20 16:19:11 mdw Exp $
+ * $Id: netg.c,v 1.7 2004/04/08 01:36:20 mdw Exp $
*
* A local database of netgroups
*
- * (c) 1997 EBI
+ * (c) 1998 EBI
*/
/*----- Licensing notice --------------------------------------------------*
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-/*----- 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.
- *
- */
-
/*----- Header files ------------------------------------------------------*/
/* --- ANSI headers --- */
#include <sys/types.h>
-#ifdef HAVE_YP
-# include <rpc/rpc.h>
-# include <rpcsvc/ypclnt.h>
-# include <rpcsvc/yp_prot.h>
-#endif
-
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>
+/* --- mLib headers --- */
+
+#include <mLib/alloc.h>
+#include <mLib/report.h>
+#include <mLib/sym.h>
+#include <mLib/trace.h>
+
/* --- Local headers --- */
#include "become.h"
#include "config.h"
#include "netg.h"
-#include "sym.h"
#include "userdb.h"
-#include "utils.h"
+#include "ypstuff.h"
/*----- Type definitions --------------------------------------------------*/
* Use: Dumps the netgroup given.
*/
-#ifdef TRACING
+#ifndef NTRACE
static void netg__dumpGroup(netg__cons *c, int lev)
{
* Use: Dumps the netgroups table.
*/
-#ifdef TRACING
+#ifndef NTRACE
static void netg__dump(void)
{
netg__sym *sng;
trace(TRACE_DEBUG, "debug: dumping netgroups file");
- for (sym_createIter(&i, &netg__table); (sng = sym_next(&i)) != 0; ) {
+ for (sym_mkiter(&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);
*/
void netg_iterate(void) { netg_iterate_r(&netg__iter); }
-void netg_iterate_r(netg_iter *i) { sym_createIter(i, &netg__table); }
+void netg_iterate_r(netg_iter *i) { sym_mkiter(i, &netg__table); }
/* --- @netg_next@, @netg_next_r@ --- *
*
void netg_init(void)
{
- char *ypdom;
-
/* --- Initialise my symbol table --- */
- sym_createTable(&netg__table);
+ sym_create(&netg__table);
/* --- Bind myself unto a YP server --- */
- if (yp_get_default_domain(&ypdom) ||
- yp_bind(ypdom))
+ ypstuff_bind();
+ if (!yp_domain)
return;
/* --- Now try to read all the netgroup entries --- */
{
static struct ypall_callback ncb = { netg__foreach, 0 };
- yp_all(ypdom, "netgroup", &ncb);
+ yp_all(yp_domain, "netgroup", &ncb);
}
- /* --- Unbind from the server --- */
-
- yp_unbind(ypdom);
-
/* --- Dump the table --- */
IF_TRACING(TRACE_DEBUG, netg__dump(); )
netg__cons *c;
netg__atom *a;
- for (sym_createIter(&i, &netg__table); (sng = sym_next(&i)) != 0; ) {
+ for (sym_mkiter(&i, &netg__table); (sng = sym_next(&i)) != 0; ) {
for (c = sng->cons; c; c = c->cdr) {
if ((c->f & f_cons) == 0 && c->car.atom->n) {
a = c->car.atom;
sym_iter i;
netg__sym *sng;
- for (sym_createIter(&i, &netg__table); (sng = sym_next(&i)) != 0; )
+ for (sym_mkiter(&i, &netg__table); (sng = sym_next(&i)) != 0; )
sng->cons->f &= ~f_uncycled;
- for (sym_createIter(&i, &netg__table); (sng = sym_next(&i)) != 0; )
+ for (sym_mkiter(&i, &netg__table); (sng = sym_next(&i)) != 0; )
netg__breakCycle(sng->cons);
}
/* --- Remove all the old netgroups rubbish --- */
- for (sym_createIter(&i, &netg__table); (sng = sym_next(&i)) != 0; ) {
+ for (sym_mkiter(&i, &netg__table); (sng = sym_next(&i)) != 0; ) {
c = sng->cons;
while (c) {
cc = c->cdr;
sym_remove(&netg__table, sng);
}
- sym_destroyTable(&netg__table);
+ sym_destroy(&netg__table);
}
/*----- Test driver -------------------------------------------------------*/
{
netg *n;
ego("netg-test");
- traceon(stderr, TRACE_ALL);
+ trace_on(stderr, TRACE_ALL);
netg_init();
for (netg_iterate(); (n = netg_next()) != 0; ) {
fprintf(stderr, "netgroup %s\n", netg_name(n));