Commit | Line | Data |
---|---|---|
a4c3355c | 1 | #ifndef lint |
14f251df | 2 | static char *sccsid = "@(#)wwdelline.c 3.2 83/08/11"; |
a4c3355c EW |
3 | #endif |
4 | ||
5 | #include "ww.h" | |
6 | ||
7 | wwdelline(w, line) | |
8 | register struct ww *w; | |
9 | int 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; | |
a4c3355c EW |
16 | |
17 | /* | |
14f251df | 18 | * Scroll first. |
a4c3355c | 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 | ||
a4c3355c | 26 | /* |
14f251df EW |
27 | * Fix the buffer. |
28 | * But leave clearing the last line for wwclreol(). | |
a4c3355c | 29 | */ |
14f251df EW |
30 | cpp = &w->ww_buf[line]; |
31 | cqq = cpp + 1; | |
32 | tmp = *cpp; | |
33 | for (i = w->ww_nline - line - 1; --i >= 0;) | |
34 | *cpp++ = *cqq++; | |
35 | *cpp = tmp; | |
a4c3355c | 36 | |
a4c3355c | 37 | /* |
14f251df | 38 | * Now clear the last line. |
a4c3355c | 39 | */ |
14f251df | 40 | wwclreol1(w, w->ww_nline - 1, 0, deleted); |
a4c3355c | 41 | } |