xref: /csrg-svn/old/tbl/tc.c (revision 11038)
1*11038Sshannon /*	tc.c	4.1	83/02/12	*/
2*11038Sshannon 
3*11038Sshannon  /* tc.c: find character not in table to delimit fields */
4*11038Sshannon # include "t..c"
5*11038Sshannon choochar()
6*11038Sshannon {
7*11038Sshannon /* choose funny characters to delimit fields */
8*11038Sshannon int had[128], ilin,icol, k;
9*11038Sshannon char *s;
10*11038Sshannon for(icol=0; icol<128; icol++)
11*11038Sshannon 	had[icol]=0;
12*11038Sshannon F1 = F2 = 0;
13*11038Sshannon for(ilin=0;ilin<nlin;ilin++)
14*11038Sshannon 	{
15*11038Sshannon 	if (instead[ilin]) continue;
16*11038Sshannon 	if (fullbot[ilin]) continue;
17*11038Sshannon 	for(icol=0; icol<ncol; icol++)
18*11038Sshannon 		{
19*11038Sshannon 		k = ctype(ilin, icol);
20*11038Sshannon 		if (k==0 || k == '-' || k == '=')
21*11038Sshannon 			continue;
22*11038Sshannon 		s = table[ilin][icol].col;
23*11038Sshannon 		if (point(s))
24*11038Sshannon 		while (*s)
25*11038Sshannon 			had[*s++]=1;
26*11038Sshannon 		s=table[ilin][icol].rcol;
27*11038Sshannon 		if (point(s))
28*11038Sshannon 		while (*s)
29*11038Sshannon 			had[*s++]=1;
30*11038Sshannon 		}
31*11038Sshannon 	}
32*11038Sshannon /* choose first funny character */
33*11038Sshannon for(
34*11038Sshannon 	s="\002\003\005\006\007!%&#/?,:;<=>@`^~_{}+-*ABCDEFGHIJKMNOPQRSTUVWXYZabcdefgjkoqrstwxyz";
35*11038Sshannon 		*s; s++)
36*11038Sshannon 	{
37*11038Sshannon 	if (had[*s]==0)
38*11038Sshannon 		{
39*11038Sshannon 		F1= *s;
40*11038Sshannon 		had[F1]=1;
41*11038Sshannon 		break;
42*11038Sshannon 		}
43*11038Sshannon 	}
44*11038Sshannon /* choose second funny character */
45*11038Sshannon for(
46*11038Sshannon 	s="\002\003\005\006\007:_~^`@;,<=>#%&!/?{}+-*ABCDEFGHIJKMNOPQRSTUVWXZabcdefgjkoqrstuwxyz";
47*11038Sshannon 		*s; s++)
48*11038Sshannon 	{
49*11038Sshannon 	if (had[*s]==0)
50*11038Sshannon 		{
51*11038Sshannon 		F2= *s;
52*11038Sshannon 		break;
53*11038Sshannon 		}
54*11038Sshannon 	}
55*11038Sshannon if (F1==0 || F2==0)
56*11038Sshannon 	error("couldn't find characters to use for delimiters");
57*11038Sshannon return;
58*11038Sshannon }
59*11038Sshannon point(s)
60*11038Sshannon {
61*11038Sshannon return(s>= 128 || s<0);
62*11038Sshannon }
63