125061Sjaap #ifndef lint
2*25087Sjaap static char sccsid[] = "@(#)delimfields.c	1.2 (CWI) 85/10/02";
325061Sjaap #endif lint
425061Sjaap 
525061Sjaap 
6*25087Sjaap /*
7*25087Sjaap  * find character not in table to delimit fields
8*25087Sjaap  */
925061Sjaap 
1025061Sjaap #include "defs.h"
1125061Sjaap #include "ext.h"
1225061Sjaap 
1325061Sjaap /*
1425061Sjaap  * choose funny characters to delimit fields
1525061Sjaap  */
1625061Sjaap 
1725061Sjaap /*
1825061Sjaap  * strings to pick the characters from
1925061Sjaap  */
2025061Sjaap static char *funny1 = {"\002\003\005\006\007!%&#/?,:;<=>@`^~_{}+-*ABCDEFGHIJKMNOPQRSTUVWXYZabcdefgjkoqrstwxyz"};
2125061Sjaap static char *funny2 = {"\002\003\005\006\007:_~^`@;,<=>#%&!/?{}+-*ABCDEFGHIJKMNOPQRSTUVWXZabcdefgjkoqrstuwxyz"};
2225061Sjaap 
choochar()2325061Sjaap choochar(){
2425061Sjaap 	int had[128], ilin, icol, k;
2525061Sjaap 	char *s;
2625061Sjaap 
2725061Sjaap 	for(icol = 0; icol < 128; icol++)
2825061Sjaap 		had[icol] = 0;
2925061Sjaap 	F1 = F2 = 0;
3025061Sjaap 	for(ilin = 0; ilin < nlin; ilin++){
3125061Sjaap 		if(instead[ilin])
3225061Sjaap 			continue;
3325061Sjaap 		if(fullbot[ilin])
3425061Sjaap 			continue;
3525061Sjaap 		for(icol = 0; icol < ncol; icol++){
3625061Sjaap 			k = ctype(ilin, icol);
3725061Sjaap 			if(k == 0 || k == '-' || k == '=')
3825061Sjaap 				continue;
3925061Sjaap 			s = table[ilin][icol].col;
4025061Sjaap 			if(point(s))
4125061Sjaap 				while(*s)
4225061Sjaap 					had[*s++] = 1;
4325061Sjaap 			s = table[ilin][icol].rcol;
4425061Sjaap 			if(point(s))
4525061Sjaap 				while(*s)
4625061Sjaap 					had[*s++] = 1;
4725061Sjaap 		}
4825061Sjaap 	}
4925061Sjaap 	/*
5025061Sjaap 	 * choose first funny character
5125061Sjaap 	 */
5225061Sjaap 	for(s = funny1; *s; s++){
5325061Sjaap 		if(had[*s] == 0){
5425061Sjaap 			F1 = *s;
5525061Sjaap 			had[F1] = 1;
5625061Sjaap 			break;
5725061Sjaap 		}
5825061Sjaap 	}
5925061Sjaap 	/*
6025061Sjaap 	 * choose second funny character
6125061Sjaap 	 */
6225061Sjaap 	for(s = funny2; *s; s++){
6325061Sjaap 		if(had[*s] == 0){
6425061Sjaap 			F2 = *s;
6525061Sjaap 			break;
6625061Sjaap 		}
6725061Sjaap 	}
6825061Sjaap 	if(F1 == 0 || F2 == 0)
6925061Sjaap 		error("couldn't find characters to use for delimiters");
7025061Sjaap 	return;
7125061Sjaap }
7225061Sjaap 
7325061Sjaap /*
7425061Sjaap  * Very Ugly!!
7525061Sjaap  * if s is not a character, we decide it is a pointer, so return true
7625061Sjaap  *
7725061Sjaap  * (Need to check or we can replace it with
7825061Sjaap #define point	((s) >= 128 || (s) < 0)
7925061Sjaap  * or even isascii)
8025061Sjaap  */
point(s)8125061Sjaap point(s){
8225061Sjaap 	return(s >= 128 || s < 0);
8325061Sjaap }
84