|
|
1.1 ! root 1: /* smatch.c - match a switch */ ! 2: ! 3: #include "../h/mh.h" ! 4: ! 5: ! 6: #define abs(i) (i < 0 ? -i : i) ! 7: ! 8: ! 9: smatch(string, swp) ! 10: register char *string; ! 11: register struct swit *swp; ! 12: { ! 13: register char *sp, ! 14: *tcp; ! 15: struct swit *tp; ! 16: int firstone, ! 17: stringlen; ! 18: ! 19: firstone = UNKWNSW; ! 20: ! 21: for (stringlen = strlen (string), tp = swp; tcp = tp -> sw; tp++) { ! 22: if (stringlen < abs (tp -> minchars)) ! 23: continue; /* no match */ ! 24: for (sp = string; *sp == *tcp++;) { ! 25: if (*sp++ == 0) ! 26: return (tp - swp);/* exact match */ ! 27: } ! 28: if (*sp != 0) { ! 29: if (*sp != ' ') ! 30: continue; /* no match */ ! 31: if (*--tcp == 0) ! 32: return (tp - swp);/* exact match */ ! 33: } ! 34: if (firstone == UNKWNSW) ! 35: firstone = tp - swp; ! 36: else ! 37: firstone = AMBIGSW; ! 38: } ! 39: ! 40: return (firstone); ! 41: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.