summaryrefslogtreecommitdiff
path: root/sys/netiso/xebec/sets.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/netiso/xebec/sets.c')
-rw-r--r--sys/netiso/xebec/sets.c472
1 files changed, 0 insertions, 472 deletions
diff --git a/sys/netiso/xebec/sets.c b/sys/netiso/xebec/sets.c
deleted file mode 100644
index 6022a894434d4..0000000000000
--- a/sys/netiso/xebec/sets.c
+++ /dev/null
@@ -1,472 +0,0 @@
-/* $Header: /home/ncvs/src/sys/netiso/xebec/sets.c,v 1.1.1.1 1994/05/24 10:07:45 rgrimes Exp $ */
-/* $Source: /home/ncvs/src/sys/netiso/xebec/sets.c,v $ */
-/*
- * This code is such a kludge that I don't want to put my name on it.
- * It was a ridiculously fast hack and needs rewriting.
- * However it does work...
- */
-#include "main.h"
-#include "malloc.h"
-#include "sets.h"
-#include "debug.h"
-#include <stdio.h>
-
-struct Object *CurrentEvent = (struct Object *)0;
-struct Object *Objtree;
-struct Object dummy;
-/*
- * define a set w/ type and name
- * return a set number
- */
-#undef NULL
-#define NULL (struct Object *)0
-
-static FILE *Sfile, *Efile;
-extern FILE *astringfile;
-char *Noname = "Unnamed set\0";
-
-initsets(f,s)
-FILE *f, *s;
-{
- static char errorstring[20];
- extern struct Object *SameState;
- Efile = f;
- Sfile = s;
-
- IFDEBUG(X)
- fprintf(astringfile, "char *%s_sstring[] = {\n", protocol);
- ENDDEBUG
- sprintf(errorstring, "%sERROR\0", ST_PREFIX);
- defineitem(STATESET, errorstring, (char *)0); /* state 0 */
- SameState = (struct Object *) Malloc( sizeof (struct Object) );
- SameState->obj_kind = OBJ_ITEM;
- SameState->obj_type = STATESET;
- SameState->obj_name = "SAME";
- SameState->obj_struc = (char *)0;
- SameState->obj_number = 0;
- SameState->obj_members = (struct Object *)0;
- SameState->obj_left = (struct Object *)0;
- SameState->obj_right = (struct Object *)0;
- SameState->obj_parent = (struct Object *)0;
-}
-
-/*
- * get a set based on its type and name
- * returns address of an Object, may be set or item
- */
-
-struct Object *lookup(type, name)
-unsigned char type;
-char *name;
-{
- register struct Object *p = Objtree;
- int val = 1 ;
-
- IFDEBUG(o)
- fprintf(stdout,"lookup 0x%x,%s \n",
- type, name);
- ENDDEBUG
-
- while( p && val ) {
- IFDEBUG(o)
- fprintf(OUT, "lookup strcmp 0x%x,%s, 0x%x,%s\n",
- name, name, OBJ_NAME(p), OBJ_NAME(p));
- ENDDEBUG
- if( p->obj_name == (char *)0 ) {
- fprintf(stderr, "Unnamed set in table!\n");
- Exit(-1);
- }
- val = (int) strcmp(name, OBJ_NAME(p));
- if(val < 0) {
- /* left */
- p = p->obj_left;
- } else if (val > 0) {
- /* right */
- p = p->obj_right;
- }
- }
- if( p && ( p->obj_type != type)) {
- fprintf(stdout, "lookup(0x%x,%s) found wrong obj type 0x%x\n",
- type,name, p->obj_type);
- p = NULL;
- }
- IFDEBUG(o)
- fprintf(stdout,"lookup 0x%x,%s returning 0x%x\n",type, name, p);
- ENDDEBUG
- return(p);
-}
-
-static int states_done = 0;
-
-end_states(f)
-FILE *f;
-{
- register unsigned n = Nstates;
- register int i;
- extern char Eventshiftstring[];
-
- states_done = 1;
-
- for( i = 0; ;i++) {
- if( (n >>= 1) <= 0 ) break;
- }
- Eventshift = i+1;
- IFDEBUG(d)
- fprintf(OUT, "Eventshift=%d\n", Eventshift);
- ENDDEBUG
- sprintf(Eventshiftstring, "%d\0",Eventshift);
- fprintf(f, "struct %s_event {\n\tint ev_number;\n", &protocol[0]);
- IFDEBUG(X)
- /* finish sstring[] & start estring[] */
- fprintf(astringfile,
- "};\n\nchar *%s_estring[] = {\n", protocol);
- ENDDEBUG
-}
-
-int FirstEventAttribute = 1;
-
-static
-insert(o)
-struct Object *o;
-{
- struct Object *p = Objtree;
- struct Object **q = &Objtree;
- int val=1;
-
-
- if (o->obj_name == (char *)0) {
- fprintf(stderr, "Internal Error: inserting unnamed object\n");
- Exit(-1);
- }
- if( o->obj_type == STATESET) {
- if( states_done ) {
- fprintf(stderr, "No states may be defined after *TRANSITIONS\n");
- Exit(-1);
- }
- o->obj_number = Nstates++ ;
- if(Nstates > MAXSTATES) {
- fprintf(stderr, "Too many states\n");
- Exit(-1);
- }
- fprintf(Sfile, "#define %s 0x%x\n", o->obj_name, o->obj_number);
- IFDEBUG(X)
- fprintf(astringfile, "\"%s(0x%x)\",\n", o->obj_name, o->obj_number);
- ENDDEBUG
- } else {
- /* EVENTSET */
- if( ! states_done ) {
- fprintf(stderr, "states must precede events\n");
- Exit(-1);
- }
- o->obj_number = Nevents++ ;
- if(Nevents > MAXEVENTS) {
- fprintf(stderr, "Too many events\n");
- Exit(-1);
- }
- if(o->obj_struc) {
- if( FirstEventAttribute ) {
- fprintf(Efile, "\n\tunion{\n"); /*} */
- FirstEventAttribute = 0;
- }
- fprintf(Efile,
- "struct %s %s%s;\n\n", o->obj_struc, EV_PREFIX, o->obj_name);
- }
- fprintf(Efile, "#define %s 0x%x\n", o->obj_name, o->obj_number);
- IFDEBUG(X)
- fprintf(astringfile, "\"%s(0x%x)\",\n", o->obj_name, o->obj_number);
- ENDDEBUG
- }
- IFDEBUG(o)
- fprintf(OUT, "insert(%s)\n", OBJ_NAME(o) );
- if(o->obj_right != NULL) {
- fprintf(OUT, "insert: unclean Object right\n");
- exit(-1);
- }
- if(o->obj_left != NULL) {
- fprintf(OUT, "insert: unclean Object left\n");
- exit(-1);
- }
- fflush(OUT);
- ENDDEBUG
-
- while( val ) {
- if(p == NULL) {
- *q = o;
- o->obj_parent = (struct Object *)q;
- break;
- }
- if(!(val = strcmp(o->obj_name, p->obj_name)) ) {
- /* equal */
- fprintf(stderr, "re-inserting %s\n",o->obj_name);
- exit(-1);
- }
- if(val < 0) {
- /* left */
- q = &p->obj_left;
- p = p->obj_left;
- } else {
- /* right */
- q = &p->obj_right;
- p = p->obj_right;
- }
- }
- IFDEBUG(a)
- dumptree(Objtree,0);
- ENDDEBUG
-}
-
-delete(o)
-struct Object *o;
-{
- register struct Object *p = o->obj_right;
- register struct Object *q;
- register struct Object *newparent;
- register struct Object **np_childlink;
-
- IFDEBUG(T)
- fprintf(stdout, "delete(0x%x)\n", o);
- dumptree(Objtree,0);
- ENDDEBUG
-
- /* q <== lowest valued node of the right subtree */
- while( p ) {
- q = p;
- p = p->obj_left;
- }
-
- if (o->obj_parent == (struct Object *)&Objtree) {
- newparent = (struct Object *)&Objtree;
- np_childlink = (struct Object **)&Objtree;
- } else if(o->obj_parent->obj_left == o) {
- newparent = o->obj_parent;
- np_childlink = &(o->obj_parent->obj_left);
- } else {
- newparent = o->obj_parent;
- np_childlink = &(o->obj_parent->obj_right);
- }
- IFDEBUG(T)
- fprintf(OUT, "newparent=0x%x\n");
- ENDDEBUG
-
- if (q) { /* q gets the left, parent gets the right */
- IFDEBUG(T)
- fprintf(OUT, "delete: q null\n");
- ENDDEBUG
- q->obj_left = p;
- if(p) p->obj_parent = q;
- p = o->obj_right;
- } else { /* parent(instead of q) gets the left ; there is no right */
- IFDEBUG(T)
- fprintf(OUT, "delete: q not null\n");
- ENDDEBUG
- p = o->obj_left;
- }
- *np_childlink = p;
- if(p)
- p->obj_parent = newparent;
-
- IFDEBUG(T)
- fprintf(OUT, "After deleting 0x%x\n",o);
- dumptree(Objtree,0);
- ENDDEBUG
-}
-
-struct Object *
-defineset(type, adr, keep)
-unsigned char type;
-char *adr;
-int keep;
-{
- struct Object *onew;
- IFDEBUG(o)
- printf("defineset(0x%x,%s, %s)\n", type , adr, keep?"KEEP":"NO_KEEP");
- ENDDEBUG
-
- onew = (struct Object *)Malloc(sizeof (struct Object));
- bzero(onew, sizeof(struct Object));
- onew->obj_name = adr;
- onew->obj_kind = OBJ_SET;
- onew->obj_type = type;
- if(keep)
- insert( onew );
- /* address already stashed before calling defineset */
- IFDEBUG(o)
- printf("defineset(0x%x,%s) returning 0x%x\n", type , adr, onew);
- dumptree(Objtree,0);
- ENDDEBUG
- return(onew);
-}
-
-dumpit(o, s)
-char *o;
-char *s;
-{
- register int i;
-
-IFDEBUG(o)
- fprintf(OUT, "object 0x%x, %s\n",o, s);
- for(i=0; i< sizeof(struct Object); i+=4) {
- fprintf(OUT, "0x%x: 0x%x 0x%x 0x%x 0x%x\n",
- *((int *)o), *o, *(o+1), *(o+2), *(o+3) );
- }
-ENDDEBUG
-}
-
-defineitem(type, adr, struc)
-unsigned char type;
-char *adr;
-char *struc;
-{
- struct Object *onew;
- IFDEBUG(o)
- printf("defineitem(0x%x, %s at 0x%x, %s)\n", type, adr, adr, struc);
- ENDDEBUG
-
- if( onew = lookup( type, adr ) ) {
- fprintf(stderr,
- "Internal error at defineitem: trying to redefine obj type 0x%x, adr %s\n",
- type, adr);
- exit(-1);
- } else {
- onew = (struct Object *)Malloc(sizeof (struct Object));
- bzero(onew, sizeof(struct Object));
- onew->obj_name = stash(adr);
- onew->obj_kind = OBJ_ITEM;
- onew->obj_type = type;
- onew->obj_struc = struc?stash(struc):struc;
- insert( onew );
- }
- IFDEBUG(o)
- fprintf(OUT, "defineitem(0x%x, %s) returning 0x%x\n", type, adr, onew);
- ENDDEBUG
-}
-
-member(o, adr)
-struct Object *o;
-char *adr;
-{
- struct Object *onew, *oold;
- IFDEBUG(o)
- printf("member(0x%x, %s)\n", o, adr);
- ENDDEBUG
-
- oold = lookup( o->obj_type, adr );
-
- onew = (struct Object *)Malloc(sizeof (struct Object));
- if( oold == NULL ) {
- extern int lineno;
-
- fprintf(stderr,
- "Warning at line %d: set definition of %s causes definition of\n",
- lineno, OBJ_NAME(o));
- fprintf(stderr, "\t (previously undefined) member %s\n", adr);
- bzero(onew, sizeof(struct Object));
- onew->obj_name = stash(adr);
- onew->obj_kind = OBJ_ITEM;
- onew->obj_type = o->obj_type;
- onew->obj_members = NULL;
- insert( onew );
- } else {
- if(oold->obj_kind != OBJ_ITEM) {
- fprintf(stderr, "Sets cannot be members of sets; %s\n", adr);
- exit(-1);
- }
- bcopy(oold, onew, sizeof(struct Object));
- onew->obj_members = onew->obj_left = onew->obj_right = NULL;
- }
- onew->obj_members = o->obj_members;
- o->obj_members = onew;
-}
-
-struct Object *Lookup(type, name)
-unsigned char type;
-char *name;
-{
- register struct Object *o = lookup(type,name);
-
- if(o == NULL) {
- fprintf(stderr, "Trying to use undefined %s: %s\n",
- type==STATESET?"state":"event", name);
- Exit(-1);
- }
- return(o);
-}
-
-AddCurrentEventName(x)
-register char **x;
-{
- register char *n = EV_PREFIX; ;
-
- if( CurrentEvent == (struct Object *)0 ) {
- fprintf(stderr, "No event named! BARF!\n"); Exit(-1);
- }
-
- if( ! CurrentEvent->obj_struc ) {
- fprintf(stderr, "No attributes for current event!\n"); Exit(-1);
- }
-
- /* add prefix first */
- while(*n) {
- *(*x)++ = *n++;
- }
-
- n = CurrentEvent->obj_name;
-
- while(*n) {
- *(*x)++ = *n++;
- }
-}
-
-dumptree(o,i)
- register struct Object *o;
- int i;
-{
- register int j;
-
- if(o == NULL) {
- for(j=0; j<i; j++)
- fputc(' ', stdout);
- fprintf(stdout, "%3d NULL\n", i);
- } else {
- dumptree(o->obj_left, i+1);
- for(j=0; j<i; j++)
- fputc(' ', stdout);
- fprintf(stdout, "%3d 0x%x: %s\n", i,o, OBJ_NAME(o));
- dumptree(o->obj_right, i+1);
- }
-}
-
-dump(c,a)
-{
- register int x = 8;
- int zero = 0;
-#include <sys/signal.h>
-
- fprintf(stderr, "dump: c 0x%x, a 0x%x\n",c,a);
-
- x = x/zero;
- kill(0, SIGQUIT);
-}
-
-dump_trans( pred, oldstate, newstate, action, event )
-struct Object *oldstate, *newstate, *event;
-char *pred, *action;
-{
- extern int transno;
- struct Object *o;
-
- fprintf(stdout, "\n%d: ", transno);
-#define dumpit(x)\
- if((x)->obj_kind == OBJ_SET) {\
- o = (x)->obj_members; fprintf( stdout, "[ " );\
- while(o) { fprintf(stdout, "%s ", o->obj_name); o = o->obj_members; }\
- fprintf( stdout, " ] ");\
- } else { fprintf(stdout, "%s ", (x)->obj_name); }
-
- dumpit(newstate);
- fprintf(stdout, " <== ");
- dumpit(oldstate);
- dumpit(event);
- fprintf(stdout, "\n\t\t%s\n\t\t%s\n", pred?pred:"DEFAULT",
- action);
-}