1 #ifndef lint 2 static char *sccsid = "@(#)wwinsline.c 3.2 83/08/11"; 3 #endif 4 5 #include "ww.h" 6 7 wwinsline(w, line) 8 register struct ww *w; 9 int line; 10 { 11 register i; 12 register union ww_char **cpp, **cqq; 13 union ww_char *tmp; 14 int srow, erow; 15 char deleted; 16 17 /* 18 * Scroll first. 19 */ 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 26 /* 27 * Fix the buffer. 28 * But leave clearing the last line for wwclreol(). 29 */ 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; 36 37 /* 38 * Now clear the last line. 39 */ 40 wwclreol1(w, line, 0, deleted); 41 } 42