Expunge revision histories in files.
[become] / src / class.c
index 31d6de6..7285df7 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: class.c,v 1.8 1998/06/08 11:20:36 mdw Exp $
+ * $Id: class.c,v 1.10 2004/04/08 01:36:20 mdw Exp $
  *
  * Handling classes of things nicely
  *
  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-/*----- Revision history --------------------------------------------------*
- *
- * $Log: class.c,v $
- * Revision 1.8  1998/06/08 11:20:36  mdw
- * (class__wildMatch) Fixed bug which overran pattern string, spotted by
- * Mark Rison.
- *
- * Revision 1.7  1998/01/12 16:45:50  mdw
- * Fix copyright date.
- *
- * Revision 1.6  1997/09/17  10:14:56  mdw
- * Complete rewrite to support class trees.  Makes the behaviour of the set
- * operators much more logical.
- *
- * Revision 1.5  1997/08/20  16:16:13  mdw
- * Patch memory leak.  Don't try to trace when tracing's turned off.
- *
- * Revision 1.4  1997/08/07 09:56:37  mdw
- * (Log entry for previous version is bogus.)  Minor changes to host
- * checking code.
- *
- * Revision 1.2  1997/08/04 10:24:21  mdw
- * Sources placed under CVS control.
- *
- * Revision 1.1  1997/07/21  13:47:52  mdw
- * Initial revision
- *
- */
-
 /*----- Header files ------------------------------------------------------*/
 
 /* --- ANSI headers --- */
 
 #include <netdb.h>
 
+/* --- mLib headers --- */
+
+#include <mLib/alloc.h>
+#include <mLib/report.h>
+#include <mLib/sym.h>
+
 /* --- Local headers --- */
 
 #include "become.h"
 #include "class.h"
-#include "sym.h"
-#include "utils.h"
 
 /*----- Global variables --------------------------------------------------*/
 
@@ -213,7 +188,7 @@ void class_dec(class_node *c)
          free(c->v.s);
        break;
       case clNode_hash:
-       sym_destroyTable(&c->v.t);
+       sym_destroy(&c->v.t);
        break;
       case clNode_union:
       case clNode_diff:
@@ -249,7 +224,7 @@ class_node *class_mod(class_node *c)
   cc->ref = 1;
   switch (c->type & clNode_mask) {
     case clNode_any:
-      die("internal error: class_mod called on non-modifiable class node");
+      die(1, "internal: class_mod called on non-modifiable class node");
       break;
 
     case clNode_immed:
@@ -263,8 +238,8 @@ class_node *class_mod(class_node *c)
       sym_iter i;
       sym_base *b;
 
-      sym_createTable(&cc->v.t);
-      for (sym_createIter(&i, &c->v.t); (b = sym_next(&i)) != 0; )
+      sym_create(&cc->v.t);
+      for (sym_mkiter(&i, &c->v.t); (b = sym_next(&i)) != 0; )
        sym_find(&cc->v.t, b->name, b->len, sizeof(sym_base), 0);
     } break;
 
@@ -300,9 +275,9 @@ static class_node *class__hashify(class_node *c)
   /* --- Some sanity checking --- */
 
   if (~c->type & clFlag_friendly)
-    die("internal error: class__hashify can't hashify unfriendly nodes");
+    die(1, "internal: class__hashify can't hashify unfriendly nodes");
   if ((c->type & clNode_mask) != clNode_immed)
-    die("internal error: class__hashify can't hashify non-immediate nodes");
+    die(1, "internal: class__hashify can't hashify non-immediate nodes");
 
   /* --- Split off a private copy of the node --- */
 
@@ -312,11 +287,11 @@ static class_node *class__hashify(class_node *c)
 
   if (c->type & clType_user) {
     uid_t u = c->v.u;
-    sym_createTable(&c->v.t);
+    sym_create(&c->v.t);
     sym_find(&c->v.t, (char *)&u, sizeof(u), sizeof(sym_base), 0);
   } else {
     char *s = c->v.s;
-    sym_createTable(&c->v.t);
+    sym_create(&c->v.t);
     sym_find(&c->v.t, s, -1, sizeof(sym_base), 0);
     free(s);
   }
