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