1BSD/ex-1.1/ex_vcolumn.c

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

#include "ex.h"
#include "ex_tty.h"
#include "ex_vis.h"
/*
 * Ex - a text editor
 * Bill Joy UCB October, 1977
 */

/*
 * Column returns the number of
 * columns occupied by printing the
 * characters through position cp of the
 * current line.
 */
column(cp)
	register char *cp;
{

	if (cp == 0)
		cp = &linebuf[LBSIZE - 2];
	return (qcolumn(cp, 0));
}

qcolumn(lim, gp)
	register char *lim, *gp;
{
	register int x;
	int (*OO)();

	OO = Outchar;
	Outchar = &qcount;
	vcntcol = 0;
	if (lim != NIL)
		x = lim[1], lim[1] = 0;
	pline(0);
	if (lim != NIL)
		lim[1] = x;
	if (gp)
		while (*gp)
			putchar(*gp++);
	Outchar = OO;
	return (vcntcol);
}

qcount(c)
	char c;
{

	switch (c) {
		case '\t':
			vcntcol =+ 8;
			vcntcol =& ~07;
			break;
		default:
			vcntcol++;
	}
}