Work on file ex-1.1/ex_vcolumn.c
Synthesized-from: 1bsd
--- /dev/null
+#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++;
+ }
+}