]> diplodocus.org Git - nmh/blob - docs/historical/mh-jun-1982/Extras/libh/brkstg.c
Replaced use of snprintf() with memcpy()/memmove().
[nmh] / docs / historical / mh-jun-1982 / Extras / libh / brkstg.c
1 #ifdef COMMENT
2 Proprietary Rand Corporation, 1981.
3 Further distribution of this software
4 subject to the terms of the Rand
5 license agreement.
6 #endif
7
8 #define NSTR 25
9 char **brkstring(strg,brksep,brkterm) /* returns pointer to static table of substring ptrs */
10 char *strg;
11 char *brksep, *brkterm;
12 {
13
14 register char c, *bp, *sp;
15 static char *broken[NSTR+1]; /* static array of substring start addresses */
16 int bi;
17
18 sp = strg; /* scan string, replacing separators with zeroes */
19
20 for (bi=0; bi<NSTR; bi++) { /* and entering start addrs in "broken" */
21 while (brkany(c = *sp, brksep)) *sp++ = 0;
22 if (!c || brkany(c, brkterm)) {
23 *sp=0;
24 broken[bi] = 0;
25 return(broken); /* terminator found, finish up */
26 }
27
28 broken[bi] = sp; /* set next start addr */
29
30 while ((c = *++sp) && !brkany(c,brksep) && !brkany(c,brkterm));
31
32 }
33 broken[NSTR] = 0; /* reached limit of NSTR substrings */
34 return (broken);
35 }
36
37 brkany (chr,strg) /* returns 1 if chr in strg, 0 otherwise */
38 char chr,*strg;
39 {
40 register char *sp;
41
42 for (sp=strg; *sp; sp++)
43 if (chr == *sp) return (1);
44 return (0);
45 }