|
|
1.1 ! root 1: /* brkstring.c - break string into an array of strings */ ! 2: ! 3: #include "../h/mh.h" ! 4: ! 5: ! 6: static char *broken[MAXARGS+1]; /* array of substring start addresses */ ! 7: ! 8: static int brkany(); ! 9: ! 10: char ** ! 11: brkstring(strg, brksep, brkterm) ! 12: register char *strg; ! 13: register char *brksep, *brkterm; ! 14: { ! 15: register int bi; ! 16: register char c, ! 17: *sp; ! 18: ! 19: sp = strg; /* scan string, replacing separators with ! 20: zeroes */ ! 21: ! 22: for (bi = 0; bi < MAXARGS; bi++) { ! 23: /* and entering start addrs in "broken" */ ! 24: while (brkany (c = *sp, brksep)) ! 25: *sp++ = 0; ! 26: if (!c || brkany (c, brkterm)) { ! 27: *sp = 0; ! 28: broken[bi] = 0; ! 29: return broken; /* terminator found, finish up */ ! 30: } ! 31: ! 32: broken[bi] = sp; /* set next start addr */ ! 33: while ((c = *++sp) && !brkany (c, brksep) && !brkany (c, brkterm)) ! 34: continue; ! 35: } ! 36: broken[MAXARGS] = 0; /* reached limit of MAXARGS substrings */ ! 37: ! 38: return broken; ! 39: } ! 40: ! 41: ! 42: static int ! 43: brkany(chr, strg) /* returns 1 if chr in strg, 0 otherwise */ ! 44: register char chr, *strg; ! 45: { ! 46: register char *sp; ! 47: ! 48: if (strg) ! 49: for (sp = strg; *sp; sp++) ! 50: if (chr == *sp) ! 51: return 1; ! 52: return 0; ! 53: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.