AUSAM/source/ale/ale1.c

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

#include	"defines.h"

lab()
{
	format( &labs[nlabels++] );
	if( nlabels == 3 )
	{
		print_labs();
		nlabels = 0;
	}
}

format( lab )
struct label	*lab;
{
	register char	*p, *s, *lp;
	char		*b, *e, buf[1024];
	int		n, i, j, maxlen, maxhite;
	int		xoffset, yoffset;

	blankout( lab );

	maxlen = 0;
	maxhite = 0;			/* for the centering		*/
	p = buf;			/* buffer to store the fields	*/
					/* as they will be printed	*/

	for( i = 0; fields[i][0]; i++ )
	{
		for( s = fields[i]; *s; maxlen = ( maxlen < n ? n : maxlen ) )
		{
			maxhite++;
			n = 0;
			b = p;
			e = b + WRAP_WIDTH;
			if( *s == ' ' )
				s++;
			while( ( p < e ) && *s )
				*p++ = *s++, n++;
			if( !*s )
			{
				*p++ = 0;
				continue;
			}
			while( ( *s != ' ' ) && ( p > b ) )
				p--, s--, n--;
			if( p != b )
				*p++ = 0;
			else
			{
				run_err( "field to large for label" );
				break;
			}
		}
	}

	/* now to copy the fields across into the label			*/

	if( maxhite > ( MAXLINES - 1 ) )
	{
		run_err( "to many lines for label" );
		return;
	}
	xoffset = ( lab_width - 1 - maxlen ) / 2;
	yoffset = ( lab_hight - 1 - maxhite ) / 2;
	p = buf;
	for( i = yoffset; i < ( yoffset + maxhite ); i++ )
	{
		lp = &lab->lab_lines[i][xoffset];
		while( *p )
			*lp++ = *p++;
		p++;
	}
}

print_labs()
{
	register	i, j;
	register char	*p;
	int		n;

	for( i = 0; i < lab_hight; i++ )
	{
		for( j = 0; j < 3; j++ )
		{
			p = &labs[j].lab_lines[i];
			while( *p )
				putc_labs( *p++ );
			putc_labs( ' ', outp_L );
		}
		putc_labs( '\n' );
	}
}

blankout( lab )
struct	label	*lab;
{
	register	i, j;

	for( i = 0; i < lab_hight; i++ )
	{
		for( j = 0; j < lab_width; j++ )
			lab->lab_lines[i][j] = ' ';
		lab->lab_lines[i][j] = 0;/* null terminate the string	*/
	}
}

dummy_labs()
{
	register	i, j;
	static char	stars[]	"**************************************************";
	static char	sblks[]	"*                                                 ";

	stars[lab_width+1] = sblks[lab_width+1] = 0;
	stars[lab_width] = ' ';
	sblks[lab_width-1] = '*';
	
	j = a_dlabs[dest];
	while( j-- )
	{
		fprintf( outp_L, "%s%s%s\n", stars, stars, stars );
		for( i = 0; i < ( lab_hight - 3 ); i++ )
			fprintf( outp_L, "%s%s%s\n", sblks, sblks, sblks );
		fprintf( outp_L, "%s%s%s\n", stars, stars, stars );
		putc( '\n', outp_L );
	}
}