ww_availmodes and stuff
[unix-history] / usr / src / usr.bin / window / wwinsline.c
CommitLineData
2c7129ee 1#ifndef lint
14f251df 2static char *sccsid = "@(#)wwinsline.c 3.2 83/08/11";
2c7129ee
EW
3#endif
4
5#include "ww.h"
6
7wwinsline(w, line)
8register struct ww *w;
9int line;
10{
11 register i;
14f251df
EW
12 register union ww_char **cpp, **cqq;
13 union ww_char *tmp;
14 int srow, erow;
15 char deleted;
2c7129ee
EW
16
17 /*
14f251df 18 * Scroll first.
2c7129ee 19 */
14f251df
EW
20 if ((srow = line - w->ww_scroll) < 0)
21 srow = 0;
22 if ((erow = w->ww_nline - w->ww_scroll - 1) >= w->ww_w.nr)
23 erow = w->ww_w.nr - 1;
24 deleted = wwscroll1(w, srow, erow, -1, 1);
25
2c7129ee 26 /*
14f251df
EW
27 * Fix the buffer.
28 * But leave clearing the last line for wwclreol().
2c7129ee 29 */
14f251df
EW
30 cpp = &w->ww_buf[w->ww_nline];
31 cqq = cpp - 1;
32 tmp = *cqq;
33 for (i = w->ww_nline - line - 1; --i >= 0;)
34 *--cpp = *--cqq;
35 *cqq = tmp;
2c7129ee 36
2c7129ee 37 /*
14f251df 38 * Now clear the last line.
2c7129ee 39 */
14f251df 40 wwclreol1(w, line, 0, deleted);
2c7129ee 41}