1*14514Ssam #ifndef lint 2*14514Ssam static char sccsid[] = "@(#)tm.c 4.2 08/11/83"; 3*14514Ssam #endif 411043Sshannon 511043Sshannon /* tm.c: split numerical fields */ 611043Sshannon # include "t..c" 711043Sshannon maknew(str) 811043Sshannon char *str; 911043Sshannon { 1011043Sshannon /* make two numerical fields */ 1111043Sshannon int dpoint, c; 1211043Sshannon char *p, *q, *ba; 1311043Sshannon p = str; 1411043Sshannon for (ba= 0; c = *str; str++) 1511043Sshannon if (c == '\\' && *(str+1)== '&') 1611043Sshannon ba=str; 1711043Sshannon str=p; 1811043Sshannon if (ba==0) 1911043Sshannon { 2011043Sshannon for (dpoint=0; *str; str++) 2111043Sshannon { 2211043Sshannon if (*str=='.' && !ineqn(str,p) && 2311043Sshannon (str>p && digit(*(str-1)) || 2411043Sshannon digit(*(str+1)))) 2511043Sshannon dpoint=str; 2611043Sshannon } 2711043Sshannon if (dpoint==0) 2811043Sshannon for(; str>p; str--) 2911043Sshannon { 3011043Sshannon if (digit( * (str-1) ) && !ineqn(str, p)) 3111043Sshannon break; 3211043Sshannon } 3311043Sshannon if (!dpoint && p==str) /* not numerical, don't split */ 3411043Sshannon return(0); 3511043Sshannon if (dpoint) str=dpoint; 3611043Sshannon } 3711043Sshannon else 3811043Sshannon str = ba; 3911043Sshannon p =str; 4011043Sshannon if (exstore ==0 || exstore >exlim) 4111043Sshannon { 4211043Sshannon exstore = chspace(); 4311043Sshannon exlim= exstore+MAXCHS; 4411043Sshannon } 4511043Sshannon q = exstore; 4611043Sshannon while (*exstore++ = *str++); 4711043Sshannon *p = 0; 4811043Sshannon return(q); 4911043Sshannon } 5011043Sshannon ineqn (s, p) 5111043Sshannon char *s, *p; 5211043Sshannon { 5311043Sshannon /* true if s is in a eqn within p */ 5411043Sshannon int ineq = 0, c; 5511043Sshannon while (c = *p) 5611043Sshannon { 5711043Sshannon if (s == p) 5811043Sshannon return(ineq); 5911043Sshannon p++; 6011043Sshannon if ((ineq == 0) && (c == delim1)) 6111043Sshannon ineq = 1; 6211043Sshannon else 6311043Sshannon if ((ineq == 1) && (c == delim2)) 6411043Sshannon ineq = 0; 6511043Sshannon } 6611043Sshannon return(0); 6711043Sshannon } 68