AUSAM/source/S/trbas.c

/*
 *  trbas.c
 *
 *	translates basic multi-line RSTS programs
 *	usable as a filter
 */

char obuff[500], *obp, *last_, nlseen;

main()

{	char c;

	obp = obuff;

	while( c = getchar() )

	{	switch(c)

		{	case 015 :	break;

			case '\n' :	last_ = obp;
					*obp++ = '_';
					nlseen = 1;
					*obp++ = c;
					break;

			default :	if(nlseen) if( ('0'<=c) && (c<='9') ) dump();
					nlseen = 0;
					*obp++ = c;
		}
	}

	dump();
}

dump()

{	int n;

	if(last_) *last_ = ' ';
	last_ = 0;
	n = obp - obuff;
	if(n)
	{	if(write(1,obuff,n) != n) errexit();
		obp = obuff;
	}
}

errexit()

{	write(2,"Write error - run aborted\n",26);
	exit();
}