118739Sedward /*
2*62479Sbostic * Copyright (c) 1983, 1993
3*62479Sbostic * The Regents of the University of California. All rights reserved.
433514Sbostic *
542954Sbostic * This code is derived from software contributed to Berkeley by
642954Sbostic * Edward Wang at The University of California, Berkeley.
742954Sbostic *
842835Sbostic * %sccs.include.redist.c%
918739Sedward */
1018739Sedward
1133514Sbostic #ifndef lint
12*62479Sbostic static char sccsid[] = "@(#)wwinsline.c 8.1 (Berkeley) 06/06/93";
1333514Sbostic #endif /* not lint */
1433514Sbostic
1514416Sedward #include "ww.h"
1614416Sedward
wwinsline(w,row)1714987Sedward wwinsline(w, row)
1814416Sedward register struct ww *w;
1914987Sedward int row;
2014416Sedward {
2114416Sedward register i;
2214459Sedward register union ww_char **cpp, **cqq;
2314717Sedward register union ww_char *cp;
2414987Sedward int row1, row2;
2514459Sedward char deleted;
2614717Sedward int visible;
2714416Sedward
2814416Sedward /*
2914459Sedward * Scroll first.
3014416Sedward */
3114987Sedward if ((row1 = row) < w->ww_i.t) {
3214987Sedward row1 = w->ww_i.t;
3314717Sedward visible = 0;
3414717Sedward } else
3514717Sedward visible = 1;
3614987Sedward if ((row2 = w->ww_b.b) > w->ww_i.b) {
3714987Sedward row2 = w->ww_i.b;
3814987Sedward }
3914987Sedward deleted = wwscroll1(w, row1, row2, -1, visible);
4014459Sedward
4114416Sedward /*
4214459Sedward * Fix the buffer.
4314459Sedward * But leave clearing the last line for wwclreol().
4414416Sedward */
4514987Sedward cpp = &w->ww_buf[w->ww_b.b];
4614459Sedward cqq = cpp - 1;
4714717Sedward cp = *cqq;
4814987Sedward for (i = w->ww_b.b - row; --i > 0;)
4914459Sedward *--cpp = *--cqq;
5014717Sedward *cqq = cp;
5114416Sedward
5214416Sedward /*
5314459Sedward * Now clear the last line.
5414416Sedward */
5514717Sedward if (visible)
5614987Sedward wwclreol1(w, row, w->ww_b.l, deleted);
5733683Sedward else {
5833683Sedward cp += w->ww_b.l;
5914987Sedward for (i = w->ww_b.nc; --i >= 0;)
6014717Sedward cp++->c_w = ' ';
6133683Sedward }
6214416Sedward }
63