1: /* tm.c: split numerical fields */
2: # include "t..c"
3: maknew(str)
4: char *str;
5: {
6: /* make two numerical fields */
7: int dpoint, c;
8: char *p, *q, *ba;
9: p = str;
10: for (ba= 0; c = *str; str++)
11: if (c == '\\' && *(str+1)== '&')
12: ba=str;
13: str=p;
14: if (ba==0)
15: {
16: for (dpoint=0; *str; str++)
17: {
18: if (*str=='.' && !ineqn(str,p) &&
19: (str>p && digit(*(str-1)) ||
20: digit(*(str+1))))
21: dpoint=str;
22: }
23: if (dpoint==0)
24: for(; str>p; str--)
25: {
26: if (digit( * (str-1) ) && !ineqn(str, p))
27: break;
28: }
29: if (!dpoint && p==str) /* not numerical, don't split */
30: return(0);
31: if (dpoint) str=dpoint;
32: }
33: else
34: str = ba;
35: p =str;
36: if (exstore ==0 || exstore >exlim)
37: {
38: exstore = chspace();
39: exlim= exstore+MAXCHS;
40: }
41: q = exstore;
42: while (*exstore++ = *str++);
43: *p = 0;
44: return(q);
45: }
46: ineqn (s, p)
47: char *s, *p;
48: {
49: /* true if s is in a eqn within p */
50: int ineq = 0, c;
51: while (c = *p)
52: {
53: if (s == p)
54: return(ineq);
55: p++;
56: if ((ineq == 0) && (c == delim1))
57: ineq = 1;
58: else
59: if ((ineq == 1) && (c == delim2))
60: ineq = 0;
61: }
62: return(0);
63: }
Defined functions
ineqn
defined in line
46; used 2 times
maknew
defined in line
3; used 2 times