@@ -465,7 +440,7 @@ class_node *class__binop(class_node *l, class_node *r, int op)
          sym_iter i;
          sym_base *b;
 
-         for (sym_createIter(&i, &r->v.t); (b = sym_next(&i)) != 0; )
+         for (sym_mkiter(&i, &r->v.t); (b = sym_next(&i)) != 0; )
            sym_find(&l->v.t, b->name, b->len, sizeof(sym_base), 0);
        }
        break;
@@ -486,7 +461,7 @@ class_node *class__binop(class_node *l, class_node *r, int op)
          sym_iter i;
          sym_base *b, *f;
 
-         for (sym_createIter(&i, &r->v.t); (b = sym_next(&i)) != 0; ) {
+         for (sym_mkiter(&i, &r->v.t); (b = sym_next(&i)) != 0; ) {
            if ((f = sym_find(&l->v.t, b->name, b->len, 0, 0)) != 0)
              sym_remove(&l->v.t, f);
          }
@@ -515,7 +490,7 @@ class_node *class__binop(class_node *l, class_node *r, int op)
          sym_iter i;
          sym_base *b;
 
-         for (sym_createIter(&i, &l->v.t); (b = sym_next(&i)) != 0; ) {
+         for (sym_mkiter(&i, &l->v.t); (b = sym_next(&i)) != 0; ) {
            if (!sym_find(&r->v.t, b->name, b->len, 0, 0))
              sym_remove(&l->v.t, b);
          }
@@ -535,7 +510,7 @@ class_node *class__binop(class_node *l, class_node *r, int op)
 
       class_dec(r);
 
-      sym_createIter(&i, &l->v.t);
+      sym_mkiter(&i, &l->v.t);
       if ((b = sym_next(&i)) == 0) {
        class_dec(l);
        return (class_none);
@@ -543,12 +518,12 @@ class_node *class__binop(class_node *l, class_node *r, int op)
       if (!sym_next(&i)) {
        if (type & clType_user) {
          uid_t u = *(uid_t *)b->name;
-         sym_destroyTable(&l->v.t);
+         sym_destroy(&l->v.t);
          l->type = (l->type & ~clNode_mask) | clNode_immed;
          l->v.u = u;
        } else {
          char *s = xstrdup(b->name);
-         sym_destroyTable(&l->v.t);
+         sym_destroy(&l->v.t);
          l->type = (l->type & ~clNode_mask) | clNode_immed;
          l->v.s = s;
        }
@@ -772,7 +747,7 @@ int class_matchUser(class_node *c, uid_t u)
     }
   }
 
-  die("internal error: can't get here in class_matchUser");
+  die(1, "internal: can't get here in class_matchUser");
   return (0);
 }
 
@@ -820,7 +795,7 @@ int class_matchCommand(class_node *c, const char *s)
     }
   }
 
-  die("internal error: can't get here in class_matchCommand");
+  die(1, "internal: can't get here in class_matchCommand");
   return (0);
 }
 
@@ -888,7 +863,7 @@ static int class__doMatchHost(class_node *c, const char *ip,
     }
   }
 
-  die("internal error: can't get here in class_matchUser");
+  die(1, "internal: can't get here in class_matchUser");
   return (0);
 }  
 
@@ -976,7 +951,7 @@ void class_dump(class_node *c, int indent)
       sym_iter i;
       sym_base *b;
 
-      for (sym_createIter(&i, &c->v.t); (b = sym_next(&i)) != 0; ) {
+      for (sym_mkiter(&i, &c->v.t); (b = sym_next(&i)) != 0; ) {
        if (c->type & clType_user) {
          trace(TRACE_RULE, "rule:%*s   user %lu",
                indent * 2, "", (unsigned long)*(uid_t *)b->name);