blob: 85a583c6363e400863fec23e10a9cf7edccae011 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
/*
* Copyright 1991 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/* 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.
*/
#pragma ident "%Z%%M% %I% %E% SMI"
/* tc.c: find character not in table to delimit fields */
# include "t..c"
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 (*s > 0 && (unsigned char)*s <= 127)
had[*s++]=1;
else
s++;
}
s=table[ilin][icol].rcol;
if (point(s))
while (*s)
{
if (*s > 0 && (unsigned char)*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;
}
int
point(int s)
{
return(s>= 128 || s<0);
}
|