Bell 32V development
[unix-history] / usr / src / cmd / cvtbl.c
CommitLineData
3b600ead
TL
1main(argc,argv)
2 char *argv[];
3{
4/* program to convert tables to new format */
5char *col[20], *len[20];
6char s[200], *p;
7char stt[30];
8int i,j,k,m, first;
9extern int cin, cout;
10for(i=0;i<20;i++)
11 col[i]=len[i]=0;
12first=1;
13while (argc>1 || first)
14 {
15 first=0;
16 if (argc>1)
17 {
18 cin = copen(argv[1], 'r');
19 cout = copen(tmpnam(stt), 'w');
20 }
21 if (cin<0)
22 {
23 printf("can't open file %s\n",argv[1]);
24 cexit(1);
25 }
26 while (gets(s))
27 {
28 puts(s);
29 if (!prefix(".TS", s))
30 continue;
31 gets(s);
32 k=0;
33 for(p=s; *p; p++)
34 {
35 if (letter(*p))
36 {
37 col[k++]=p;
38 while (letter(*p))
39 p++;
40 if (digit(*p))
41 len[k-1]=p;
42 while (digit(*p))
43 p++;
44 }
45 if (*p==0)break;
46 }
47 for(i=m=0; i<k; i++)
48 m=max(length(col[i]),m);
49 for(i=0; i<m; i++)
50 {
51 for(j=0; j<k; j++)
52 {
53 printf("%c ", *(col[j])++);
54 if (!letter(*(col[j]))) col[j]--;
55 if (i==0 && len[i])
56 {
57 p=len[j];
58 while (digit(*p))
59 putchar(*p++);
60 }
61 }
62 if (i+1==m)
63 printf(".");
64 printf("\n");
65 }
66 for(i=0;i<20; i++)
67 col[i]=len[i]=0;
68 }
69 if (argc>1)
70 {
71 printf(-1, s, "mv %s %s", stt, argv[1]);
72 system(s);
73 argc--;
74 argv++;
75 }
76 }
77}
78length(s)
79 char *s;
80{
81int k;
82for(k=0; s[k]; k++)
83 if (!letter(s[k])) break;
84return(k);
85}
86digit(c)
87{
88return(c>='0' && c<= '9');
89}
90letter(c)
91{
92return((c>='a' && c<= 'z') || (c>= 'A' && c<='Z'));
93}
94prefix(small, big)
95 char *small, *big;
96{
97int c;
98while ((c= *small++) == *big++)
99 if (c==0) return(1);
100return(c==0);
101}
102max(a,b)
103{
104return(a>b? a : b);
105}