123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- /* tc.c: find character not in table to delimit fields */
- # include "t.h"
- void
- choochar(void)
- {
- /* choose funny characters to delimit fields */
- int had[128], 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) {
- if((unsigned char)*s < 128)
- had[(unsigned char)*s] = 1;
- s++;
- }
- s = table[ilin][icol].rcol;
- if (point(s))
- while (*s) {
- if((unsigned char)*s < 128)
- had[(unsigned char)*s] = 1;
- s++;
- }
- }
- }
- /* choose first funny character */
- for (
- s = "\002\003\005\006\007!%&#/?,:;<=>@`^~_{}+-*ABCDEFGHIJKMNOPQRSTUVWXYZabcdefgjkoqrstwxyz";
- *s; s++) {
- if (had[*s] == 0) {
- F1 = *s;
- had[F1] = 1;
- break;
- }
- }
- /* choose second funny character */
- for (
- s = "\002\003\005\006\007:_~^`@;,<=>#%&!/?{}+-*ABCDEFGHIJKMNOPQRSTUVWXZabcdefgjkoqrstuwxyz";
- *s; s++) {
- if (had[*s] == 0) {
- F2 = *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);
- }
|