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