Blame


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