tc.c revision 7c478bd95313f5f23a4c958a745db2134aa03244
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
/* All Rights Reserved */
/*
* Copyright (c) 1980 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*/
/*
* Copyright (c) 1983, 1984 1985, 1986, 1987, 1988, Sun Microsystems, Inc.
* All Rights Reserved.
*/
#ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.1 */
/* tc.c: find character not in table to delimit fields */
# include "t..c"
choochar()
{
/* 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 (*s > 0 && *s <= 127)
had[*s++]=1;
else
s++;
}
s=table[ilin][icol].rcol;
if (point(s))
while (*s)
{
if (*s > 0 && *s <= 127)
had[*s++]=1;
else
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(gettext("couldn't find characters to use for delimiters"));
return;
}
point(s)
{
return(s>= 128 || s<0);
}