BSD 1 development
[unix-history] / ex-1.1 / ex_vcolumn.c
#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++;
}
}