|
|
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.