diff --git a/util/topgen/symtab.c b/util/topgen/symtab.c index da1af3dfd..0c1d07cb5 100644 --- a/util/topgen/symtab.c +++ b/util/topgen/symtab.c @@ -8,7 +8,7 @@ * Contains the routine findident, which builds the symbol table and * searches identifiers */ - + #include #include #include "symtab.h" @@ -17,40 +17,46 @@ struct symtab *idtable, *deftable; extern void error(char *s, char* s1); -struct symtab * -findident(s, mode, table) char *s; struct symtab **table; { - /* - * Look for identifier s in the symboltable referred to by *table. - * If mode = LOOKING, no new entry's will be made. - * If mode = ENTERING, a new entry will be made if s is not in the - * table yet, otherwise an error results - */ - register struct symtab *p; - register int n; - - if (!*table) { /* No entry for this symbol */ - if (mode == LOOKING) return (struct symtab *) 0; +struct symtab * findident(char *s, int mode, struct symtab **table) +{ /* - * Make new entry + * Look for identifier s in the symboltable referred to by *table. + * If mode = LOOKING, no new entry's will be made. + * If mode = ENTERING, a new entry will be made if s is not in the + * table yet, otherwise an error results */ - p = (struct symtab *) malloc(sizeof *p); - p->s_left = p->s_right = (struct symtab *) 0; - p->s_name = malloc( (unsigned) (strlen(s) + 1)); - strcpy(p->s_name,s); - *table = p; - return p; - } - else { - p = *table; - if ((n = strcmp(p->s_name,s)) == 0) { /* This is it! */ - if (mode == ENTERING) { - error("Identifier %s redefined",s); - } - return p; + register struct symtab *p; + register int n; + + if (!*table) + { /* No entry for this symbol */ + if (mode == LOOKING) + return (struct symtab *) 0; + /* + * Make new entry + */ + p = (struct symtab *) malloc(sizeof *p); + p->s_left = p->s_right = (struct symtab *) 0; + p->s_name = malloc((unsigned) (strlen(s) + 1)); + strcpy(p->s_name, s); + *table = p; + return p; } - /* Binary tree ..... */ - if (n < 0) return findident(s,mode,&(p->s_left)); - return findident(s,mode,&(p->s_right)); - } - /* NOTREACHED */ + else + { + p = *table; + if ((n = strcmp(p->s_name, s)) == 0) + { /* This is it! */ + if (mode == ENTERING) + { + error("Identifier %s redefined", s); + } + return p; + } + /* Binary tree ..... */ + if (n < 0) + return findident(s, mode, &(p->s_left)); + return findident(s, mode, &(p->s_right)); + } + /* NOTREACHED */ }