32V/usr/src/cmd/cvtbl.c

Compare this file to the similar file:
Show the results in this format:

main(argc,argv)
	char *argv[];
{
/* program to convert tables to new format */
char *col[20], *len[20];
char s[200], *p;
char stt[30];
int i,j,k,m, first;
extern int cin, cout;
for(i=0;i<20;i++)
	col[i]=len[i]=0;
first=1;
while (argc>1 || first)
	{
	first=0;
	if (argc>1)
		{
		cin = copen(argv[1], 'r');
		cout = copen(tmpnam(stt), 'w');
		}
	if (cin<0)
		{
		printf("can't open file %s\n",argv[1]);
		cexit(1);
		}
	while (gets(s))
		{
		puts(s);
		if (!prefix(".TS", s))
			continue;
		gets(s);
		k=0;
		for(p=s; *p; p++)
			{
			if (letter(*p))
				{
				col[k++]=p;
				while (letter(*p))
					p++;
				if (digit(*p))
					len[k-1]=p;
				while (digit(*p))
					p++;
				}
			if (*p==0)break;
			}
		for(i=m=0; i<k; i++)
			m=max(length(col[i]),m);
		for(i=0; i<m; i++)
			{
			for(j=0; j<k; j++)
				{
				printf("%c ", *(col[j])++);
				if (!letter(*(col[j]))) col[j]--;
				if (i==0 && len[i])
					{
					p=len[j];
					while (digit(*p))
						putchar(*p++);
					}
				}
			if (i+1==m)
				printf(".");
			printf("\n");
			}
		for(i=0;i<20; i++)
			col[i]=len[i]=0;
		}
	if (argc>1)
		{
		printf(-1, s, "mv %s %s", stt, argv[1]);
		system(s);
		argc--;
		argv++;
		}
	}
}
length(s)
	char *s;
{
int k;
for(k=0; s[k]; k++)
	if (!letter(s[k])) break;
return(k);
}
digit(c)
{
return(c>='0' && c<= '9');
}
letter(c)
{
return((c>='a' && c<= 'z') || (c>= 'A' && c<='Z'));
}
prefix(small, big)
	char *small, *big;
{
int c;
while ((c= *small++) == *big++)
	if (c==0) return(1);
return(c==0);
}
max(a,b)
{
return(a>b? a : b);
}