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