BSD 4_1_snap release
[unix-history] / usr / src / lib / libcurses / insertln.c
index f05aed1..bc453ca 100644 (file)
@@ -4,7 +4,7 @@
  *     This routine performs an insert-line on the window, leaving
  * (_cury,_curx) unchanged.
  *
  *     This routine performs an insert-line on the window, leaving
  * (_cury,_curx) unchanged.
  *
- * %G% (Berkeley) @(#)insertln.c       1.1
+ * 4/17/81 (Berkeley) @(#)insertln.c   1.4
  */
 winsertln(win)
 reg WINDOW     *win; {
  */
 winsertln(win)
 reg WINDOW     *win; {
@@ -13,7 +13,7 @@ reg WINDOW    *win; {
        reg int         y;
        reg char        *end;
 
        reg int         y;
        reg char        *end;
 
-       temp = win->_y[win->_cury];
+       temp = win->_y[win->_maxy-1];
        win->_firstch[win->_cury] = 0;
        win->_lastch[win->_cury] = win->_maxx - 1;
        for (y = win->_maxy - 1; y > win->_cury; --y) {
        win->_firstch[win->_cury] = 0;
        win->_lastch[win->_cury] = win->_maxx - 1;
        for (y = win->_maxy - 1; y > win->_cury; --y) {
@@ -23,5 +23,14 @@ reg WINDOW   *win; {
        }
        for (end = &temp[win->_maxx]; temp < end; )
                *temp++ = ' ';
        }
        for (end = &temp[win->_maxx]; temp < end; )
                *temp++ = ' ';
+       win->_y[win->_cury] = temp - win->_maxx;
+       if (win->_cury == LINES - 1 && win->_y[LINES-1][COLS-1] != ' ')
+               if (win->_scroll) {
+                       wrefresh(win);
+                       scroll(win);
+                       win->_cury--;
+               }
+               else
+                       return ERR;
        return OK;
 }
        return OK;
 }