lint fixes
[unix-history] / usr / src / old / tbl / tm.c
CommitLineData
476fcd16
SL
1#ifndef lint
2static char sccsid[] = "@(#)tm.c 4.2 %G%";
3#endif
ae4ebdcf
BS
4
5 /* tm.c: split numerical fields */
6# include "t..c"
7maknew(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=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=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(q);
49 }
50ineqn (s, p)
51 char *s, *p;
52{
53/* true if s is in a eqn within p */
54int ineq = 0, c;
55while (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 }
66return(0);
67}