65 lines
1.3 KiB
C
65 lines
1.3 KiB
C
/* tc.c: find character not in table to delimit fields */
|
|
# include "t.h"
|
|
|
|
void
|
|
choochar(void)
|
|
{
|
|
/* choose funny characters to delimit fields */
|
|
int had[256], ilin, icol, k;
|
|
char *s;
|
|
|
|
for (icol = 0; icol < 128; icol++)
|
|
had[icol] = 0;
|
|
F1 = F2 = 0;
|
|
for (ilin = 0; ilin < nlin; ilin++) {
|
|
if (instead[ilin])
|
|
continue;
|
|
if (fullbot[ilin])
|
|
continue;
|
|
for (icol = 0; icol < ncol; icol++) {
|
|
k = ctype(ilin, icol);
|
|
if (k == 0 || k == '-' || k == '=')
|
|
continue;
|
|
s = table[ilin][icol].col;
|
|
if (point(s))
|
|
while (*s)
|
|
had[(unsigned char)*s++] = 1;
|
|
s = table[ilin][icol].rcol;
|
|
if (point(s))
|
|
while (*s)
|
|
had[(unsigned char)*s++] = 1;
|
|
}
|
|
}
|
|
/* choose first funny character */
|
|
for (
|
|
s = "\002\003\005\006\007!%&#/?,:;<=>@`^~_{}+-*ABCDEFGHIJKMNOPQRSTUVWXYZabcdefgjkoqrstwxyz";
|
|
*s; s++) {
|
|
if (had[(unsigned char)*s] == 0) {
|
|
F1 = (unsigned char)*s;
|
|
had[F1] = 1;
|
|
break;
|
|
}
|
|
}
|
|
/* choose second funny character */
|
|
for (
|
|
s = "\002\003\005\006\007:_~^`@;,<=>#%&!/?{}+-*ABCDEFGHIJKMNOPQRSTUVWXZabcdefgjkoqrstuwxyz";
|
|
*s; s++) {
|
|
if (had[(unsigned char)*s] == 0) {
|
|
F2 = (unsigned char)*s;
|
|
break;
|
|
}
|
|
}
|
|
if (F1 == 0 || F2 == 0)
|
|
error("couldn't find characters to use for delimiters");
|
|
return;
|
|
}
|
|
|
|
|
|
int
|
|
point(char *ss)
|
|
{
|
|
int s = (int)(uintptr)ss;
|
|
return(s >= 128 || s < 0);
|
|
}
|
|
|
|
|