diff options
Diffstat (limited to 'regexp.c')
-rw-r--r-- | regexp.c | 176 |
1 files changed, 102 insertions, 74 deletions
diff --git a/regexp.c b/regexp.c index b54c8f07ccc3f..fcf7c9a836050 100644 --- a/regexp.c +++ b/regexp.c @@ -207,12 +207,13 @@ STATIC int strcspn(); * of the structure of the compiled regexp. */ regexp * -regcomp(char *exp) +regcomp(exp) +char *exp; { - regexp *r; - char *scan; - char *longest; - int len; + register regexp *r; + register char *scan; + register char *longest; + register int len; int flags; if (exp == NULL) @@ -296,12 +297,14 @@ regcomp(char *exp) * follows makes it hard to avoid. */ static char * -reg(int paren, int *flagp) +reg(paren, flagp) +int paren; /* Parenthesized? */ +int *flagp; { - char *ret; - char *br; - char *ender; - int parno = 0; + register char *ret; + register char *br; + register char *ender; + register int parno = 0; int flags; *flagp = HASWIDTH; /* Tentatively. */ @@ -366,11 +369,12 @@ reg(int paren, int *flagp) * Implements the concatenation operator. */ static char * -regbranch(int *flagp) +regbranch(flagp) +int *flagp; { - char *ret; - char *chain; - char *latest; + register char *ret; + register char *chain; + register char *latest; int flags; *flagp = WORST; /* Tentatively. */ @@ -404,11 +408,12 @@ regbranch(int *flagp) * endmarker role is not redundant. */ static char * -regpiece(int *flagp) +regpiece(flagp) +int *flagp; { - char *ret; - char op; - char *next; + register char *ret; + register char op; + register char *next; int flags; ret = regatom(&flags); @@ -467,9 +472,10 @@ regpiece(int *flagp) * separate node; the code is simpler that way and it's not worth fixing. */ static char * -regatom(int *flagp) +regatom(flagp) +int *flagp; { - char *ret; + register char *ret; int flags; *flagp = WORST; /* Tentatively. */ @@ -486,8 +492,8 @@ regatom(int *flagp) *flagp |= HASWIDTH|SIMPLE; break; case '[': { - int clss; - int classend; + register int clss; + register int classend; if (*regparse == '^') { /* Complement of range. */ ret = regnode(ANYBUT); @@ -547,8 +553,8 @@ regatom(int *flagp) *flagp |= HASWIDTH|SIMPLE; break; default: { - int len; - char ender; + register int len; + register char ender; regparse--; len = (int) strcspn(regparse, META); @@ -577,10 +583,11 @@ regatom(int *flagp) - regnode - emit a node */ static char * /* Location. */ -regnode(char op) +regnode(op) +char op; { - char *ret; - char *ptr; + register char *ret; + register char *ptr; ret = regcode; if (ret == ®dummy) { @@ -601,7 +608,8 @@ regnode(char op) - regc - emit (if appropriate) a byte of code */ static void -regc(char b) +regc(b) +char b; { if (regcode != ®dummy) *regcode++ = b; @@ -615,11 +623,13 @@ regc(char b) * Means relocating the operand. */ static void -reginsert(char op, char *opnd) +reginsert(op, opnd) +char op; +char *opnd; { - char *src; - char *dst; - char *place; + register char *src; + register char *dst; + register char *place; if (regcode == ®dummy) { regsize += 3; @@ -642,11 +652,13 @@ reginsert(char op, char *opnd) - regtail - set the next-pointer at the end of a node chain */ static void -regtail(char *p, char *val) +regtail(p, val) +char *p; +char *val; { - char *scan; - char *temp; - int offset; + register char *scan; + register char *temp; + register int offset; if (p == ®dummy) return; @@ -672,7 +684,9 @@ regtail(char *p, char *val) - regoptail - regtail on operand of first argument; nop if operandless */ static void -regoptail(char *p, char *val) +regoptail(p, val) +char *p; +char *val; { /* "Operandless" and "op != BRANCH" are synonymous in practice. */ if (p == NULL || p == ®dummy || OP(p) != BRANCH) @@ -709,9 +723,12 @@ STATIC char *regprop(); - regexec - match a regexp against a string */ int -regexec2(regexp *prog, char *string, int notbol) +regexec2(prog, string, notbol) +register regexp *prog; +register char *string; +int notbol; { - char *s; + register char *s; /* Be paranoid... */ if (prog == NULL || string == NULL) { @@ -768,7 +785,9 @@ regexec2(regexp *prog, char *string, int notbol) } int -regexec(regexp *prog, char *string) +regexec(prog, string) +register regexp *prog; +register char *string; { return regexec2(prog, string, 0); } @@ -777,11 +796,13 @@ regexec(regexp *prog, char *string) - regtry - try match at specific point */ static int /* 0 failure, 1 success */ -regtry(regexp *prog, char *string) +regtry(prog, string) +regexp *prog; +char *string; { - int i; - char **sp; - char **ep; + register int i; + register char **sp; + register char **ep; reginput = string; regstartp = prog->startp; @@ -812,10 +833,11 @@ regtry(regexp *prog, char *string) * by recursion. */ static int /* 0 failure, 1 success */ -regmatch(char *prog) +regmatch(prog) +char *prog; { - char *scan; /* Current node. */ - char *next; /* Next node. */ + register char *scan; /* Current node. */ + char *next; /* Next node. */ scan = prog; #ifdef DEBUG @@ -844,8 +866,8 @@ regmatch(char *prog) reginput++; break; case EXACTLY: { - int len; - char *opnd; + register int len; + register char *opnd; opnd = OPERAND(scan); /* Inline the first character, for speed. */ @@ -880,8 +902,8 @@ regmatch(char *prog) case OPEN+7: case OPEN+8: case OPEN+9: { - int no; - char *save; + register int no; + register char *save; no = OP(scan) - OPEN; save = reginput; @@ -909,8 +931,8 @@ regmatch(char *prog) case CLOSE+7: case CLOSE+8: case CLOSE+9: { - int no; - char *save; + register int no; + register char *save; no = OP(scan) - CLOSE; save = reginput; @@ -930,7 +952,7 @@ regmatch(char *prog) /* NOTREACHED */ break; case BRANCH: { - char *save; + register char *save; if (OP(next) != BRANCH) /* No choice. */ next = OPERAND(scan); /* Avoid recursion. */ @@ -950,10 +972,10 @@ regmatch(char *prog) break; case STAR: case PLUS: { - char nextch; - int no; - char *save; - int min; + register char nextch; + register int no; + register char *save; + register int min; /* * Lookahead to avoid useless match attempts @@ -1004,11 +1026,12 @@ regmatch(char *prog) - regrepeat - repeatedly match something simple, report how many */ static int -regrepeat(char *p) +regrepeat(p) +char *p; { - int count = 0; - char *scan; - char *opnd; + register int count = 0; + register char *scan; + register char *opnd; scan = reginput; opnd = OPERAND(p); @@ -1049,9 +1072,10 @@ regrepeat(char *p) - regnext - dig the "next" pointer out of a node */ static char * -regnext(char *p) +regnext(p) +register char *p; { - int offset; + register int offset; if (p == ®dummy) return(NULL); @@ -1074,11 +1098,12 @@ STATIC char *regprop(); - regdump - dump a regexp onto stdout in vaguely comprehensible form */ void -regdump(regexp *r) +regdump(r) +regexp *r; { - char *s; - char op = EXACTLY; /* Arbitrary non-END op. */ - char *next; + register char *s; + register char op = EXACTLY; /* Arbitrary non-END op. */ + register char *next; s = r->program + 1; @@ -1116,9 +1141,10 @@ regdump(regexp *r) - regprop - printable representation of opcode */ static char * -regprop(char *op) +regprop(op) +char *op; { - char *p; + register char *p; static char buf[50]; (void) strcpy(buf, ":"); @@ -1207,11 +1233,13 @@ regprop(char *op) */ static int -strcspn(char *s1, char *s2) +strcspn(s1, s2) +char *s1; +char *s2; { - char *scan1; - char *scan2; - int count; + register char *scan1; + register char *scan2; + register int count; count = 0; for (scan1 = s1; *scan1 != '\0'; scan1++) { |